Intel C ++ - Compiler

Intel Oneapi DPC ++/C ++ Compiler
Andere Namen
  • ICX
  • ICPX
  • DPCPP
Entwickler (en) Intel
Stabile Version
2021.1.2 / 16. Dezember 2020; Vor 19 Monaten[1]
Repository
Betriebssystem Fenster, Linux
Typ Compiler
Lizenz Freeware, proprietär
Webseite Software.Tel.com/Inhalt/www/uns/en/sich entwickeln/Werkzeug/Oneapi/Komponenten/DPC-Kompiler.html
Intel C ++ Compiler Classic Classic
Andere Namen
  • ICC
  • ICPC
  • ICL
Entwickler (en) Intel
Stabile Version
2021.1.2 / 16. Dezember 2020; Vor 19 Monaten[2]
Repository
Betriebssystem Fenster, Mac OS, Linux
Typ Compiler
Lizenz Freeware, proprietär
Webseite Software.Tel.com/Inhalt/www/uns/en/sich entwickeln/Werkzeug/Oneapi/Komponenten/DPC-Kompiler.html

Intel Oneapi DPC ++/C ++ - Compiler und Intel C ++ Compiler Classic Classic sind Intel's C, C ++, Sycl, und Daten parallel C ++ (DPC ++) Compiler für Intel Processor-basierte Systeme, verfügbar für Fenster, Linux, und Mac OS Betriebssysteme.[3]

Überblick

Intel Oneapi DPC ++/C ++ - Compiler ist für Windows und Linux verfügbar und unterstützt das Kompilieren von C, C ++, SYCl und Daten parallel C ++ (DPC ++) Quelle, Targeting Intel IA-32, Intel 64 (AKA x86-64), Kern, Xeon, und Xeon skalierbar Prozessoren sowie GPUs einschließlich Intel -Prozessorgrafiken Gen9 und höher, Intel Xe Architektur und intel programmierbare Beschleunigungskarte mit Intel Arria 10 GX FPGA.[4] Wie Intel C ++ Compiler Classic unterstützt es auch die Microsoft Visual Studio und Eclipse IDE Entwicklungsumgebungen und unterstützt das Threading über Intel Oneapi Fadenbausteine, OpenMPund einheimische Fäden.

DPC ++[5][6] baut auf der Sycl Spezifikation aus der Khronos -Gruppe. Es ist so konzipiert, dass Entwickler Code über Hardwareziele (CPUs und Beschleuniger wie GPUs und FPGAs) hinweg wiederverwenden und eine benutzerdefinierte Abstimmung für einen bestimmten Beschleuniger durchführen können. DPC ++ umfasst C ++ 17 und SYCL-Sprachfunktionen und umfasst Open-Source-Community-Erweiterungen, die SYCL erleichtern. Viele dieser Erweiterungen wurden von der vorläufigen SYCL 2020 -Spezifikation übernommen[7] einschließlich einheitlicher gemeinsamer Speicher, Gruppenalgorithmen und Untergruppen.

Intel kündigte im August 2021 die vollständige Annahme von Llvm Für schnellere Bauzeiten und profitieren von der Unterstützung der neuesten C ++ - Standards.[8]

Der Intel C ++-Compiler Classic Classic ist für Windows, Linux und MacOS verfügbar und unterstützt das Zusammenstellen von C- und C ++-Quelle, die Intel IA-32, Intel 64 (X86-64), Core-, Xeon- und Xeon-skalierbare Prozessoren abzielen.[4] Es unterstützt die Microsoft Visual Studio und Eclipse IDE -Entwicklungsumgebungen. Der Intel C ++ - Compiler Classic unterstützt das Threading über Intel Oneapi -Threading -Bausteine, OpenMP und native Threads.

Architekturen

Intel Oneapi DPC ++/C ++-Compiler generiert Code für beide Allzwecke beider Intel x86-64 CPUs und GPUS:[4]

  • Prozessoren:
    • Legacy Intel IA-32 und Intel 64 (x86-64) Prozessoren
    • Intel -Kernprozessoren
    • Intel Xeon -Prozessorfamilie
    • Intel Xeon Skalierbare Prozessoren
  • GPUs:
    • Intel Processor Graphics Gen9 und höher
    • Intel xe die Architektur
    • Intel Programmierbare Beschleunigungskarte mit Intel 10 GX FPGA

