Intel C ++ - kompilator - Intel C++ Compiler

Intel C ++ Compiler Classic
Utvecklare Intel
Stabil frisättning
2021.1.2 / 16 december 2020 ; 8 månader sedan ( 2020-12-16 )
Operativ system Windows , macOS , Linux
Typ Kompilator
Licens Freeware , proprietär
Hemsida programvara .intel .com /content /www /us /sv /develop /tools /oneapi /components /dpc-compiler .html
Intel oneAPI DPC ++/C ++ kompilator
Utvecklare Intel
Stabil frisättning
2021.1.2 / 16 december 2020 ; 8 månader sedan ( 2020-12-16 )
Operativ system Windows , Linux
Typ Kompilator
Licens Freeware , proprietär
Hemsida programvara .intel .com /content /www /us /sv /develop /tools /oneapi /components /dpc-compiler .html

Intel C ++ Compiler Classic och intel oneAPI DPC ++ / C ++ Compiler är intel ’s C , C ++ , SYCL , och Data Parallell C ++ (DPC ++) kompilatorer för Intel processorbaserade system, tillgängliga för Microsoft Windows , Linux , och MacOS -operativsystem.

Översikt

Intel C ++ Compiler Classic är tillgängligt för Windows, Linux och macOS och stöder kompilering av C- och C ++- källor , riktade till Intel IA-32 , Intel 64 (aka x86-64 ), Core , Xeon och Xeon Scalable- processorer. Den stöder utvecklingsmiljöerna Microsoft Visual Studio och Eclipse IDE . Intel C ++ Compiler Classic stöder trådning via Intel oneAPI Threading Building Block, OpenMP och native threads.

Intel oneAPI DPC ++/C ++ Compiler är tillgänglig för Windows och Linux och stöder kompilering av C, C ++, SYCL och Data Parallel C ++ (DPC ++) källa, riktad mot Intel IA-32, Intel 64 (x86-64), Core, Xeon och Xeon Skalbara processorer, liksom GPU: er inklusive Intel Processor Graphics Gen9 och senare, Intel X e -arkitektur och Intel programmerbart accelerationskort med Intel Arria 10 GX FPGA. Precis som Intel C ++ Compiler Classic stöder den också utvecklingsmiljöerna Microsoft Visual Studio och Eclipse IDE och stöder trådning via Intel oneAPI Threading Building Block, OpenMP och native threads.

DPC ++ bygger på SYCL -specifikationen från The Khronos Group. Det är utformat för att låta utvecklare återanvända kod över hårdvarumål (processorer och acceleratorer som GPU och FPGA) och utföra anpassad inställning för en specifik accelerator. DPC ++ innehåller språkfunktioner C ++ 17 och SYCL och innehåller community-tillägg med öppen källkod som gör SYCL lättare att använda. Många av dessa tillägg antogs av den preliminära specifikationen för SYCL 2020 inklusive enhetligt delat minne, gruppalgoritmer och undergrupper.

Intel tillkännagav i augusti 2021 fullständigt antagande av LLVM för snabbare byggtider och fördelar med att stödja de senaste C ++ - standarderna.

Arkitekturer

Intel C ++ Compiler Classic riktar sig mot generella Intel x86-64 arkitektur-processorer inklusive:

  • Äldre Intel IA-32 och Intel 64 (x86-64) processorer
  • Intel Core -processorer
  • Intel Xeon -processorfamilj
  • Intel Xeon skalbara processorer

Intel oneAPI DPC ++/C ++ Compiler genererar kod för både Intels x86-64- processorer för allmänna ändamål och GPU : er :

  • Processorer:
    • Äldre Intel IA-32 och Intel 64 (x86-64) processorer
    • Intel Core -processorer
    • Intel Xeon -processorfamilj
    • Intel Xeon skalbara processorer
  • GPU: er:
    • Intel Processor Graphics Gen9 och senare
    • Intel X e -arkitektur
    • Intels programmerbara accelerationskort med Intel 10 GX FPGA

Verktygssatser

