Kompilátor Intel C ++ - Intel C++ Compiler

Kompilátor Intel C ++ Classic
Vývojáři Intel
Stabilní uvolnění
2021.1.2 / 16. prosince 2020 ; Před 8 měsíci ( 2020-12-16 )
Operační systém Windows , macOS , Linux
Typ Překladač
Licence Freeware , proprietární
webová stránka software .intel .com /content /www /us /en /develop /tools /oneapi /components /dpc-compiler .html
Kompilátor Intel oneAPI DPC ++/C ++
Vývojáři Intel
Stabilní uvolnění
2021.1.2 / 16. prosince 2020 ; Před 8 měsíci ( 2020-12-16 )
Operační systém Windows , Linux
Typ Překladač
Licence Freeware , proprietární
webová stránka software .intel .com /content /www /us /en /develop /tools /oneapi /components /dpc-compiler .html

Intel C ++ Compiler Classic a Intel oneAPI DPC ++ / C ++ Compiler jsou Intel ‚s C , C ++ , SYCL a dat Parallel C ++ (DPC ++) kompilátory pro systémy s procesory Intel, které jsou dostupné pro Microsoft Windows , Linux a MacOS operační systémy.

Přehled

Compiler Classic Intel C ++ je k dispozici pro Windows, Linux a macOS a podporuje kompilaci zdrojů C a C ++ se zaměřením na procesory Intel IA-32 , Intel 64 (aka x86-64 ), Core , Xeon a Xeon Scalable . Podporuje vývojová prostředí Microsoft Visual Studio a Eclipse IDE . Intel C ++ Compiler Classic podporuje vytváření vláken pomocí Intel OneAPI Threading Building Blocks, OpenMP a nativních vláken.

Kompilátor Intel oneAPI DPC ++/C ++ je k dispozici pro Windows a Linux a podporuje kompilaci zdroje C, C ++, SYCL a Data Parallel C ++ (DPC ++) se zaměřením na Intel IA-32, Intel 64 (x86-64), Core, Xeon a Xeon Škálovatelné procesory a také GPU včetně Intel Processor Graphics Gen9 a vyšší, architektura Intel X e a Intel Programmable Acceleration Card s Intel Arria 10 GX FPGA. Stejně jako Intel C ++ Compiler Classic podporuje také vývojová prostředí Microsoft Visual Studio a Eclipse IDE a podporuje vytváření vláken pomocí Intel oneAPI Threading Building Blocks, OpenMP a nativních vláken.

DPC ++ staví na specifikaci SYCL od skupiny The Khronos Group. Je navržen tak, aby vývojářům umožnil znovu použít kód napříč hardwarovými cíli (CPU a akcelerátory, jako jsou GPU a FPGA) a provádět vlastní ladění pro konkrétní akcelerátor. DPC ++ obsahuje funkce jazyka C ++ 17 a SYCL a zahrnuje rozšíření komunity open-source, která usnadňují používání SYCL. Mnoho z těchto rozšíření bylo přijato prozatímní specifikací SYCL 2020, včetně sjednocené sdílené paměti, skupinových algoritmů a podskupin.

Intel v srpnu 2021 oznámil úplné přijetí LLVM pro rychlejší časy sestavení a výhody z podpory nejnovějších standardů C ++.

Architektury

Kompilátor Intel C ++ Classic se zaměřuje na obecné procesory architektury Intel x86-64 včetně:

  • Starší procesory Intel IA-32 a Intel 64 (x86-64)
  • Procesory Intel Core
  • Rodina procesorů Intel Xeon
  • Škálovatelné procesory Intel Xeon

Kompilátor Intel oneAPI DPC ++/C ++ generuje kód jak pro obecné procesory Intel x86-64, tak pro GPU :

  • Procesory:
    • Starší procesory Intel IA-32 a Intel 64 (x86-64)
    • Procesory Intel Core
    • Rodina procesorů Intel Xeon
    • Škálovatelné procesory Intel Xeon
  • GPU:
    • Procesorová grafika Intel Gen9 a vyšší
    • Architektura Intel X e
    • Programovatelná akcelerační karta Intel s Intel 10 GX FPGA