Intel C ++ Compiler Classic Targets Allgemeines Intel x86-64 Architektur -CPUs einschließlich:[4]

  • Legacy Intel IA-32 und Intel 64 (x86-64) Prozessoren
  • Intel -Kernprozessoren
  • Intel Xeon -Prozessorfamilie
  • Intel Xeon Skalierbare Prozessoren

Toolkits

Der Intel Oneapi DPC ++/C ++ - Compiler ist entweder als eigenständige Komponente verfügbar[9] oder als Teil des Intel Oneapi -Basis -Toolkits, des Intel Oneapi HPC Toolkit und des Intel Oneapi IoT Toolkit.[4]

Der Intel C ++ - Compiler Classic ist entweder als eigenständige Komponente erhältlich[10] oder als Teil des Intel Oneapi -Basis -Toolkits.[4]

Dokumentation

Dokumentation finden Sie in der Intel Software Technische Dokumentationsseite.

Debuggen

Der Intel Compiler bietet Debugging -Informationen, die für die gemeinsamen Debugger Standard sind (Zwerg 2 unter Linux, ähnlich wie GDB, und Sarg für Windows). Die Flaggen, die mit Debugging -Informationen kompiliert werden müssen, sind /Zi unter Windows und -g unter Linux. Das Debuggen erfolgt unter Windows mit dem Visual Studio -Debugger und unter Verwendung von GDB unter Linux.

Während der Intel -Compiler einen GPROF -kompatibel generieren kann Profilerstellung Ausgabe, Intel liefert auch einen Kernelspiegel, systemweiter statistischer Profiler, der genannt wird Intel Vtune Profiler. Vtune kann von einer Befehlszeile oder über eine enthaltene GUI unter Linux oder Windows verwendet werden. Es kann auch in integriert werden Visual Studio unter Windows oder Finsternis unter Linux). Zusätzlich zum Vtune -Profiler gibt es Intel Advisor Dies ist auf Vektorisierungsoptimierung, Offload -Modellierung, Flussdiagrammdesign und Werkzeuge für das Fadengestaltung und Prototyping spezialisiert.

Intel bietet auch ein Tool für Speicher- und Threading -Fehlererkennung, den Intel Inspector XE namens Intel Inspector XE. In Bezug auf Speicherfehler hilft es zu erkennen Speicherlecks, Gedächtnisbeschäftigung, Zuweisung/Entladung von API-Fehlpaarungen und inkonsistenter Speicher-API-Verwendung. In Bezug auf Threading -Fehler hilft es bei der Erkennung von Datenrennen (sowohl Haufen und Stapeln), Deadlocks und Thread- und Synchronisationspfehlern.

Unterstützung für Nicht-Intel-Prozessoren

Frühere Versionen der C/C ++-Compiler von Intel wurden kritisiert, um weniger aggressiv für Nicht-Intel-Prozessoren zu optimieren. Zum Beispiel schrieb Steve Westfield in einem Artikel von 2005 auf der AMD -Website:[11]

Intel 8.1 C/C ++ Compiler verwendet den Flag -xn (für Linux) oder -qxn (für Windows), um die SSE2 -Erweiterungen zu nutzen. Für SSE3 ist der Compiler -Switch -xp (für Linux) und -qxp (für Windows). ... Mit den festgelegten -xn/-qxn- und -xp/-qxp -Flags überprüft es den Prozessoranbieterzeichenfolge -und wenn es sich nicht um "echtes Intel" handelt, stoppt es die Ausführung, ohne die Feature -Flags zu überprüfen. Autsch!

Der dänische Entwickler und der Gelehrte Agner Nebel schrieb im Jahr 2009:[12]

