Intel kompilatorer. Hvorfor var det nødvendig med nye kompilatorer?
Intel C++ og Fortran-kompilatorer og MKL-bibliotek
Sammen med standard GNU-kompilatorer for Linux, er Intel C++ og Fortran-kompilatorer installert på klyngene til NIVC-databehandlingskomplekset. For øyeblikket (begynnelsen av 2006) er kompilatorer versjon 9.1 installert på alle klynger. Denne siden er dedikert til å beskrive de viktigste alternativene og innstillingene til disse kompilatorene, samt deres viktigste forskjeller fra GNU-kompilatorene. Siden er hovedsakelig rettet mot brukere av MSU Research Computing Center-klynger, men kan også være nyttig for andre russisktalende brukere. Problemer knyttet til kompilering for IA-64-plattformen behandles ikke her.
Intel-biblioteket er også installert på alle klynger Kernel Math Library(MKL) versjon 8.0.2. Biblioteket ligger i katalogen /usr/mkl. Vær oppmerksom på at underkatalogene 32, 64 og em64t er tilgjengelige i lib-katalogen. På Ant-klyngen må du bruke bibliotekene fra underkatalogen em64t, og på andre klynger - fra underkatalogen 32. All nødvendig dokumentasjon og eksempler kan hentes fra katalogen /usr/mkl/doc.
Hvorfor var det nødvendig med nye kompilatorer?
Behovet for nye kompilatorer oppsto hovedsakelig for å a) støtte programmering i Fortran 90, og også b) for kraftigere optimalisering av Fortran-programmer enn det som er gitt av g77-kompilatoren, som bruker oversettelse til C og deretter kompilering ved hjelp av gcc.
PGI (Portland Group) kompilatorer oppfyller også disse kravene, men utviklerselskapet nektet å levere dem til Russland.
Hvordan å bruke?
Intel-kompilatorer påkalles ved hjelp av kommandoer icc(C eller C++), icpc(C++) og ifort(Fortran 77/90). Kommandoene mpicc, mpiCC og mpif77 for kompilering og sammenstilling av MPI-programmer er også konfigurert til å bruke Intel-kompilatorer.
Det er også mulig å bruke GNU-kompilatorer ved å bruke kommandoene mpigcc, mpig++ og mpig77 (Fortran 90 støttes ikke).
Inndatafiler
Som standard, filer med utvidelsen .cpp Og .cxx regnes som kildetekster på C++-språket, filer med filtypen .c- C-kildekode, og icpc-kompilatoren kompilerer også .c-filer som C++-kildekode.
Filer med utvidelser .f, .ftn Og .til gjenkjennes som kildetekster på Fotran-språket, med en fast form for notasjon, og filene .fpp Og .F i tillegg gått gjennom Fortran-språkforbehandleren. Filer med utvidelsen .f90 anses Fortran 90/95 kildetekster med fri form notasjon. Du kan eksplisitt spesifisere en fast eller fri form for notasjon for Fortran-programmer ved å bruke alternativene -FI Og -FR hhv.
Filer med utvidelsen .s anerkjent som monteringsspråkkode for IA-32.
Intel-kompilatorfunksjoner
Her presenterer vi egenskapene til Intel-kompilatorer som angitt av utvikleren i brukermanualen med noen av våre kommentarer.
- Betydelig optimalisering
Tilsynelatende betyr dette å optimalisere koden på et høyt nivå, dvs. først og fremst ulike loop-transformasjoner, som nesten alle kompilatorer gjør med større eller mindre suksess - Flytepunktoptimalisering
Tilsynelatende betyr dette først og fremst maksimal bruk av kommandoer implementert på maskinvarenivå - Interprosessuelle optimaliseringer
de. global optimalisering av hele programmet, i motsetning til vanlig optimalisering, som kun påvirker koden til spesifikke funksjoner - Profilbasert optimalisering
de. muligheten til å kjøre et program i testmodus, samle inn data om tiden det tar å sende visse kodefragmenter i ofte brukte funksjoner, og deretter bruke disse dataene for optimalisering - Støtte for SSE-instruksjonssettet i Pentium III-prosessorer
merk: for databehandlingsoppgaver er SSE2-kommandoer av mer interesse, dvs. vektorkommandoer over 64-bits reelle tall, men de støttes kun på Pentium 4-prosessorer, som vi ikke har til rådighet ennå - Automatisk vektorisering
de. igjen, ved å bruke SSE- og SSE2-kommandoene, satt inn automatisk av kompilatoren - OpenMP-støtte for programmering på SMP-systemer
merk: på en klynge anbefales det å primært bruke MPI-grensesnittet; utbredt bruk av OpenMP på klyngen forventes ikke, og slike eksperimenter har ennå ikke blitt utført; men det er sannsynligvis fornuftig å bruke biblioteker (BLAS, etc.) som er parallellisert for delt minne. - Forhåndshenting av data
de. Tilsynelatende bruk av forhåndsinnlastningskommandoer fra minnet til databufferen, som vil være nødvendig etter en stund - "Dispatching"-kode for forskjellige prosessorer
de. muligheten til å generere kode for forskjellige prosessorer i en enkelt kjørbar fil, som lar deg dra nytte av de nyeste prosessorene for å oppnå den høyeste ytelsen på dem, samtidig som binær kompatibilitet av programmer med tidligere prosessorer opprettholdes; På vår klynge er ikke dette aktuelt ennå, pga bare Pentium III-prosessorer brukes, og programmer kompilert på klyngen skal ikke overføres og kjøres på andre maskiner
Grunnleggende kompilatoralternativer
Det mest interessante er selvfølgelig alternativene for kodeoptimalisering. De fleste alternativene er felles for C++- og Fortran-kompilatorene. Mer Detaljert beskrivelse alternativer i engelske brukerhåndbøker.
Optimaliseringsnivåer | |
---|---|
Alternativ | Beskrivelse |
-O0 | Deaktiverer optimalisering |
-O1 eller -O2 | Grunnleggende optimalisering for hastighet. Innebygd innsetting av bibliotekfunksjoner er deaktivert. For C++-kompilatoren gir disse alternativene den samme optimaliseringen; for Fortran-kompilatoren er -O2-alternativet å foretrekke, fordi inkluderer også sykluspromotering. |
-O3 | Kraftigere optimaliseringer, inkludert sløyfetransformasjoner, forhåndshenting av data og bruk av OpenMP. Noen programmer garanterer kanskje ikke forbedret ytelse sammenlignet med -O2. Det er fornuftig å bruke i forbindelse med vektoriseringsalternativer -xK Og -xB. |
-avrull[n] | Muliggjør sløyfeavvikling opptil n ganger. |
Optimaliseringer for en bestemt prosessor | |
Alternativ | Beskrivelse |
-tpp6 | Optimalisering for Penitum Pro-, Pentium II- og Pentium III-prosessorer |
-tpp7 | Optimalisering for Penitum 4-prosessorer (dette alternativet er aktivert som standard for IA-32-kompilatoren) |
-xM | Kodegenerering ved hjelp av MMX-utvidelser som er spesifikke for Pentium MMX, Pentium II og senere prosessorer |
-xK | Kodegenerering ved hjelp av SSE-utvidelser som er spesifikke for Pentium III-prosessorer |
-xB | Kodegenerering ved hjelp av SSE2-utvidelser spesifikke for Pentium 4-prosessorer |
Interprosessuell optimalisering | |
-ip | Interprosedyreoptimalisering er aktivert i én fil. Hvis du spesifiserer alternativet -ip_no_inlining, så er innebygde funksjonsinnsettinger deaktivert. |
-ipo | Muliggjør interprosedyreoptimalisering mellom forskjellige filer |
Optimaliseringer ved hjelp av profiler | |
-prof_gen | Det genereres en "profileringskode" som skal brukes til profilering, dvs. samle inn data om hyppigheten av å passere visse steder i programmet |
-prof_use | Optimalisering utføres basert på data innhentet under profileringsfasen. Det er fornuftig å bruke det sammen med alternativet for interprosedyreoptimalisering -ipo. |
Parallellisering for SMP-systemer | |
-åpenmp | Aktiverer støtte for OpenMP 2.0-standarden |
-parallell | Automatisk sløyfeparallellisering er aktivert |
Opptreden
I følge resultatene av å kjøre SPEC CPU2000-testene, publisert på ixbt.com-serveren, var Intel-kompilatorer versjon 6.0 nesten universelt bedre sammenlignet med gcc-kompilatorer versjoner 2.95.3, 2.96 og 3.1, og PGI versjon 4.0.2. Disse testene ble utført i 2002 på en datamaskin med en Pentium 4/1,7 GHz prosessor og RedHat Linux 7.3.
I følge tester utført av Polyhedron var Intel Fortran-kompilatorversjon 7.0 nesten universelt overlegen andre Fortran 77-kompilatorer for Linux (Absoft, GNU, Lahey, NAG, NAS, PGI). Bare i noen tester er Intel-kompilatoren litt dårligere enn Absoft-, NAG- og Lahey-kompilatorene. Disse testene ble utført på en datamaskin med en Pentium 4/1,8 GHz-prosessor og Mandrake Linux 8.1.
Intel-kompilatorer versjon 9.1 overgår også gcc-kompilatorer, og viser ytelse som kan sammenlignes med Absoft, PathScale og PGI.
Vi vil være takknemlige for de brukerne og leserne som sender oss data om innvirkningen av valget av kompilator (GCC eller Intel) og optimaliseringsalternativer på hastigheten på arbeidet med deres virkelige problemer.
Biblioteker
C-språkkompilatoren bruker et kjøretidsbibliotek utviklet i GNU-prosjektet ( libc.a).
Følgende biblioteker leveres med Intel C++-kompilatoren:
- libcprts.a- runtime C++ språkbibliotek utviklet av Dinkumware.
- libcxa.a- ekstra kjøretidsbibliotek for C++-utvikling av Intel.
- libimf.a- et bibliotek med matematiske funksjoner utviklet av Intel, som inkluderer optimaliserte og høypresisjonsimplementeringer av trigonometriske, hyperbolske, eksponentielle, spesielle, komplekse og andre funksjoner (for mer detaljer, se listen over funksjoner).
- libirc.a- Runtime-støtte for profilering (PGO) og kodesending avhengig av prosessoren (se ovenfor).
- libguide.a- OpenMP implementering.
Denne listen inneholder statiske biblioteker, men for de fleste av dem finnes det også dynamiske, dvs. alternativer tilkoblet under oppstart ( .så).
Følgende biblioteker leveres med Fortran-kompilatoren: libCEPCF90.a, libIEPCF90.a, libintrins.a, libF90.a, biblioteket med matematiske funksjoner libimf.a brukes også.
Bygger den kjørbare filen
Biblioteker kan kobles statisk (under bygging) eller dynamisk (under programoppstart). Den dynamiske tilnærmingen lar deg redusere størrelsen på den kjørbare filen og lar deg dele den samme kopien av biblioteket i minnet, men for dette må du installere et komplett sett med dynamiske biblioteker som brukes på hver node der programmene skal kjøres .
Derfor, hvis du installerte Intel-kompilatoren på Linux-maskinen din og ønsker å kjøre de kompilerte kjørbare filene på andre maskiner, må du enten bruke en statisk build (som er enklere) eller kopiere Intels dynamiske biblioteker til disse maskinene (vanligvis fra en katalog som /opt/intel /compiler70/ia32/lib) til en av katalogene som er oppført i filen /etc/ld.so.conf, og sørg også for at det samme settet med GNU/Linux dynamiske biblioteker er installert på disse maskiner.
Som standard er alle Intel-utviklingsbiblioteker (unntatt libcxa.so) koblet statisk, og alle Linux-systembiblioteker og GNU-biblioteker er koblet dynamisk. Bruker alternativet -statisk du kan tvinge samleren (lenkeredigering) til å koble alle biblioteker statisk (noe som vil øke volumet kjørbar fil), og bruke alternativet -i_dynamic Du kan dynamisk koble alle Intels utviklingsbiblioteker.
Når du kobler til flere biblioteker ved å bruke visningsalternativet -bibliotek kan det hende du må bruke alternativet -Lkatalog for å angi banen der bibliotekene er plassert.
Bruker alternativer -Bstatisk Og -Bdynamic du kan eksplisitt spesifisere dynamisk eller statisk tilkobling for hvert av bibliotekene spesifisert i kommandolinje.
Bruker alternativet -c montering av den kjørbare filen er deaktivert og kun kompilering utføres (generering av objektmodul).
Dele moduler i Fortran og C
For å dele moduler skrevet i Fortran og C, må du bli enige om navngivning av prosedyrer i objektmoduler, overføring av parametere og tilgang til globale variabler, hvis noen.
Som standard konverterer Intel Fortran-kompilatoren prosedyrenavn til små bokstaver og legger til en understreking på slutten av navnet. C-kompilatoren endrer aldri funksjonsnavn. Derfor, hvis vi ønsker å kalle en funksjon eller prosedyre FNNAME implementert i C fra en Fortran-modul, bør den i C-modulen hete fnname_.
Fortran-kompilatoren støtter alternativet -nus [filnavn], som lar deg deaktivere tillegg av understreking til interne prosedyrenavn. Hvis et filnavn er spesifisert, gjøres dette kun for prosedyrenavn som er oppført i den angitte filen.
Som standard sendes parametere i Fortran ved referanse, og i C sendes de alltid etter verdi. Når vi kaller en Fortran-prosedyre fra en C-modul, må vi derfor sende pekere til de tilsvarende variablene som inneholder verdiene til de faktiske parameterne som parametere. Når du skriver en funksjon i C som må kalles fra en Fortran-modul, må vi beskrive de formelle parameterne som pekere til de tilsvarende typene.
I C-moduler er det mulig å bruke COMMON-blokker definert inne i Fortran-moduler (for mer informasjon, se Intel Fortran Compiler User's Guide, kapittel Blanding av C og Fortran).
Deler Intel- og GCC-kompilatorer
C-objektmoduler produsert av Intel C++-kompilatoren er kompatible med moduler produsert av GCC-kompilatoren og GNU C-biblioteket. Dermed kan disse modulene brukes sammen i et enkelt program kompilert ved hjelp av icc- eller gcc-kommandoene, men det anbefales å bruke icc for å inkludere Intel-biblioteker korrekt.
Intel-kompilatoren støtter en rekke ikke-standardiserte C-språkutvidelser som brukes av GNU-prosjektet og støttes av GCC-kompilatoren (men ikke alle, se her for flere detaljer).
Brukerhåndboken sier ikke noe om kompatibiliteten til objektmoduler i C++- og Fortran-språkene; tilsynelatende støttes den ikke.
Støtte for standarder
Intel C++ Compiler 7.0 for Linux støtter ANSI/ISO C-språkstandarden (ISO/IEC 9899/1990). Det er mulig å etablere streng kompatibilitet med ANSI C-standarden ( -ansi) eller utvidet ANSI C-dialekt ( -Xa). Når du bruker alternativet -c99
I forrige utgave av magasinet diskuterte vi produkter fra Intel VTune Performance Analyzer-familien - ytelsesanalyseverktøy som er fortjent populære blant applikasjonsutviklere og tillater deteksjon i kode teamsøknader, som kaster bort for mye CPU-ressurser, noe som gir utviklere muligheten til å identifisere og eliminere potensial trange steder, assosiert med lignende seksjoner av kode, og dermed fremskynde applikasjonsutviklingsprosessen. Vær imidlertid oppmerksom på at ytelsen til applikasjoner i stor grad avhenger av hvor effektive kompilatorene som brukes i utviklingen deres er, og hvilke funksjoner maskinvare de brukes ved generering av maskinkode.
De nyeste versjonene av Intel Intel C++ og Intel Fortran-kompilatorene for Windows og Linux lar deg oppnå ytelsesfordeler for applikasjoner for systemer basert på Intel-prosessorer Itanium 2, Intel Xeon og Intel Pentium 4 opptil 40 % sammenlignet med eksisterende kompilatorer fra andre produsenter på grunn av bruken av slike funksjoner til disse prosessorene som Hyper-Threading-teknologi.
Forskjeller knyttet til kodeoptimalisering av denne familien av kompilatorer inkluderer bruk av en stabel for å utføre flyttalloperasjoner, interprosedyreoptimalisering (IPO), optimalisering i samsvar med applikasjonsprofilen (Profile Guided Optimization (PGO), forhåndslaste data inn i hurtigbufferen ( Dataforhåndshenting), som unngår ventetid knyttet til minnetilgang, støtte for de karakteristiske egenskapene til Intel-prosessorer (for eksempel utvidelser for streaming databehandling Intel Streaming SIMD Extensions 2, karakteristisk for Intel Pentium 4), automatisk parallellisering av kodeutførelse, applikasjon opprettelse, kjører på flere forskjellige typer prosessorer når du optimaliserer for en av dem, verktøy for å "forutsi" påfølgende kode (grenprediksjon), utvidet støtte for å jobbe med utførelsestråder.
Merk at Intel-kompilatorer brukes i så velkjente selskaper som Alias/Wavefront, Oracle, Fujitsu Siemens, ABAQUS, Silicon Graphics, IBM. I følge uavhengige tester utført av en rekke selskaper, er ytelsen til Intel-kompilatorer betydelig høyere enn ytelsen til kompilatorer fra andre produsenter (se for eksempel http://intel.com/software/products/compilers/techtopics/compiler_gnu_perf .pdf).
Nedenfor skal vi se på noen funksjoner siste versjoner Intel-kompilatorer for skrivebord og server operativsystemer.
Kompilatorer for Microsoft Windows-plattformen
Intel C++ Compiler 7.1 for Windows
Intel C++ Compiler 7.1 er en kompilator utgitt tidligere i år som gir svært optimalisert kode for Intel Itanium-, Intel Itanium 2-, Intel Pentium 4- og Intel Xeon-prosessorene, samt Intel Pentium M-prosessoren som bruker Intel Centrino-teknologi og beregnet for bruk i mobile enheter.
Den angitte kompilatoren er fullt kompatibel med utviklingsverktøyene Microsoft Visual C++ 6.0 og Microsoft Visual Studio .NET: den kan bygges inn i de tilsvarende utviklingsmiljøene.
Denne kompilatoren støtter ANSI og ISO C/C++ standarder.
Intel Fortran Compiler 7.1 for Windows
Intel Fortran Compiler 7.1 for Windows, også utgitt tidligere i år, lar deg lage optimalisert kode for Intel Itanium, Intel Itanium 2, Intel Pentium 4 og Intel Xeon, Intel Pentium M-prosessorer.
Denne kompilatoren er fullt kompatibel med Microsoft Visual C++ 6.0 og Microsoft Visual Studio .NET utviklingsverktøy, det vil si at den kan bygges inn i de tilsvarende utviklingsmiljøene. I tillegg lar denne kompilatoren deg utvikle 64-bits applikasjoner for operativsystemer som kjører på Itanium/Itanium 2-prosessorer ved å bruke Microsoft Visual Studio på en 32-bits Pentium-prosessor ved å bruke 64-bit Intel Fortran Compiler. Når du feilsøker kode, lar denne kompilatoren deg bruke en debugger for å Microsoft-plattformer.NETT.
Hvis du har Compaq-produktet installert, kan Visual Fortran 6.6 brukes i stedet for den originale Intel Fortran Compiler 7.1, siden disse kompilatorene er kompatible på nivået kildekode.
Intel Fortran Compiler 7.1 for Windows er fullt kompatibel med ISO Fortran 95-standarden og støtter oppretting og feilsøking av programmer som inneholder kode på to språk: C og Fortran.
Kompilatorer for Linux-plattformen
Intel C++ Compiler 7.1 for Linux
En annen kompilator som ble utgitt i begynnelsen av året, Intel C++ Compiler 7.1 for Linux, lar deg oppnå en høy grad av kodeoptimalisering for prosessorene Intel Itanium, Intel Itanium 2, Intel Pentium 4, Intel Pentium M. Denne kompilatoren er fullstendig kompatibel med GNU C-kompilatoren ved kildekode- og objektmodulene, som lar deg migrere applikasjoner opprettet med GNU C til den uten ekstra kostnader. Intel C++-kompilatoren støtter C++ ABI (et tillegg til Linux-kjernen som lar deg kjøre under Linux-kontroll kompilert kode for andre plattformer som tidlige SCO-operativsystemer, tidlige versjoner Sun Solaris, etc.), som betyr full kompatibilitet med gcc 3.2-kompilatoren på binærkodenivå. Til slutt, med Intel C++ Compiler 7.1 for Linux, kan du til og med rekompilere Linux-kjernen ved å gjøre noen få mindre endringer i kildekoden.
Intel Fortran Compiler 7.1 for Linux
Intel Fortran Compiler 7.1 for Linux lar deg lage optimalisert kode for prosessorene Intel Itanium, Intel Itanium 2, Intel Pentium 4, Intel Pentium M. Denne kompilatoren er fullt kompatibel med Compaq Visual Fortran 6.6-kompilatoren på kildekodenivå, slik at du å rekompilere applikasjoner ved å bruke den opprettet med Compaq Visual Fortran, og dermed øke ytelsen.
I tillegg er den spesifiserte kompilatoren kompatibel med slike verktøy som brukes av utviklere som emacs-editoren, gdb-debuggeren og verktøyet make application build.
I likhet med Windows-versjonen av denne kompilatoren, er Intel Fortran Compiler 7.1 for Linux fullt kompatibel med ISO Fortran 95-standarden og støtter oppretting og feilsøking av programmer som inneholder kode på to språk: C og Fortran.
Det bør spesielt understrekes at et betydelig bidrag til opprettelsen av de listede Intel-kompilatorene ble gitt av spesialister fra Intel Russian Software Development Center i Nizhny Novgorod. Mer detaljert informasjon Informasjon om Intel-kompilatorer finnes på Intels nettsted på www.intel.com/software/products/.
Den andre delen av denne artikkelen vil bli viet til Intel-kompilatorer som lager applikasjoner for mobile enheter.
Du er ikke en slave!
Lukket utdanningskurs for barn av eliten: "Verdens sanne ordning."
http://noslave.org
Materiale fra Wikipedia - det frie leksikonet
Lua-feil i Module:Wikidata på linje 170: forsøk på å indeksere feltet "wikibase" (en null-verdi). | ||||||||||||||||||||||||||||||||||||
Type | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Forfatter |
Lua-feil i Module:Wikidata på linje 170: forsøk på å indeksere feltet "wikibase" (en null-verdi). |
|||||||||||||||||||||||||||||||||||
Utvikler | ||||||||||||||||||||||||||||||||||||
Utviklere |
Lua-feil i Module:Wikidata på linje 170: forsøk på å indeksere feltet "wikibase" (en null-verdi). |
|||||||||||||||||||||||||||||||||||
Skrevet på |
Lua-feil i Module:Wikidata på linje 170: forsøk på å indeksere feltet "wikibase" (en null-verdi). |
|||||||||||||||||||||||||||||||||||
Grensesnitt |
Lua-feil i Module:Wikidata på linje 170: forsøk på å indeksere feltet "wikibase" (en null-verdi). |
|||||||||||||||||||||||||||||||||||
operativsystem | ||||||||||||||||||||||||||||||||||||
Grensesnittspråk |
Lua-feil i Module:Wikidata på linje 170: forsøk på å indeksere feltet "wikibase" (en null-verdi). |
|||||||||||||||||||||||||||||||||||
Første utgave |
Lua-feil i Module:Wikidata på linje 170: forsøk på å indeksere feltet "wikibase" (en null-verdi). |
|||||||||||||||||||||||||||||||||||
Maskinvareplattform | ||||||||||||||||||||||||||||||||||||
Siste versjon | ||||||||||||||||||||||||||||||||||||
Utgivelseskandidat |
Lua-feil i Module:Wikidata på linje 170: forsøk på å indeksere feltet "wikibase" (en null-verdi). |
|||||||||||||||||||||||||||||||||||
Beta versjon |
Lua-feil i Module:Wikidata på linje 170: forsøk på å indeksere feltet "wikibase" (en null-verdi). |
|||||||||||||||||||||||||||||||||||
Alfa-versjon |
Lua-feil i Module:Wikidata på linje 170: forsøk på å indeksere feltet "wikibase" (en null-verdi). |
|||||||||||||||||||||||||||||||||||
Testversjon |
Lua-feil i Module:Wikidata på linje 170: forsøk på å indeksere feltet "wikibase" (en null-verdi). |
|||||||||||||||||||||||||||||||||||
Lesbare filformater |
Lua-feil i Module:Wikidata på linje 170: forsøk på å indeksere feltet "wikibase" (en null-verdi). |
|||||||||||||||||||||||||||||||||||
Genererte filformater |
Lua-feil i Module:Wikidata på linje 170: forsøk på å indeksere feltet "wikibase" (en null-verdi). |
|||||||||||||||||||||||||||||||||||
Stat |
Lua-feil i Module:Wikidata på linje 170: forsøk på å indeksere feltet "wikibase" (en null-verdi). |
|||||||||||||||||||||||||||||||||||
Tillatelse |
Hovedtrekkene:
Kompilatoren støtter OpenMP 3.0-standarden for å skrive parallelle programmer. Inneholder også en modifikasjon av OpenMP kalt Cluster OpenMP, som du kan kjøre applikasjoner skrevet i samsvar med OpenMP på klynger med MPI. Intel C++ Compiler bruker frontend (den delen av kompilatoren som analyserer det kompilerte programmet) fra Edison Design Group. Den samme grensesnittet brukes av kompilatorene SGI MIPSpro, Comeau C++ og Portland Group. Denne kompilatoren er mye brukt for å kompilere SPEC CPU-benchmarks. Det er 4 serier med produkter fra Intel som inneholder kompilatoren:
Ulempene med Linux-versjonen av kompilatoren inkluderer delvis inkompatibilitet med GNU-utvidelser av C-språket (støttet av GCC-kompilatoren), som kan forårsake problemer ved kompilering av noen programmer.
Eksperimentelle alternativerFølgende eksperimentelle versjoner av kompilatoren ble publisert:
Grunnleggende flagg
Skriv en anmeldelse om artikkelen "Intel C++ compiler"Notaterse ogsåLinker
Et utdrag som karakteriserer Intel C++-kompilatorenOg også, hun kom tilbake for å se den hvite magus for siste gang... Hennes ektemann og ekte venn, som hun aldri kunne glemme. I sitt hjerte tilga hun ham. Men til hans store beklagelse kunne hun ikke gi ham Magdalenas tilgivelse... Så, som du ser, Isidora, er den store kristne fabelen om "tilgivelse" bare en barnslig løgn for naive troende, for å tillate dem å gjøre noe ondt, vel vitende om at uansett hva de gjør, vil de til slutt bli tilgitt. Men du kan bare tilgi det som virkelig er verdig tilgivelse. En person må forstå at han må svare for ethvert ondt begått... Og ikke overfor en mystisk Gud, men overfor seg selv, som tvinger seg selv til å lide grusomt. Magdalena tilga ikke Vladyka, selv om hun respekterte ham dypt og oppriktig elsket ham. Akkurat som hun ikke klarte å tilgi oss alle for Radomirs forferdelige død. HUN forsto tross alt bedre enn noen andre - vi kunne ha hjulpet ham, vi kunne ha reddet ham fra en grusom død... Men vi ville ikke. Da hun vurderte den hvite magus' skyldfølelse for å være for grusom, lot hun ham leve med denne skyldfølelsen, uten å glemme den et øyeblikk... Hun ønsket ikke å gi ham lett tilgivelse. Vi så henne aldri igjen. Akkurat som de aldri så babyene sine. Gjennom en av ridderne av hennes tempel - vår trollmann - formidlet Magdalene svaret til Vladykaen på hans forespørsel om å vende tilbake til oss: "Solen går ikke opp to ganger på samme dag ... Gleden over din verden (Radomir) vil aldri vende tilbake til deg, akkurat som jeg ikke kommer tilbake til deg og jeg... Jeg fant min TRO og min SANNHET, de er LEVENDE, men dine er DØD... Sørg for dine sønner - de elsket deg. Jeg vil aldri tilgi deg deres død mens jeg lever. Og må din skyld forbli med deg. Kanskje hun en dag vil gi deg lys og tilgivelse... Men ikke fra meg.» Hodet til Magus John ble ikke brakt til Meteora av samme grunn - ingen av tempelridderne ønsket å returnere til oss... Vi mistet dem, siden vi har mistet mange andre mer enn en gang, som ikke ønsket å forstå og akseptere våre ofre... Hvem gjorde akkurat som deg - de dro og fordømte oss.Hodet mitt snurret!.. Som en tørst person, som slukket min evige hunger etter kunnskap, absorberte jeg grådig strømmen av fantastisk informasjon generøst gitt av Norden... Og jeg ville ha mye mer!.. Jeg ville vite alt for å slutten. Det var et friskt vann i en ørken svidd av smerte og problemer! Og jeg kunne ikke få nok av det... – Jeg har tusenvis av spørsmål! Men det er ikke tid igjen... Hva skal jeg gjøre, Nord?.. - Spør, Isidora!.. Spør, jeg skal prøve å svare deg... – Si meg, Sever, hvorfor virker det for meg at denne historien ser ut til å kombinere to livshistorier, sammenvevd med lignende hendelser, og de presenteres som livet til én person? Eller har jeg ikke rett? – Du har helt rett, Isidora. Som jeg fortalte deg tidligere, «satte» «denne verdens krefter», som skapte menneskehetens falske historie, på Kristi sanne liv det fremmede livet til den jødiske profeten Josva, som levde for halvannet tusen år siden ( fra tiden for historien om nord). Og ikke bare seg selv, men også hans familie, hans slektninger og venner, hans venner og følgere. Tross alt var det kona til profeten Josva, den jødiske Maria, som hadde en søster Marta og en bror Lasarus, søsteren til hans mor Maria Yakobe, og andre som aldri var i nærheten av Radomir og Magdalena. Akkurat som det ikke var andre "apostler" ved siden av dem - Paulus, Matteus, Peter, Lukas og resten... Det var familien til profeten Joshua som flyttet for halvannet tusen år siden til Provence (som på den tiden ble kalt Transalpine Gallia), til den greske byen Massalia (dagens Marseille), siden Massalia på den tiden var "porten" mellom Europa og Asia, og det var den enkleste måten for alle de "forfulgte" for å unngå forfølgelse og problemer.
|