Intel oneAPI DPC ++/C ++ - kompilatorn är tillgänglig antingen som en fristående komponent eller som en del av Intel oneAPI Base Toolkit, Intel oneAPI HPC Toolkit och Intel oneAPI IoT Toolkit.

Intel C ++ Compiler Classic finns antingen som en fristående komponent eller som en del av Intel oneAPI Base Toolkit.

Dokumentation

Dokumentation finns på webbplatsen för Intel Software Technical Documentation .

Windows Linux och macOS Kommentar
/Od -O0 Ingen optimering
/O1 -O1 ”Aktiverar hastighetsoptimeringar och inaktiverar vissa optimeringar som ökar kodstorleken och påverkar hastigheten”
/O2 -O2 ”Möjliggör optimering av hastighet. Detta är den generellt rekommenderade optimeringsnivån ”
/O3 -O3 "Utför O2 -optimeringar och möjliggör mer aggressiva loop -transformationer"
/Ofast -Snabbt ”Det här alternativet förbättrar din applikations hastighet. Det ställer in kompilatoralternativ -O3 , -no -prec -div och -fp -model snabbt = 2
/båge: SSE3 -msse3 Aktiverar optimering av SSE-, SSE2- och SSE3-instruktionsuppsättningar för icke-Intel-processorer
/Qprof-gen -prof_gen Kompilera programmet och instrumentera det för en profilgenererande körning
/Qprof-användning -prof_use Får endast användas efter att ha kört ett program som tidigare kompilerats med prof_gen . Använder profilinformation under varje steg i kompileringsprocessen

Felsökning

Intel -kompilatorn tillhandahåller felsökningsinformation som är standard för vanliga felsökare ( DWARF 2 på Linux, liknande gdb och COFF för Windows). Flaggorna som ska kompileras med felsökningsinformation är /Zi på Windows och -g på Linux. Felsökning görs på Windows med Visual Studio -felsökaren och på Linux med gdb.

Medan Intel-kompilatorn kan generera en gprof-kompatibel profilering , ger Intel också en kärnnivå, systemomfattande statistisk profiler som kallas Intel VTune Profiler . VTune kan användas från en kommandorad eller via ett medföljande GUI på Linux eller Windows. Det kan också integreras i Visual Studio på Windows eller Eclipse på Linux). Förutom VTune -profilen finns det Intel Advisor som specialiserat sig på optimering av vektorer, avlastningsmodellering, flödesdiagram och verktyg för tråddesign och prototyper.

Intel erbjuder också ett verktyg för upptäckt av minne och trådfel som kallas Intel Inspector XE. När det gäller minnesfel hjälper det till att upptäcka minnesläckor , minneskorruption, tilldelning/avallokering av API-felaktigheter och inkonsekvent användning av API-minne. När det gäller trådfel hjälper det till att upptäcka dataseras (både hög och stack), blockeringar och tråd- och synk -API -fel.

Stöd för icke-Intel-processorer

Tidigare versioner av Intels C/C ++-kompilatorer har kritiserats för att optimera mindre aggressivt för icke-Intel-processorer; till exempel skrev Steve Westfield i en artikel från 2005 på AMD: s webbplats:

Intel 8.1 C/C ++ -kompilatorn använder flaggan -xN (för Linux) eller -QxN (för Windows) för att dra fördel av SSE2 -tilläggen. För SSE3 är kompilatoromkopplaren -xP (för Linux) och -QxP (för Windows). ... Med -xN/-QxN och -xP/-QxP -flaggorna inställda kontrollerar den processorleverantörssträngen -och om det inte är "GenuineIntel" stoppar det körningen utan att ens kontrollera funktionsflaggorna. aj!

Den danska utvecklaren och forskaren Agner Fog skrev 2009:

Intel -kompilatorn och flera olika Intel -funktionsbibliotek har suboptimal prestanda på AMD- och VIA -processorer. Anledningen är att kompilatorn eller biblioteket kan göra flera versioner av en kodbit, var och en optimerad för en viss processor och instruktionsuppsättning , till exempel SSE2 , SSE3 , etc. Systemet innehåller en funktion som upptäcker vilken typ av CPU den körs på och väljer den optimala kodvägen för den processorn. Detta kallas en CPU -avsändare. Men Intel CPU -avsändare kontrollerar inte bara vilken instruktionsuppsättning som stöds av processorn, den kontrollerar också leverantörens ID -sträng. Om leverantörssträngen är "GenuineIntel" använder den den optimala kodvägen. Om CPU: n inte är från Intel kommer den i de flesta fall att köra den långsammaste versionen av koden, även om CPU: n är fullt kompatibel med en bättre version.

Denna leverantörsspecifika CPU-sändning kan eventuellt påverka prestandan hos programvara som är byggd med en Intel-kompilator eller ett Intel-funktionsbibliotek på processorer som inte är Intel, möjligen utan programmerarens vetskap. Detta har påstås ha lett till vilseledande riktmärken , inklusive en incident vid förändring av CPUID för en VIA Nano avsevärt förbättrade resultat. I november 2009 nådde AMD och Intel en rättslig lösning om detta och relaterade frågor, och i slutet av 2010 avgjorde AMD en amerikansk Federal Trade Commission antitrustutredning mot Intel.

FTC -uppgörelsen inkluderade en upplysningsbestämmelse där Intel måste:

publicera tydligt att dess kompilator diskriminerar icke-Intel-processorer (som AMDs design), inte utnyttjar deras funktioner fullt ut och producerar sämre kod.

I överensstämmelse med denna dom lade Intel till ansvarsfriskrivningar till sin kompilatordokumentation:

Intels kompilatorer kan eller inte optimera i samma grad för icke-Intel-mikroprocessorer för optimeringar som inte är unika för Intel-mikroprocessorer. Dessa optimeringar inkluderar SSE2, SSE3 och SSSE3 instruktionsuppsättningar och andra optimeringar. Intel garanterar inte tillgänglighet, funktionalitet eller effektivitet för optimering av mikroprocessorer som inte tillverkas av Intel. Mikroprocessorberoende optimeringar i denna produkt är avsedda att användas med Intel-mikroprocessorer. Vissa optimeringar som inte är specifika för Intel mikroarkitektur är reserverade för Intel -mikroprocessorer. Vänligen se tillämpliga produktens användar- och referensguider för mer information om de specifika instruktionsuppsättningar som omfattas av detta meddelande.

Så sent som 2013 påstod en artikel i The Register att objektkoden som producerades av Intel -kompilatorn för AnTuTu Mobile Benchmark utelämnade delar av riktmärket som visade ökad prestanda jämfört med ARM -plattformar.

Släpphistorik

Följande listar versioner av Intel C ++ - kompilatorn sedan 2003:

Kompilatorversion Utgivningsdatum Stora nya funktioner
Intel C ++ - kompilator 8.0 15 december 2003 Förkompilerade rubriker, kodtäckningsverktyg.
Intel C ++ - kompilator 8.1 September 2004 AMD64 -arkitektur (för Linux).
Intel C ++ - kompilator 9.0 14 juni 2005 AMD64- arkitektur (för Windows), mjukvarubaserad spekulativ förberäkning (SSP) -optimering, förbättrade loopoptimeringsrapporter.
Intel C ++ - kompilator 10.0 5 juni 2007 Förbättrad parallelizer och vektorizer, Streaming SIMD Extensions 4 ( SSE4 ), nya och förbättrade optimeringsrapporter för avancerade loop -transformationer, ny optimerad undantagshantering.
Intel C ++ - kompilator 10.1 7 november 2007 Nytt OpenMP* kompatibelt runtime -bibliotek: om du använder det nya OpenMP RTL kan du blanda och matcha med bibliotek och objekt som byggts av Visual C ++. För att använda de nya biblioteken måste du använda det nya alternativet "-Qopenmp /Qopenmp-lib: kompat" på Windows och "-openmp -openmp-lib: kompat" på Linux. Denna version av Intel -kompilatorn stöder mer inneboende från Visual Studio 2005.