Der Intel Compiler und mehrere verschiedene Intel -Funktionsbibliotheken haben eine suboptimale Leistung auf AMD und ÜBER Prozessoren. Der Grund dafür ist, dass der Compiler oder die Bibliothek mehrere Versionen eines Code -Stücks erstellen können, die jeweils für einen bestimmten Prozessor optimiert sind und Befehlssatz, zum Beispiel SSE2, SSE3usw. Das System enthält eine Funktion, die erkennt, auf welcher Art von CPU es ausgeführt wird, und wählt den optimalen Codungspfad für diese CPU aus. Dies wird als CPU -Dispatcher bezeichnet. Der Intel CPU -Dispatcher prüft jedoch nicht nur, welcher Befehlssatz von der CPU unterstützt wird, sondern auch die Anbieter -ID -Zeichenfolge. Wenn die Anbieterzeichenfolge "echtes Inin" ist, wird der optimale Codepfad verwendet. Wenn die CPU nicht von Intel stammt, wird in den meisten Fällen in den meisten Fällen die langsamste Version des Codes ausgeführt, auch wenn die CPU vollständig mit einer besseren Version kompatibel ist.

Diese perversorspezifische CPU-Versand kann sich möglicherweise auf die Leistung von Software auswirken, die mit einem Intel-Compiler oder einer Intel-Funktionsbibliothek für Nicht-Intel-Prozessoren erstellt wurde, möglicherweise ohne Wissen des Programmierers. Dies hat angeblich zu irreführend geführt Benchmarks,[12] Einschließlich eines Vorfalls beim Ändern der CPUID von a Über Nano signifikant verbesserte Ergebnisse.[13] Im November 2009 erreichten AMD und Intel eine rechtliche Einigung über diese und verwandte Fragen,[14] Und Ende 2010 hat AMD a beigelegt US -amerikanische Bundeshandelskommission Kartellrechtsuntersuchung gegen Intel.[15]

Die FTC -Einigung beinhaltete eine Offenlegungsbestimmung, bei der Intel:[16]

Veröffentlichen Sie deutlich, dass der Compiler die Nicht-Intel-Prozessoren (wie die Entwürfe von AMD) diskriminiert und ihre Funktionen nicht vollständig verwendet und minderwertige Code erzeugt.

In Übereinstimmung mit dieser Entscheidung fügte Intel Haftungsausschlüsse zu seiner Compiler -Dokumentation hinzu:[17]

Die Compiler von Intel können für nicht-unplane Mikroprozessoren für Optimierungen, die für Intel-Mikroprozessoren nicht nur einzigartig sind, in gleichem Maße optimieren oder nicht. Diese Optimierungen umfassen SSE2-, SSE3- und SSSE3 -Befehlssätze und andere Optimierungen. Intel garantiert nicht die Verfügbarkeit, Funktionalität oder Wirksamkeit einer Optimierung für Mikroprozessoren, die nicht von Intel hergestellt werden. Mikroprozessorabhängige Optimierungen in diesem Produkt sind für die Verwendung mit Intel-Mikroprozessoren bestimmt. Bestimmte Optimierungen, die für Intel -Mikroarchitektur nicht spezifisch sind, sind für Intel -Mikroprozessoren reserviert. Weitere Informationen zu den spezifischen Anweisungssätzen finden Sie in den entsprechenden Produktnutzern und Referenzleitfäden.

Noch 2013 ein Artikel in Das Register behauptete, der vom Intel Compiler für die erstellte Objektcode Antutu Mobile Benchmark ließ Teile des Benchmarks aus, der im Vergleich zu Armplattformen eine erhöhte Leistung zeigte.[18]

Veröffentlichung Geschichte

Im Folgenden werden die Versionen des Intel C ++ - Compiler seit 2003 aufgeführt:[19]

Compiler -Version Veröffentlichungsdatum Haupt neue Funktionen
Intel C ++ Compiler 8.0 15. Dezember 2003 Vorkompilierte Header, Code-Coverage-Tools.
Intel C ++ Compiler 8.1 September 2004 AMD64 Architektur (für Linux).
Intel C ++ Compiler 9.0 14. Juni 2005 AMD64 Architektur (für Windows), Software-basierte spekulative Vorkomputationsoptimierung (SSP), verbesserte Loop-Optimierungsberichte.
Intel C ++ Compiler 10.0 5. Juni 2007 Verbesserter Parallelisierer und Vectorizer, Streaming -SIMD -Erweiterungen 4 (SSE4), neue und erweiterte Optimierungsberichte für erweiterte Schleifentransformationen, neue optimierte Ausnahmebehandlungsimplementierung.
Intel C ++ Compiler 10.1 7. November 2007 Neue OpenMP* -Kompatibilitäts -Laufzeitbibliothek: Wenn Sie das neue OpenMP -RTL verwenden, können Sie mit Bibliotheken und Objekten übereinstimmen, die von Visual C ++ erstellt wurden. Um die neuen Bibliotheken zu verwenden, müssen Sie die neue Option "-Qopenmp /qopenmp-lib: compat" unter Windows und "-openmp -openmp-lib: compat" unter Linux verwenden. Diese Version des Intel -Compilers unterstützt mehr Intrinsics von Visual Studio 2005.

