Compilatoare Intel. De ce au fost necesare compilatoare noi?
Compilatoare Intel C++ și Fortran și biblioteca MKL
Împreună cu compilatoarele standard GNU pentru Linux, compilatoarele Intel C++ și Fortran sunt instalate pe clusterele complexului de calcul NIVC. În prezent (începutul anului 2006), compilatoarele versiunea 9.1 sunt instalate pe toate clusterele. Această pagină este dedicată descrierii celor mai importante opțiuni și setări ale acestor compilatoare, precum și principalele diferențe ale acestora față de compilatoarele GNU. Pagina se adresează în principal utilizatorilor clusterelor MSU Research Computing Center, dar poate fi utilă și altor utilizatori vorbitori de limbă rusă. Problemele legate de compilarea pentru platforma IA-64 nu sunt abordate aici.
De asemenea, biblioteca Intel este instalată pe toate clusterele Biblioteca de matematică Kernel(MKL) versiunea 8.0.2. Biblioteca se află în directorul /usr/mkl. Vă rugăm să rețineți că subdirectoarele 32, 64 și em64t sunt disponibile în directorul lib. Pe clusterul Ant trebuie să utilizați bibliotecile din subdirectorul em64t, iar pe alte clustere - din subdirectorul 32. Toată documentația și exemplele necesare pot fi obținute din directorul /usr/mkl/doc.
De ce au fost necesare compilatoare noi?
Nevoia de compilatoare noi a apărut în principal pentru a) să susțină programarea în Fortran 90 și, de asemenea, b) pentru o optimizare mai puternică a programelor Fortran decât este oferită de compilatorul g77, care folosește traducerea în C și apoi compilarea folosind gcc.
Compilatoarele PGI (Portland Group) îndeplinesc și aceste cerințe, dar compania de dezvoltare a refuzat să le furnizeze Rusiei.
Cum se utilizează?
Compilatoarele Intel sunt invocate folosind comenzi icc(C sau C++), icpc(C++) și ifort(Fortran 77/90). Comenzile mpicc, mpiCC și mpif77 pentru compilarea și asamblarea programelor MPI sunt, de asemenea, configurate pentru a utiliza compilatoare Intel.
De asemenea, este posibil să utilizați compilatoare GNU folosind comenzile mpigcc, mpig++ și mpig77 (Fortran 90 nu este acceptat).
Fișiere de intrare
În mod implicit, fișierele cu extensia .cppȘi .cxx sunt considerate texte sursă în limbajul C++, fișiere cu extensia .c- Cod sursă C, iar compilatorul icpc compilează și fișiere .c ca cod sursă C++.
Fișiere cu extensii .f, .ftnȘi .pentru sunt recunoscute ca texte sursă în limba Fotran, cu o formă fixă de notație, și fișierele .fppȘi .F a trecut în plus prin preprocesorul limbajului Fortran. Fișiere cu extensia .f90 sunt considerate texte sursă Fortran 90/95 cu notație în formă liberă. Puteți specifica în mod explicit o formă fixă sau liberă de notație pentru programele Fortran folosind opțiunile -FIȘi -FR respectiv.
Fișiere cu extensia .s recunoscut ca cod de limbaj de asamblare pentru IA-32.
Caracteristici ale compilatorului Intel
Aici vă prezentăm caracteristicile compilatoarelor Intel, așa cum sunt menționate de dezvoltator în manualul de utilizare, cu câteva dintre comentariile noastre.
- Optimizare semnificativă
Aparent, asta înseamnă optimizarea codului la un nivel înalt, adică. în primul rând, diverse transformări de buclă, pe care aproape toți compilatoarele le fac cu mai mult sau mai puțin succes - Optimizare în virgulă mobilă
Aparent, asta înseamnă, în primul rând, utilizarea maximă a comenzilor implementate la nivel hardware - Optimizări interprocedurale
acestea. optimizarea globală a întregului program, spre deosebire de optimizarea obișnuită, care afectează doar codul funcțiilor specifice - Optimizare bazată pe profil
acestea. capacitatea de a rula un program în modul de testare, de a colecta date despre timpul necesar pentru a trece anumite fragmente de cod în cadrul funcțiilor utilizate frecvent și apoi de a utiliza aceste date pentru optimizare - Suport pentru setul de instrucțiuni SSE în procesoarele Pentium III
notă: pentru sarcinile de calcul, comenzile SSE2 prezintă un interes mai mare, adică. comenzi vectoriale peste numere reale pe 64 de biți, dar sunt acceptate doar pe procesoarele Pentium 4, pe care nu le avem încă la dispoziție - Vectorizare automată
acestea. din nou, folosind comenzile SSE și SSE2, introduse automat de compilator - Suport OpenMP pentru programare pe sisteme SMP
notă: pe un cluster se recomandă utilizarea în primul rând a interfeței MPI; utilizarea pe scară largă a OpenMP pe cluster nu este de așteptat și astfel de experimente nu au fost încă efectuate; dar probabil că are sens să folosești biblioteci (BLAS, etc.) care sunt paralelizate pentru memoria partajată. - Preîncărcarea datelor
acestea. Aparent, utilizarea comenzilor de preîncărcare din memorie în memoria cache de date, care va fi necesară după ceva timp - Cod „Dispatching” pentru diferite procesoare
acestea. capacitatea de a genera cod pentru diferite procesoare într-un singur fișier executabil, ceea ce vă permite să profitați de acesta cele mai noi procesoare pentru a obține cele mai înalte performanțe pe acestea, menținând în același timp compatibilitatea binară a programelor cu procesoarele anterioare; Pe clusterul nostru acest lucru nu este încă relevant, deoarece sunt folosite doar procesoare Pentium III, iar programele compilate pe cluster nu trebuie să fie transferate și rulate pe alte mașini
Opțiuni de bază ale compilatorului
Cele mai interesante, desigur, sunt opțiunile de optimizare a codului. Majoritatea opțiunilor sunt comune pentru compilatoarele C++ și Fortran. Mai mult descriere detaliata opțiunile din manualele de utilizare în limba engleză.
Niveluri de optimizare | |
---|---|
Opțiune | Descriere |
-O0 | Dezactivează optimizarea |
-O1 sau -O2 | Optimizare de bază pentru viteză. Inserarea în linie a funcțiilor bibliotecii este dezactivată. Pentru compilatorul C++, aceste opțiuni oferă aceeași optimizare; pentru compilatorul Fortran, opțiunea -O2 este de preferat, deoarece include și promovarea ciclului. |
-O3 | Optimizări mai puternice, inclusiv transformări în buclă, preîncărcarea datelor și utilizarea OpenMP. Este posibil ca unele programe să nu garanteze o performanță îmbunătățită în comparație cu -O2. Are sens să fie utilizat împreună cu opțiunile de vectorizare -xKȘi -xW. |
-unroll[n] | Permite derularea buclei de până la n ori. |
Optimizări pentru un anumit procesor | |
Opțiune | Descriere |
-tpp6 | Optimizare pentru procesoare Penitum Pro, Pentium II și Pentium III |
-tpp7 | Optimizare pentru procesoare Penitum 4 (această opțiune este activată implicit pentru compilatorul IA-32) |
-xM | Generarea codului folosind extensii MMX specifice procesoarelor Pentium MMX, Pentium II și ulterioare |
-xK | Generarea codului folosind extensii SSE specifice procesoarelor Pentium III |
-xW | Generarea codului folosind extensii SSE2 specifice procesoarelor Pentium 4 |
Optimizare interprocedurală | |
-ip | Optimizarea interprocedurală este activată într-un singur fișier. Dacă specificați opțiunea -ip_no_inlining, atunci inserările de funcții inline sunt dezactivate. |
-ipo | Permite optimizarea interprocedurală între diferite fișiere |
Optimizări folosind profile | |
-prof_gen | Se generează un cod de „profilare” care va fi folosit pentru profilare, adică. culegerea de date cu privire la frecvenţa de trecere a anumitor locuri din program |
-prof_use | Optimizarea se realizează pe baza datelor obținute în etapa de profilare. Este logic să îl utilizați împreună cu opțiunea de optimizare interprocedurală -ipo. |
Paralelizare pentru sisteme SMP | |
-openmp | Activează suportul pentru standardul OpenMP 2.0 |
-paralel | Paralelizarea automată a buclei este activată |
Performanţă
Conform rezultatelor rulării testelor SPEC CPU2000, publicate pe serverul ixbt.com, compilatoarele Intel versiunea 6.0 au fost aproape universal mai bune în comparație cu versiunile compilatoarelor gcc 2.95.3, 2.96 și 3.1 și versiunea PGI 4.0.2. Aceste teste au fost efectuate în 2002 pe un computer cu procesor Pentium 4/1,7 GHz și RedHat Linux 7.3.
Conform testelor efectuate de Polyhedron, versiunea 7.0 a compilatorului Intel Fortran a fost aproape universal superioară altor compilatoare Fortran 77 pentru Linux (Absoft, GNU, Lahey, NAG, NAS, PGI). Doar în unele teste, compilatorul Intel este ușor inferior compilatoarelor Absoft, NAG și Lahey. Aceste teste au fost efectuate pe un computer cu procesor Pentium 4/1.8 GHz și Mandrake Linux 8.1.
Compilatoarele Intel versiunea 9.1 depășesc, de asemenea, compilatoarele gcc și arată performanțe comparabile cu Absoft, PathScale și PGI.
Le vom fi recunoscători acelor utilizatori și cititori care ne trimit date despre impactul alegerii compilatorului (GCC sau Intel) și opțiunile de optimizare asupra vitezei de lucru asupra problemelor lor din viața reală.
Biblioteci
Compilatorul limbajului C folosește o bibliotecă de rulare dezvoltată în cadrul proiectului GNU ( libc.a).
Următoarele biblioteci sunt furnizate împreună cu compilatorul Intel C++:
- libcprts.a- biblioteca de limbaj C++ runtime dezvoltată de Dinkumware.
- libcxa.a- bibliotecă de rulare suplimentară pentru dezvoltarea C++ de către Intel.
- libimf.a- o bibliotecă de funcții matematice dezvoltată de Intel, care include implementări optimizate și de înaltă precizie ale funcțiilor trigonometrice, hiperbolice, exponențiale, speciale, complexe și alte funcții (pentru mai multe detalii, vezi lista de funcții).
- libirc.a- suport runtime pentru profilare (PGO) și trimitere de cod în funcție de procesor (vezi mai sus).
- libguide.a- Implementarea OpenMP.
Această listă conține biblioteci statice, dar pentru majoritatea dintre ele există și unele dinamice, de exemplu. opțiuni conectate în timpul pornirii ( .asa de).
Următoarele biblioteci sunt furnizate împreună cu compilatorul Fortran: libCEPCF90.a, libIEPCF90.a, libintrine.a, libF90.a, se folosește și biblioteca de funcții matematice libimf.a.
Construirea fișierului executabil
Bibliotecile pot fi conectate static (în timpul construirii) sau dinamic (în timpul pornirii programului). Abordarea dinamică vă permite să reduceți dimensiunea fișierului executabil și vă permite să partajați aceeași copie a bibliotecii în memorie, dar pentru aceasta trebuie să instalați un set complet de biblioteci dinamice utilizate pe fiecare nod unde vor fi rulate programele .
Astfel, dacă ați instalat compilatorul Intel pe mașina dvs. Linux și doriți să rulați fișierele executabile compilate pe alte mașini, atunci trebuie fie să utilizați o construcție statică (ceea ce este mai ușor), fie să copiați bibliotecile dinamice Intel pe aceste mașini (de obicei de la un director precum /opt/intel /compiler70/ia32/lib) la unul dintre directoarele enumerate în fișierul /etc/ld.so.conf și, de asemenea, asigurați-vă că același set de biblioteci dinamice GNU/Linux sunt instalate pe aceste mașini .
În mod implicit, toate bibliotecile de dezvoltare Intel (cu excepția libcxa.so) sunt legate static, iar toate bibliotecile de sistem Linux și bibliotecile GNU sunt legate dinamic. Folosind opțiunea -static puteți forța colectorul (editor de linkuri) să conecteze toate bibliotecile în mod static (ceea ce va crește volumul fisier executabil), și folosind opțiunea -i_dinamic Puteți conecta în mod dinamic toate bibliotecile de dezvoltare Intel.
Când conectați biblioteci suplimentare folosind opțiunea de vizualizare -biblioteca poate fi necesar să utilizați opțiunea -Ldirector pentru a specifica calea unde se află bibliotecile.
Utilizarea opțiunilor -BstaticȘi -Bdinamic puteți specifica în mod explicit conexiunea dinamică sau statică a fiecăreia dintre bibliotecile specificate în Linie de comanda.
Folosind opțiunea -c asamblarea fișierului executabil este dezactivată și se realizează numai compilarea (generarea modulului obiect).
Partajarea modulelor în Fortran și C
Pentru a partaja modulele scrise în Fortran și C, trebuie să fiți de acord cu privire la denumirea procedurilor în modulele obiect, transmiterea parametrilor și accesul la variabile globale, dacă există.
În mod implicit, compilatorul Intel Fortran convertește numele procedurilor în minuscule și adaugă un caracter de subliniere la sfârșitul numelui. Compilatorul C nu schimbă niciodată numele funcțiilor. Astfel, dacă vrem să apelăm o funcție sau procedură FNNAME implementată în C dintr-un modul Fortran, atunci în modulul C ar trebui să se numească fnname_.
Compilatorul Fortran acceptă opțiunea -nus [nume fișier], care vă permite să dezactivați adăugarea de liniuțe de subliniere la numele procedurilor interne. Dacă este specificat un nume de fișier, acest lucru se face numai pentru numele procedurilor listate în fișierul specificat.
În mod implicit, în Fortran parametrii sunt trecuți prin referință, iar în C sunt transmisi întotdeauna după valoare. Astfel, atunci când apelăm o procedură Fortran dintr-un modul C, trebuie să trecem pointeri către variabilele corespunzătoare care conțin valorile parametrilor actuali ca parametri. Când scriem o funcție în C care va trebui apelată dintr-un modul Fortran, trebuie să descriem parametrii formali ca pointeri către tipurile corespunzătoare.
În modulele C, este posibil să utilizați blocuri COMUNE definite în modulele Fortran (pentru mai multe informații, consultați Ghidul utilizatorului Intel Fortran Compiler, capitolul Amestecarea C și Fortran).
Partajarea compilatoarelor Intel și GCC
Modulele obiect C produse de compilatorul Intel C++ sunt compatibile cu modulele produse de compilatorul GCC și biblioteca GNU C. Astfel, aceste module pot fi folosite împreună într-un singur program compilat folosind comenzile icc sau gcc, dar se recomandă utilizarea icc pentru a include corect bibliotecile Intel.
Compilatorul Intel acceptă o serie de extensii de limbaj C non-standard utilizate de proiectul GNU și susținute de compilatorul GCC (dar nu toate, vezi aici pentru mai multe detalii).
Manualul de utilizare nu spune nimic despre compatibilitatea modulelor obiect în limbajele C++ și Fortran; aparent, nu este acceptat.
Suport pentru standarde
Intel C++ Compiler 7.0 pentru Linux acceptă standardul de limbaj ANSI/ISO C (ISO/IEC 9899/1990). Este posibil să se stabilească o compatibilitate strictă cu standardul ANSI C ( -ansi) sau dialect ANSI C extins ( -Xa). Când utilizați opțiunea -c99
În numărul precedent al revistei, am discutat despre produse din familia Intel VTune Performance Analyzer - instrumente de analiză a performanței care sunt meritat populare printre dezvoltatorii de aplicații și permit detectarea în cod. aplicații pentru echipă, care risipesc prea multe resurse CPU, oferind dezvoltatorilor posibilitatea de a identifica și elimina potențialul locuri înguste, asociat cu secțiuni similare de cod, accelerând astfel procesul de dezvoltare a aplicației. Rețineți, totuși, că performanța aplicațiilor depinde în mare măsură de cât de eficiente sunt compilatoarele utilizate în dezvoltarea lor și de ce caracteristici hardware sunt folosite la generarea codului mașinii.
Cele mai recente versiuni ale compilatoarelor Intel Intel C++ și Intel Fortran pentru Windows și Linux vă permit să obțineți beneficii de performanță a aplicațiilor pentru sistemele bazate pe procesoare Intel Itanium 2, Intel Xeon și Intel Pentium 4 până la 40% în comparație cu compilatoarele existente de la alți producători, datorită utilizării unor caracteristici ale acestor procesoare precum tehnologia Hyper-Threading.
Diferențele asociate cu optimizarea codului de către această familie de compilatoare includ utilizarea unei stive pentru efectuarea de operațiuni în virgulă mobilă, optimizarea interprocedurală (IPO), optimizarea în conformitate cu profilul aplicației (Profile Guided Optimization (PGO), preîncărcarea datelor în cache ( Preluarea datelor), care evită latența asociată cu accesul la memorie, suport pentru caracteristicile procesoarelor Intel (de exemplu, extensii pentru procesarea datelor în flux Intel Streaming SIMD Extensions 2, caracteristică pentru Intel Pentium 4), paralelizarea automată a execuției codului, aplicație creație, rulând pe mai multe tipuri diferite procesoare la optimizarea pentru unul dintre ele, instrumente pentru „predicția” codului ulterior (predicția de ramuri), suport extins pentru lucrul cu fire de execuție.
Rețineți că compilatoarele Intel sunt utilizate în companii cunoscute precum Alias/Wavefront, Oracle, Fujitsu Siemens, ABAQUS, Silicon Graphics, IBM. Conform testelor independente efectuate de un număr de companii, performanța compilatoarelor Intel este semnificativ mai mare decât performanța compilatoarelor de la alți producători (a se vedea, de exemplu, http://intel.com/software/products/compilers/techtopics/compiler_gnu_perf .pdf).
Mai jos vom analiza câteva caracteristici ultimele versiuni Compilatoare Intel pentru desktop și server sisteme de operare.
Compilatoare pentru platforma Microsoft Windows
Intel C++ Compiler 7.1 pentru Windows
Intel C++ Compiler 7.1 este un compilator lansat la începutul acestui an care oferă cod foarte optimizat pentru procesoarele Intel Itanium, Intel Itanium 2, Intel Pentium 4 și Intel Xeon, precum și procesorul Intel Pentium M care utilizează tehnologia Intel Centrino și este destinat utilizării în dispozitive mobile.
Compilatorul specificat este pe deplin compatibil cu instrumentele de dezvoltare Microsoft Visual C++ 6.0 și Microsoft Visual Studio .NET: poate fi integrat în mediile de dezvoltare corespunzătoare.
Acest compilator acceptă standardele ANSI și ISO C/C++.
Intel Fortran Compiler 7.1 pentru Windows
Intel Fortran Compiler 7.1 pentru Windows, lansat și la începutul acestui an, vă permite să creați cod optimizat pentru procesoarele Intel Itanium, Intel Itanium 2, Intel Pentium 4 și Intel Xeon, Intel Pentium M.
Acest compilator este pe deplin compatibil cu instrumentele de dezvoltare Microsoft Visual C++ 6.0 și Microsoft Visual Studio .NET, adică poate fi integrat în mediile de dezvoltare corespunzătoare. În plus, acest compilator vă permite să dezvoltați aplicații pe 64 de biți pentru sistemele de operare care rulează pe procesoare Itanium/Itanium 2 folosind Microsoft Visual Studio pe un procesor Pentium pe 32 de biți utilizând compilatorul Intel Fortran pe 64 de biți. Când depanați codul, acest compilator vă permite să utilizați un depanator platformele Microsoft.NET.
Dacă aveți instalat produsul Compaq, Visual Fortran 6.6 poate fi utilizat în locul celui original Intel Fortran Compiler 7.1, deoarece aceste compilatoare sunt compatibile la nivel cod sursa.
Intel Fortran Compiler 7.1 pentru Windows este pe deplin compatibil cu standardul ISO Fortran 95 și acceptă crearea și depanarea aplicațiilor care conțin cod în două limbi: C și Fortran.
Compilatoare pentru platforma Linux
Intel C++ Compiler 7.1 pentru Linux
Un alt compilator care a fost lansat la începutul anului, Intel C++ Compiler 7.1 pentru Linux, vă permite să obțineți un grad ridicat de optimizare a codului pentru procesoarele Intel Itanium, Intel Itanium 2, Intel Pentium 4, Intel Pentium M. Acest compilator este complet compatibil cu compilatorul GNU C la codul sursă și modulele obiect, ceea ce vă permite să migrați aplicațiile create folosind GNU C către acesta fără costuri suplimentare.Compilatorul Intel C++ acceptă C++ ABI (o completare la kernel-ul Linux care vă permite să rulați sub control Linux cod compilat pentru alte platforme, cum ar fi primele sisteme de operare SCO, versiuni timpurii Sun Solaris etc.), ceea ce înseamnă compatibilitate deplină cu compilatorul gcc 3.2 la nivel de cod binar. În cele din urmă, cu Intel C++ Compiler 7.1 pentru Linux, puteți chiar să recompilați nucleul Linux făcând câteva modificări minore la codul sursă.
Intel Fortran Compiler 7.1 pentru Linux
Intel Fortran Compiler 7.1 pentru Linux vă permite să creați cod optimizat pentru procesoarele Intel Itanium, Intel Itanium 2, Intel Pentium 4, Intel Pentium M. Acest compilator este pe deplin compatibil cu compilatorul Compaq Visual Fortran 6.6 la nivel de cod sursă, permițându-vă să recompilați aplicațiile folosindu-le create folosind Compaq Visual Fortran, crescându-le astfel performanța.
În plus, compilatorul specificat este compatibil cu astfel de utilitare utilizate de dezvoltatori precum editorul emacs, depanatorul gdb și utilitarul make application build.
Ca și versiunea pentru Windows a acestui compilator, Intel Fortran Compiler 7.1 pentru Linux este pe deplin compatibil cu standardul ISO Fortran 95 și acceptă crearea și depanarea aplicațiilor care conțin cod în două limbi: C și Fortran.
Trebuie subliniat în special faptul că o contribuție semnificativă la crearea compilatoarelor Intel listate a fost adusă de specialiștii de la Centrul de dezvoltare software din Rusia Intel din Nijni Novgorod. Mai mult informatii detaliate Informații despre compilatoarele Intel pot fi găsite pe site-ul Web Intel la www.intel.com/software/products/.
A doua parte a acestui articol va fi dedicată compilatoarelor Intel care creează aplicații pentru dispozitive mobile.
Nu ești un sclav!
Curs educațional închis pentru copiii de elită: „Adevăratul aranjament al lumii”.
http://noslave.org
Material de pe Wikipedia - enciclopedia liberă
Eroare Lua în Modulul:Wikidata pe linia 170: încercați să indexați câmpul „wikibase” (o valoare zero). | ||||||||||||||||||||||||||||||||||||
Tip | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Autor |
Eroare Lua în Modulul:Wikidata pe linia 170: încercați să indexați câmpul „wikibase” (o valoare zero). |
|||||||||||||||||||||||||||||||||||
Dezvoltator | ||||||||||||||||||||||||||||||||||||
Dezvoltatori |
Eroare Lua în Modulul:Wikidata pe linia 170: încercați să indexați câmpul „wikibase” (o valoare zero). |
|||||||||||||||||||||||||||||||||||
Scris pe |
Eroare Lua în Modulul:Wikidata pe linia 170: încercați să indexați câmpul „wikibase” (o valoare zero). |
|||||||||||||||||||||||||||||||||||
Interfață |
Eroare Lua în Modulul:Wikidata pe linia 170: încercați să indexați câmpul „wikibase” (o valoare zero). |
|||||||||||||||||||||||||||||||||||
sistem de operare | ||||||||||||||||||||||||||||||||||||
Limbi de interfață |
Eroare Lua în Modulul:Wikidata pe linia 170: încercați să indexați câmpul „wikibase” (o valoare zero). |
|||||||||||||||||||||||||||||||||||
Prima editie |
Eroare Lua în Modulul:Wikidata pe linia 170: încercați să indexați câmpul „wikibase” (o valoare zero). |
|||||||||||||||||||||||||||||||||||
Platformă hardware | ||||||||||||||||||||||||||||||||||||
Ultima versiune | ||||||||||||||||||||||||||||||||||||
Eliberarea candidatului |
Eroare Lua în Modulul:Wikidata pe linia 170: încercați să indexați câmpul „wikibase” (o valoare zero). |
|||||||||||||||||||||||||||||||||||
Versiune beta |
Eroare Lua în Modulul:Wikidata pe linia 170: încercați să indexați câmpul „wikibase” (o valoare zero). |
|||||||||||||||||||||||||||||||||||
Versiunea alfa |
Eroare Lua în Modulul:Wikidata pe linia 170: încercați să indexați câmpul „wikibase” (o valoare zero). |
|||||||||||||||||||||||||||||||||||
Versiune de testare |
Eroare Lua în Modulul:Wikidata pe linia 170: încercați să indexați câmpul „wikibase” (o valoare zero). |
|||||||||||||||||||||||||||||||||||
Formate de fișiere care pot fi citite |
Eroare Lua în Modulul:Wikidata pe linia 170: încercați să indexați câmpul „wikibase” (o valoare zero). |
|||||||||||||||||||||||||||||||||||
Formate de fișiere generate |
Eroare Lua în Modulul:Wikidata pe linia 170: încercați să indexați câmpul „wikibase” (o valoare zero). |
|||||||||||||||||||||||||||||||||||
Stat |
Eroare Lua în Modulul:Wikidata pe linia 170: încercați să indexați câmpul „wikibase” (o valoare zero). |
|||||||||||||||||||||||||||||||||||
Licență |
Caracteristici principale:
Compilatorul acceptă standardul OpenMP 3.0 pentru scrierea de programe paralele. Conține, de asemenea, o modificare a OpenMP numită Cluster OpenMP, cu care puteți rula aplicații scrise în conformitate cu OpenMP pe clustere folosind MPI. Intel C++ Compiler utilizează interfața (partea compilatorului care analizează programul compilat) de la Edison Design Group. Aceeași interfață este utilizată de compilatoarele SGI MIPSpro, Comeau C++ și Portland Group. Acest compilator este utilizat pe scară largă pentru compilarea benchmark-urilor SPEC CPU. Există 4 serii de produse de la Intel care conțin compilatorul:
Dezavantajele versiunii Linux a compilatorului includ incompatibilitatea parțială cu extensiile GNU ale limbajului C (suportate de compilatorul GCC), care poate cauza probleme la compilarea unor programe.
Opțiuni experimentaleAu fost publicate următoarele versiuni experimentale ale compilatorului:
Steaguri de bază
Scrieți o recenzie despre articolul „Compilatorul Intel C++”NoteVezi siLegături
Un fragment care caracterizează compilatorul Intel C++Și, de asemenea, s-a întors să-l vadă pe Magul Alb pentru ultima oară... Soțul ei și cel mai adevărat prieten, pe care nu l-a putut uita niciodată. În inima ei l-a iertat. Dar, spre marele lui regret, ea nu a putut să-i aducă iertarea Magdalenei... Așadar, după cum vezi, Isidora, marea fabulă creștină despre „iertarea” este doar o minciună copilărească pentru credincioșii naivi, pentru a le permite. să facă orice Rău, știind că orice ar face, vor fi în cele din urmă iertați. Dar poți ierta doar ceea ce este cu adevărat demn de iertare. O persoană trebuie să înțeleagă că trebuie să răspundă pentru orice Rău săvârșit... Și nu în fața vreunui Dumnezeu tainic, ci în fața sa, obligându-se să sufere cu cruzime. Magdalena nu l-a iertat pe Vladyka, deși l-a respectat profund și l-a iubit sincer. Așa cum ea nu a reușit să ne ierte pe toți pentru moartea cumplită a lui Radomir. La urma urmei, EA a înțeles mai bine decât oricine altcineva - am fi putut să-l ajutăm, l-am fi putut salva de la o moarte cruntă... Dar nu am vrut. Considerând că vinovăția Magului Alb este prea crudă, ea l-a lăsat să trăiască cu această vinovăție, fără a uita-o nici măcar un minut... Nu a vrut să-i acorde iertare ușoară. Nu am mai văzut-o. Așa cum nu și-au văzut niciodată copiii. Printr-unul dintre cavalerii Templului ei - vrăjitorul nostru - Magdalena i-a transmis lui Vladyka răspunsul la cererea sa de a se întoarce la noi: „Soarele nu răsare de două ori în aceeași zi... Bucuria lumii tale (Radomir) va niciodată să nu mă mai întorc la tine, așa cum eu nu mă voi întoarce la tine și eu... Mi-am găsit CREDINȚA și ADEVĂRUL, ele sunt VIE, dar ale tale sunt MORT... Plângeți-vă fiii - v-au iubit. Nu te voi ierta niciodată pentru moartea lor cât voi fi în viață. Și fie ca vina ta să rămână cu tine. Poate că într-o zi îți va aduce Lumină și Iertare... Dar nu de la mine.” Capul Magului Ioan nu a fost adus la Meteora din acelasi motiv - niciunul dintre Cavalerii Templului nu a vrut sa se intoarca la noi... I-am pierdut, ca pe multi altii i-am pierdut de mai multe ori, care nu au vrut sa se intoarca la noi. înțelegeți și acceptați victimele noastre... Care au făcut ca tine - au plecat, condamnându-ne.Mi se învârtea capul!.. Ca un om însetat, potolindu-mi veșnica foame de cunoaștere, am absorbit cu lăcomie fluxul de informații uimitoare oferite cu generozitate de Nord... Și îmi doream mult mai mult!.. Voiam să știu totul pentru a sfârșitul. A fost o gură de apă dulce într-un deșert pârjolit de dureri și necazuri! Și nu m-am săturat... – Am mii de întrebări! Dar nu mai e timp... Ce să fac, Nord?... - Întrebați, Isidora!.. Întrebați, voi încerca să vă răspund... – Spune-mi, Sever, de ce mi se pare că această poveste pare să îmbine două povești de viață, împletite cu evenimente similare, și sunt prezentate ca viața unei singure persoane? Sau nu am dreptate? – Ai perfectă dreptate, Isidora. După cum v-am spus mai devreme, „puterile acestei lumi”, care au creat istoria falsă a omenirii, „îmbrăcăm” adevărata viață a lui Hristos viața străină a profetului evreu Iosua, care a trăit cu o mie și jumătate de ani în urmă ( din vremea povestirii Nordului). Și nu numai el însuși, ci și familia lui, rudele și prietenii, prietenii și adepții săi. La urma urmei, era soția profetului Iosua, evreica Maria, care avea o soră Marta și un frate Lazăr, sora mamei sale Maria Yakobe și alții care nu au fost niciodată lângă Radomir și Magdalena. Așa cum nu mai erau alți „apostoli” lângă ei - Pavel, Matei, Petru, Luca și ceilalți... Familia profetului Iosua a fost cea care s-a mutat în urmă cu o mie și jumătate de ani în Provence (care în acele vremuri se numea Galia Transalpină), în orașul grecesc Massalia (azi Marsilia), deoarece Massalia la acea vreme era „poarta” între Europa și Asia și era cea mai ușoară cale pentru toți cei „prigoniți” pentru a evita persecuțiile și necazurile.
|