Sady nástrojů

Kompilátor Intel oneAPI DPC ++/C ++ je k dispozici buď jako samostatná součást, nebo jako součást Intel oneAPI Base Toolkit, Intel oneAPI HPC Toolkit a Intel oneAPI IoT Toolkit.

Compiler Classic Intel C ++ je k dispozici buď jako samostatná součást, nebo jako součást sady nástrojů Intel oneAPI Base Toolkit.

Dokumentace

Dokumentaci lze nalézt na webu technické dokumentace Intel Software .

Okna Linux a macOS Komentář
/Od -O0 Žádná optimalizace
/O1 -O1 "Umožňuje optimalizaci rychlosti a deaktivuje některé optimalizace, které zvyšují velikost kódu a ovlivňují rychlost"
/O2 -O2 "Umožňuje optimalizaci rychlosti." Toto je obecně doporučená úroveň optimalizace ”
/O3 -O3 „Provádí optimalizace O2 a umožňuje agresivnější transformace smyček“
/Ofast -Rychle "Tato možnost zvyšuje rychlost vaší aplikace." Nastavuje možnosti kompilátoru -O3 , -no -prec -div a -fp -model rychle = 2
/arch: SSE3 -msse3 Umožňuje optimalizaci sady instrukcí SSE, SSE2 a SSE3 pro CPU jiných výrobců než Intel
/Qprof-gen -prof_gen Zkompilovat program a instrumentovat jej pro běh generující profil
/Qprof-použití -prof_use Lze použít pouze po spuštění programu, který byl dříve kompilován pomocí prof_gen . Používá informace o profilu během každého kroku procesu kompilace

Ladění

Kompilátor Intel poskytuje informace o ladění, které jsou standardní pro běžné ladicí programy ( DWARF 2 v systému Linux, podobně jako gdb a COFF pro Windows). Příznaky kompilace s informacemi o ladění jsou /Zi ve Windows a -g v Linuxu. Ladění se provádí ve Windows pomocí debuggeru Visual Studio a v Linuxu pomocí gdb.

Zatímco kompilátor Intel může generovat výstup profilování kompatibilní s gprof , Intel také poskytuje statistický profiler na úrovni jádra s názvem Intel VTune Profiler . VTune lze použít z příkazového řádku nebo prostřednictvím přiloženého grafického uživatelského rozhraní v systému Linux nebo Windows. Může být také integrován do sady Visual Studio v systému Windows nebo Eclipse v systému Linux). Kromě profilovače VTune existuje Intel Advisor, který se specializuje na optimalizaci vektorizace, modelování zátěže, návrh grafu toku a nástroje pro návrh a prototypování vláken.

Intel také nabízí nástroj pro detekci chyb paměti a vláken s názvem Intel Inspector XE. Pokud jde o chyby paměti, pomáhá detekovat nevracení paměti, poškození paměti, přidělení/zrušení přidělení neshod API a nekonzistentní využití API paměti. Pokud jde o chyby vláken, pomáhá detekovat datové závody (haldy i hromady), zablokování a chyby API a synchronizace vláken.

Podpora pro procesory jiných výrobců než Intel

Předchozí verze kompilátorů C/C ++ společnosti Intel byly kritizovány za méně agresivní optimalizaci pro procesory jiné než Intel; například Steve Westfield napsal v článku z roku 2005 na webu AMD:

Kompilátor Intel 8.1 C/C ++ využívá příznak -xN (pro Linux) nebo -QxN (pro Windows), aby využil výhod rozšíření SSE2. U SSE3 je přepínač kompilátoru -xP (pro Linux) a -QxP (pro Windows). ... S nastavenými příznaky -xN/-QxN a -xP/-QxP kontroluje řetězec dodavatele procesoru -a pokud to není "GenuineIntel", zastaví provádění, aniž by zkontroloval příznaky funkcí. Au!

Dánský vývojář a učenec Agner Fog v roce 2009 napsal:

Kompilátor Intel a několik různých knihoven funkcí Intel mají neoptimální výkon na procesorech AMD a VIA . Důvodem je, že kompilátor nebo knihovna může vytvářet více verzí kusu kódu, každý optimalizovaný pro určitý procesor a sadu instrukcí , například SSE2 , SSE3 atd. Systém obsahuje funkci, která zjišťuje, jaký typ CPU běží zapne a vybere optimální cestu kódu pro daný procesor. Tomu se říká dispečer CPU. Dispečer procesoru Intel však nejen kontroluje, která sada instrukcí je CPU podporována, ale také kontroluje řetězec ID dodavatele. Pokud je řetězec dodavatele „GenuineIntel“, použije optimální cestu k kódu. Pokud procesor není od společnosti Intel, pak ve většině případů poběží nejpomalejší možnou verzi kódu, i když je procesor plně kompatibilní s lepší verzí.

Tento dispečink CPU specifický pro dodavatele může potenciálně ovlivnit výkon softwaru vytvořeného pomocí kompilátoru Intel nebo knihovny funkcí Intel na procesorech jiných výrobců, možná bez vědomí programátora. To údajně vedlo k zavádějící benchmarky , včetně jednoho incidentu při změně CPUID VIA Nano výrazně zlepšilo výsledky. V listopadu 2009 dosáhly společnosti AMD a Intel v této a souvisejících záležitostech právní dohody a na konci roku 2010 AMD urovnala antimonopolní vyšetřování americké federální obchodní komise proti společnosti Intel.

Vypořádání FTC zahrnovalo ustanovení o zpřístupnění, kdy Intel musí:

jasně publikovat, že jeho kompilátor diskriminuje procesory jiné než Intel (například AMD), nevyužívá plně jejich funkcí a produkuje podřadný kód.

V souladu s tímto rozhodnutím společnost Intel přidala do své dokumentace ke kompilátoru prohlášení:

Kompilátory Intel mohou nebo nemusí optimalizovat ve stejné míře pro mikroprocesory jiných výrobců než Intel pro optimalizace, které nejsou jedinečné pro mikroprocesory Intel. Tyto optimalizace zahrnují instrukční sady SSE2, SSE3 a SSSE3 a další optimalizace. Společnost Intel nezaručuje dostupnost, funkčnost ani účinnost jakékoli optimalizace na mikroprocesorech, které nevyrábí společnost Intel. Optimalizace závislé na mikroprocesoru v tomto produktu jsou určeny pro použití s ​​mikroprocesory Intel. Určité optimalizace, které nejsou specifické pro mikroarchitekturu Intel, jsou vyhrazeny pro mikroprocesory Intel. Další informace o konkrétních sadách instrukcí, na které se vztahuje toto oznámení, naleznete v příslušném uživatelském a referenčním průvodci produktu.

Ještě v roce 2013 článek v The Register tvrdil, že objektový kód vytvořený kompilátorem Intel pro AnTuTu Mobile Benchmark vynechal části benchmarku, který vykazoval zvýšený výkon ve srovnání s platformami ARM.

Historie vydání

Následující seznam uvádí verze kompilátoru Intel C ++ od roku 2003:

Verze kompilátoru Datum vydání Hlavní nové funkce
Kompilátor Intel C ++ 8.0 15. prosince 2003 Předkompilované záhlaví, nástroje pro pokrytí kódu.
Kompilátor Intel C ++ 8.1 Září 2004 Architektura AMD64 (pro Linux).
Kompilátor Intel C ++ 9.0 14. června 2005 Architektura AMD64 (pro Windows), softwarová optimalizace spekulativních předpočtů (SSP), vylepšené zprávy o optimalizaci smyčky.
Kompilátor Intel C ++ 10.0 05.06.2007 Vylepšený paralelizátor a vektorizér, Streaming SIMD Extensions 4 ( SSE4 ), nové a vylepšené optimalizační zprávy pro pokročilé transformace smyček, nová optimalizovaná implementace zpracování výjimek.
Kompilátor Intel C ++ 10.1 7. listopadu 2007 Nová knihovna runtime kompatibility s OpenMP*: pokud používáte nový OpenMP RTL, můžete kombinovat knihovny a objekty vytvořené pomocí Visual C ++. Chcete-li používat nové knihovny, musíte použít novou možnost „-Qopenmp /Qopenmp-lib: compat“ v systému Windows a „-openmp -openmp-lib: compat“ v systému Linux. Tato verze kompilátoru Intel podporuje více vnitřních funkcí ze sady Visual Studio 2005.