VS2008 Support - Befehlszeile nur in dieser Version. Die IDE -Integration wurde noch nicht unterstützt.

Intel C ++ Compiler 11.0 November 2008 Initial C ++ 11 Unterstützung. VS2008 IDE -Integration unter Windows. OpenMP 3.0. Quellprüfung für statische Speicher-/Paralleldiagnostik.
Intel C ++ Compiler 11.1 23. Juni 2009 Unterstützung für die neueste Intel SSE SSE4.2, Avx und AES Anweisungen. Parallele Debugger -Erweiterung. Verbesserte Integration in Microsoft Visual Studio, Eclipse CDT 5.0 und Mac Xcode IDE.
Intel C ++ Composer XE 2011 bis zum Update 5 (Compiler 12.0) 7. November 2010 Cilk Plus Sprachverlängerungen, geführte Auto-Parallelismus, verbessert C ++ 11 Unterstützung.[20]
Intel C ++ Composer XE 2011 Update 6 und höher (Compiler 12.1) 8. September 2011 Cilk Plus Spracherweiterungen aktualisiert, um die Spezifikation Version 1.1 zu unterstützen und verfügbar auf Mac OS X Zusätzlich zu Windows und Linux, Fadenbausteine Aktualisiert, um Version 4.0 zu unterstützen, wurden Apple Blocks unter Mac OS X unterstützt, verbessert C ++ 11 Unterstützung inklusive Unterstützung für variadische Vorlagen, OpenMP 3.1 Unterstützung.
Intel C ++ Composer XE 2013 (Compiler 13.0) 5. September 2012 LINUX-basierte Unterstützung für Intel Xeon Phi Coprozessoren, Unterstützung für Microsoft Visual Studio 12 (Desktop), Unterstützung für GCC 4.7, Unterstützung für Intel AVX 2-Anweisungen, Aktualisierungen der vorhandenen Funktionen, die auf eine verbesserte Anwendungsleistung ausgerichtet sind.[21]
Intel C ++ Composer XE 2013 SP1 (Compiler 14.0) 4. September 2013 Online -Installateur; Unterstützung für Intel Xeon Phi Coprozessoren; Vorschau Win32 nur Unterstützung für Intel -Grafiken; Verbesserte C ++ 11 -Unterstützung
Intel C ++ Composer XE 2013 SP1 Update 1 (Compiler 14.0.1) 18. Oktober 2013 Japanische Lokalisierung von 14,0; Windows 8.1 und Xcode 5.0 Unterstützung
Intel C ++ - Compiler für Android (Compiler 14.0.1) 12. November 2013 Hosted unter Windows, Linux oder OS X, kompatibel mit Android NDK -Tools, einschließlich des GCC -Compilers und der Eclipse
Intel C ++ Composer XE 2015 (Compiler 15.0) 25. Juli 2014 Voller C ++ 11 Sprachunterstützung; Zusätzliche OpenMP 4.0- und Cilk -Plus -Verbesserungen
Intel C ++ Composer XE 2015 Update 1 (Compiler 15.0.1) 30. Oktober 2014 AVX-512 Unterstützung; Japanische Lokalisierung
Intel C ++ 16.0 25. August 2015 Suite-basierte Verfügbarkeit (Intel Parallel Studio XE, Intel System Studio)
Intel C ++ 17.0 15. September 2016 Suite-basierte Verfügbarkeit (Intel Parallel Studio XE, Intel System Studio)
Intel C ++ 18.0 26. Januar 2017 Suite-basierte Verfügbarkeit (Intel Parallel Studio XE, Intel System Studio)
Intel C ++ 19.0 3. April 2018 Suite-basierte Verfügbarkeit (Intel Parallel Studio XE, Intel System Studio)
Intel C ++ Compiler Classic 19.1 22. Oktober 2020 Nur anfänglicher offener MP 5.1 CPU
Intel Oneapi DPC ++ / C ++ Compiler 2021 8. Dezember 2020 SYCL, DPC ++, anfängliche offene MP 5.1
Intel Intel C ++ Compiler Classic 2021.1.2
Intel Oneapi DPC ++/C ++ Compiler 2021.1.2
16. Dezember 2020 Oneapi DPC ++/C ++ führt Unterstützung für die Unterstützung für GPU abladen