VS2008 -stöd - kommandoraden endast i den här versionen. IDE -integrationen stöds inte ännu.

Intel C ++ - kompilator 11.0 November 2008 Initialt stöd för C ++ 11 . VS2008 IDE -integration på Windows. OpenMP 3.0. Källkontroll för statiskt minne/parallell diagnostik.
Intel C ++ - kompilator 11.1 23 juni 2009 Stöd för senaste Intel SSE SSE4.2 , AVX och AES instruktioner. Parallell felsökningstillägg. Förbättrad integration i Microsoft Visual Studio, Eclipse CDT 5.0 och Mac Xcode IDE.
Intel C ++ Composer XE 2011 upp till uppdatering 5 (kompilator 12.0) 7 november 2010 Cilk Plus-språktillägg , guidad auto-parallellism, förbättrat C ++ 11- stöd.
Intel C ++ Composer XE 2011 Update 6 och senare (kompilator 12.1) 8 september 2011 Cilk Plus -språktillägg uppdaterade för att stödja specifikation version 1.1 och finns på Mac OS X förutom Windows och Linux, Threading Building Blocks uppdaterat för att stödja version 4.0, Apple -block stöds på Mac OS X, förbättrat C ++ 11 -stöd inklusive stöd för Variadic mallar, OpenMP 3.1 -stöd.
Intel C ++ Composer XE 2013 (kompilator 13.0) 5 september 2012 Linux-baserat stöd för Intel Xeon Phi-coprocessorer, stöd för Microsoft Visual Studio 12 (Desktop), stöd för gcc 4.7, stöd för Intel AVX 2-instruktioner, uppdateringar av befintlig funktionalitet med fokus på förbättrad applikationsprestanda.
Intel C ++ Composer XE 2013 SP1 (kompilator 14.0) 4 september 2013 Online installatör; stöd för Intel Xeon Phi -coprocessorer; förhandsvisning Win32 endast stöd för Intel -grafik; förbättrat C ++ 11 -stöd
Intel C ++ Composer XE 2013 SP1 Update 1 (kompilator 14.0.1) 18 oktober 2013 Japansk lokalisering av 14,0; Stöd för Windows 8.1 och Xcode 5.0
Intel C ++ - kompilator för Android (kompilator 14.0.1) 12 november 2013 Värd på Windows, Linux eller OS X, kompatibelt med Android NDK -verktyg inklusive gcc -kompilatorn och Eclipse
Intel C ++ Composer XE 2015 (kompilator 15.0) 25 juli 2014 Fullständigt C ++ 11 språkstöd; Ytterligare förbättringar av OpenMP 4.0 och Cilk Plus
Intel C ++ Composer XE 2015 Update 1 (kompilator 15.0.1) 30 oktober 2014 AVX-512 stöd; Japansk lokalisering
Intel C ++ 16.0 25 augusti 2015 Svitbaserad tillgänglighet (Intel Parallel Studio XE, Intel System Studio)
Intel C ++ 17.0 15 september 2016 Svitbaserad tillgänglighet (Intel Parallel Studio XE, Intel System Studio)
Intel C ++ 18.0 26 januari 2017 Svitbaserad tillgänglighet (Intel Parallel Studio XE, Intel System Studio)
Intel C ++ 19.0 3 april 2018 Svitbaserad tillgänglighet (Intel Parallel Studio XE, Intel System Studio)
Intel C ++ Compiler Classic 19.1 22 oktober 2020 Endast inledande Open MP 5.1 CPU
Intel oneAPI DPC ++ / C ++ kompilator 2021 8 december 2020 SYCL, DPC ++, initial Open MP 5.1
Intel Intel C ++ Compiler Classic 2021.1.2
Intel oneAPI DPC ++/C ++ Compiler 2021.1.2
16 december 2020 oneAPI DPC ++/C ++ introducerar stöd för GPU -avlastning

Se även

Referenser

externa länkar