Podpora VS2008 - příkazový řádek pouze v této verzi. Integrace IDE ještě nebyla podporována.

Kompilátor Intel C ++ 11.0 Listopad 2008 Počáteční podpora C ++ 11 . Integrace VS2008 IDE ve Windows. OpenMP 3.0. Kontrola zdroje pro statickou paměť/paralelní diagnostiku.
Kompilátor Intel C ++ 11.1 23. června 2009 Podpora nejnovějších pokynů Intel SSE SSE4.2 , AVX a AES . Parallel Debugger Extension. Vylepšená integrace do Microsoft Visual Studio, Eclipse CDT 5.0 a Mac Xcode IDE.
Intel C ++ Composer XE 2011 až Update 5 (kompilátor 12.0) 7. listopadu 2010 Jazyková rozšíření Cilk Plus , Guided Auto-Parallelism, Vylepšená podpora C ++ 11 .
Intel C ++ Composer XE 2011 Update 6 a vyšší (kompilátor 12.1) 08.09.2011 Jazyková rozšíření Cilk Plus aktualizována na podporu specifikace verze 1.1 a dostupná pro Mac OS X kromě Windows a Linux, Threading Building Blocks aktualizovány na podporu verze 4.0, bloky Apple podporovány na Mac OS X, vylepšená podpora C ++ 11 včetně podpory pro Variadic šablony, podpora OpenMP 3.1.
Intel C ++ Composer XE 2013 (kompilátor 13.0) 5. září 2012 Linuxová podpora koprocesorů Intel Xeon Phi, podpora pro Microsoft Visual Studio 12 (Desktop), podpora pro gcc 4.7, podpora pro instrukce Intel AVX 2, aktualizace stávající funkce zaměřené na vylepšený výkon aplikací.
Intel C ++ Composer XE 2013 SP1 (kompilátor 14.0) 4. září 2013 Online instalátor; podpora koprocesorů Intel Xeon Phi; náhled Podpora Win32 pouze pro grafiku Intel; vylepšená podpora C ++ 11
Intel C ++ Composer XE 2013 SP1 Update 1 (kompilátor 14.0.1) 18. října 2013 Japonská lokalizace 14.0; Podpora Windows 8.1 a Xcode 5.0
Kompilátor Intel C ++ pro Android (kompilátor 14.0.1) 12. listopadu 2013 Hostováno na Windows, Linux nebo OS X, kompatibilní s nástroji Android NDK včetně kompilátoru gcc a Eclipse
Intel C ++ Composer XE 2015 (kompilátor 15.0) 25. července 2014 Plná podpora jazyka C ++ 11; Další vylepšení OpenMP 4.0 a Cilk Plus
Intel C ++ Composer XE 2015 Update 1 (kompilátor 15.0.1) 30. října 2014 Podpora AVX-512 ; Japonská lokalizace
Intel C ++ 16.0 25. srpna 2015 Dostupnost na základě sady (Intel Parallel Studio XE, Intel System Studio)
Intel C ++ 17.0 15. září 2016 Dostupnost na základě sady (Intel Parallel Studio XE, Intel System Studio)
Intel C ++ 18.0 26. ledna 2017 Dostupnost na základě sady (Intel Parallel Studio XE, Intel System Studio)
Intel C ++ 19.0 3. dubna 2018 Dostupnost na základě sady (Intel Parallel Studio XE, Intel System Studio)
Kompilátor Intel C ++ Classic 19.1 22. října 2020 Počáteční Open MP 5.1 CPU only
Kompilátor Intel oneAPI DPC ++ / C ++ 2021 8. prosince 2020 SYCL, DPC ++, počáteční Open MP 5.1
Kompilátor Intel Intel C ++ Classic 2021.1.2 Kompilátor
Intel oneAPI DPC ++/C ++ 2021.1.2
16. prosince 2020 oneAPI DPC ++ / C ++ představuje podporu pro GPU vykládce

Viz také

Reference

externí odkazy