Siehe auch

Verweise

  1. ^ Intel Corporation (2020-12-16). "Intel® Oneapi DPC ++/C ++ Compiler". Software.intel.com. Intel. Abgerufen 2021-02-09.
  2. ^ Intel Corporation (2020-12-16). "Intel® C ++ Compiler Classic". Software.intel.com. Intel. Abgerufen 2021-02-09.
  3. ^ Intel (2021). "Intel Oneapi DPC ++/C ++ Compiler". Intel.com. Intel. Abgerufen 2021-02-09.
  4. ^ a b c d e f Intel Corporation (2021). "Intel® Oneapi DPC ++/C ++ Compiler". Software.intel.com. Intel. Abgerufen 2021-02-09.
  5. ^ "Intel Oneapi DPC ++ Compiler 2020-06 mit neuen Funktionen veröffentlicht - Phoronix". www.phoronix.com. Abgerufen 2020-12-17.
  6. ^ Team, Editorial (2019-12-16). "Heterogene Computerprogrammierung: Oneapi und Daten parallel C ++". InsideBigdata. Abgerufen 2020-12-17.
  7. ^ "Khronos Schritte in Richtung weit verbreiteter Bereitstellung von SYCL mit der Veröffentlichung der vorläufigen Spezifikation von SYCL 2020". Die Khronos -Gruppe. 2020-06-30. Abgerufen 2020-12-17.
  8. ^ "Intel C/C ++ Compiler vollständige Einführung von LLVM". Intel. Abgerufen 2021-08-17.
  9. ^ Intel Corporation (2020-12-16). "Intel® Oneapi DPC ++/C ++ Compiler". Software.intel.com. Intel. Abgerufen 2021-02-09.
  10. ^ Intel Corporation (2020-12-16). "Intel® C ++ Compiler Classic". Software.intel.com. Intel. Abgerufen 2021-02-09.
  11. ^ "Ihr Prozessor, Ihr Compiler und Sie: Der Fall der geheimen CPUID -Zeichenfolge". Archiviert von das Original Am 2012-01-05. Abgerufen 2011-12-11.
  12. ^ a b "Agners CPU -Blog - Intels" Cripple AMD "-Funktion". www.agner.org.
  13. ^ Hruska, Joel (29. Juli 2008). "Low-End Groll Match: Nano vs. Atom". ARS Technica.
  14. ^ "Vergleich" (PDF). download.intel.com.
  15. ^ "Intel und US -amerikanische Federal Trade Commission erreichen eine vorläufige Einigung". Newsroom.intel.com. 2010-08-04. Abgerufen 2012-10-13.
  16. ^ "FTC, Intel Reach -Siedlung; Intel aus wettbewerbswidrigen Praktiken verboten". Archiviert von das Original Am 2012-02-03. Abgerufen 2011-10-20.
  17. ^ "Optimierungsbekanntmachung". Intel Corporation. Abgerufen 11. Dezember 2013.
  18. ^ "Analysten: Tests, die Intel Smartphones schlagen, waren manipuliert". Das Register.
  19. ^ "Intel® C ++ Compiler -Versionsnotizen und neue Funktionen". Intel Corporation. Abgerufen 27. April 2021.
  20. ^ Diese Notiz ist an die Freisetzung beigefügt, in der Cilk Plus eingeführt wurde. Diese URL verweist auf die aktuelle Dokumentation: http://software.intel.com/en-us/intel-composer-xe/
  21. ^ Intel C ++ - Komponist XE 2013 Versionsnotizen[1] http://software.intel.com/en-us/articles/intel-composer-xe-2013-release-notes/

Externe Links