Компилятор Intel C++

Компилятор
ИнтелoneAPIКомпилятор DPC++/C++
Другие имена
  • icx
  • icpx
  • dpcpp (icpx -fsycl)
Разработчик(и)Интел
Стабильный релиз
2024.2.1 / 5 августа 2024 г. ; 3 месяца назад [1] ( 2024-08-05 )
Репозиторий
  • github.com/intel/llvm
Операционная системаWindows , Linux
ТипКомпилятор
ЛицензияБесплатное программное обеспечение , фирменное
Веб-сайтSoftware.intel.com/content/www/us/en/develop/tools/oneapi/comComponents/dpc-compiler.html
Классический компилятор Intel C++
Другие имена
  • icl
  • icpc
  • мкк
Разработчик(и)Интел
Стабильный релиз
2021.10.0 Сборка 20230609_000000 / 28 июля 2023 г. ; 15 месяцев назад [2] ( 2023-07-28 )
Репозиторий
  • github.com/intel/llvm
Операционная системаWindows , MacOS , Linux
ТипКомпилятор
ЛицензияБесплатное программное обеспечение , фирменное
Веб-сайтSoftware.intel.com/content/www/us/en/develop/tools/oneapi/comComponents/dpc-compiler.html

Intel oneAPI DPC++/C++ Compiler и Intel C++ Compiler Classic (устаревшие icc и icl [3] входят в набор инструментов Intel OneAPI HPC) — это компиляторы Intel C , C ++ , SYCL и Data Parallel C ++ ( DPC ++ ) для систем на базе процессоров Intel, доступные для операционных систем Windows , Linux и macOS . [4]

Обзор

Компилятор Intel oneAPI DPC++/C++ доступен для Windows и Linux и поддерживает компиляцию исходного кода C, C++, SYCL и Data Parallel C++ (DPC++) , ориентированного на процессоры Intel IA-32 , Intel 64 (он же x86-64 ), Core , Xeon и Xeon Scalable , а также графические процессоры, включая Intel Processor Graphics Gen9 и выше, архитектуру Intel X e и Intel Programmable Acceleration Card с FPGA Intel Arria 10 GX. [5] Как и Intel C++ Compiler Classic, он также поддерживает среды разработки Microsoft Visual Studio и Eclipse IDE , а также поддерживает потоки с помощью Intel oneAPI Threading Building Blocks , OpenMP и собственные потоки.

DPC++ [6] [7] основывается на спецификации SYCL от Khronos Group. Она разработана для того, чтобы позволить разработчикам повторно использовать код на разных аппаратных устройствах (процессорах и ускорителях, таких как графические процессоры и ПЛИС) и выполнять индивидуальную настройку для конкретного ускорителя. DPC++ включает в себя функции языка C++17 и SYCL и включает в себя расширения сообщества с открытым исходным кодом, которые упрощают использование SYCL. Многие из этих расширений были приняты предварительной спецификацией SYCL 2020 [8], включая унифицированную общую память, групповые алгоритмы и подгруппы.

В августе 2021 года компания Intel объявила о полном внедрении LLVM для ускорения сборки и получения преимуществ от поддержки новейших стандартов C++. [9]

Intel C++ Compiler Classic доступен для Windows, Linux и macOS и поддерживает компиляцию исходного кода C и C++, ориентированного на процессоры Intel IA-32, Intel 64 (x86-64), Core, Xeon и Xeon Scalable. [5] Он поддерживает среды разработки Microsoft Visual Studio и Eclipse IDE. Intel C++ Compiler Classic поддерживает потоки через Intel oneAPI Threading Building Blocks, OpenMP и собственные потоки.

Архитектура

По данным Intel [10] , начиная с версии 2023.0, компилятор Intel oneAPI DPC++/C++ поддерживает все текущие универсальные процессоры и графические процессоры Intel x86-64, включая:

  • Процессоры:
    • Устаревшие процессоры Intel IA-32 и Intel 64 (x86-64)
    • Процессоры Intel Core
    • Семейство процессоров Intel Xeon
    • Масштабируемые процессоры Intel Xeon
    • Процессор Intel Xeon серии Max
  • Графические процессоры:
    • Процессор Intel Graphics Gen9 и выше
    • Архитектура Intel Xe
    • Программируемая карта ускорения Intel с Intel 10 GX FPGA
    • Графические процессоры Intel Data Center, включая серии Flex и Max
  • ПЛИС Intel

Intel C++ Compiler Classic предназначен для универсальных процессоров архитектуры Intel x86-64 , включая: [5]

  • Устаревшие процессоры Intel IA-32 и Intel 64 (x86-64)
  • Процессоры Intel Core
  • Семейство процессоров Intel Xeon
  • Масштабируемые процессоры Intel Xeon

Наборы инструментов

Компилятор Intel oneAPI DPC++/C++ доступен либо как отдельный компонент [11] , либо как часть Intel oneAPI Base Toolkit, Intel oneAPI HPC Toolkit и Intel oneAPI IoT Toolkit. [5]

Intel C++ Compiler Classic доступен как отдельный компонент [12] или как часть Intel oneAPI Base Toolkit. [5]

Отладка

Компилятор Intel предоставляет отладочную информацию, которая является стандартной для обычных отладчиков ( DWARF 2 в Linux, аналогичный gdb , и COFF для Windows). Флаги для компиляции с отладочной информацией есть /Ziв Windows и -gв Linux. Отладка выполняется в Windows с помощью отладчика Visual Studio, а в Linux — с помощью gdb.

В то время как компилятор Intel может генерировать совместимый с gprof вывод профилирования , Intel также предоставляет статистический профилировщик уровня ядра, который называется Intel VTune Profiler . VTune можно использовать из командной строки или через включенный графический интерфейс в Linux или Windows. Его также можно интегрировать в Visual Studio в Windows или Eclipse в Linux). В дополнение к профилировщику VTune есть Intel Advisor , который специализируется на оптимизации векторизации, моделировании разгрузки, проектировании потоковых графов и инструментах для проектирования потоков и прототипирования.

Intel также предлагает инструмент для обнаружения ошибок памяти и потоков, который называется Intel Inspector XE. Что касается ошибок памяти, он помогает обнаруживать утечки памяти , повреждение памяти, выделение/отмену выделения несоответствий API и несогласованное использование API памяти. Что касается ошибок потоков, он помогает обнаруживать гонки данных (как кучи, так и стека), взаимоблокировки и ошибки API потоков и синхронизации.

Поддержка процессоров не Intel

Предыдущие версии компиляторов Intel C/C++ критиковались за менее агрессивную оптимизацию для процессоров сторонних производителей; например, Стив Уэстфилд написал в статье 2005 года на сайте AMD: [13]

Компилятор Intel 8.1 C/C++ использует флаг -xN (для Linux) или -QxN (для Windows) для использования расширений SSE2. Для SSE3 переключатель компилятора -xP (для Linux) и -QxP (для Windows). ... При установке флагов -xN/-QxN и -xP/-QxP он проверяет строку поставщика процессора — и если это не «GenuineIntel», он останавливает выполнение, даже не проверив флаги функций. Ой!

Датский разработчик и ученый Агнер Фог писал в 2009 году: [14]

Компилятор Intel и несколько различных библиотек функций Intel имеют неоптимальную производительность на процессорах AMD и VIA . Причина в том, что компилятор или библиотека могут создавать несколько версий фрагмента кода, каждая из которых оптимизирована для определенного процессора и набора инструкций , например SSE2 , SSE3 и т. д. Система включает функцию, которая определяет, на каком типе ЦП она работает, и выбирает оптимальный путь кода для этого ЦП. Это называется диспетчером ЦП. Однако диспетчер ЦП Intel не только проверяет, какой набор инструкций поддерживается ЦП, он также проверяет строку идентификатора поставщика. Если строка поставщика — «GenuineIntel», то он использует оптимальный путь кода. Если ЦП не от Intel, то в большинстве случаев он будет запускать самую медленную возможную версию кода, даже если ЦП полностью совместим с лучшей версией.

Эта зависящая от поставщика диспетчеризация ЦП может потенциально повлиять на производительность программного обеспечения, созданного с помощью компилятора Intel или библиотеки функций Intel на процессорах не Intel, возможно, без ведома программиста. Это якобы привело к вводящим в заблуждение бенчмаркам , [14] включая один инцидент, когда изменение CPUID VIA Nano значительно улучшило результаты. [15] В ноябре 2009 года AMD и Intel достигли юридического соглашения по этому и связанным с ним вопросам, [16] а в конце 2010 года AMD урегулировала антимонопольное расследование Федеральной торговой комиссии США против Intel. [17]

Соглашение FTC включало положение о раскрытии информации, согласно которому Intel должна: [18]

четко заявить, что его компилятор дискриминирует процессоры других производителей (например, разработки AMD), не используя в полной мере их возможности и создавая некачественный код.

В соответствии с этим постановлением Intel добавила отказ от ответственности в документацию своего компилятора: [19]

Компиляторы Intel могут оптимизировать или не оптимизировать в той же степени для микропроцессоров сторонних производителей для оптимизаций, которые не являются уникальными для микропроцессоров Intel. Эти оптимизации включают наборы инструкций SSE2, SSE3 и SSSE3 и другие оптимизации. Intel не гарантирует доступность, функциональность или эффективность любой оптимизации на микропроцессорах, не произведенных Intel. Зависящие от микропроцессора оптимизации в этом продукте предназначены для использования с микропроцессорами Intel. Некоторые оптимизации, не специфичные для микроархитектуры Intel, зарезервированы для микропроцессоров Intel. Пожалуйста, обратитесь к соответствующим руководствам пользователя и справочным руководствам продукта для получения дополнительной информации относительно конкретных наборов инструкций, охватываемых этим уведомлением.

Еще в 2013 году в статье в The Register утверждалось, что объектный код, созданный компилятором Intel для мобильного бенчмарка AnTuTu , не включал части бенчмарка, которые показывали повышенную производительность по сравнению с платформами ARM. [20]

История релизов

Ниже приведен список версий компилятора Intel C++ с 1999 года: [21]

Версия компилятораДата выпускаОсновные новые функции
Компилятор Intel C/C++ 4.01999Поддержка потоковой передачи SIMD, улучшенная оптимизация на основе профиля, векторизация [22]
Компилятор Intel C/C++ 4.52000Поддержка OpenMP, Itanium [23]
Компилятор Intel C/C++ 5.02001[24]
Компилятор Intel C/C++ 6.02002Расширенная поддержка Linux, автоматическое распараллеливание [25]
Компилятор Intel C++ 7.02003[26]
Компилятор Intel C++ 8.015 декабря 2003 г.Предварительно скомпилированные заголовки, инструменты покрытия кода.
Компилятор Intel C++ 8.1Сентябрь 2004 г.Архитектура AMD64 (для Linux).
Компилятор Intel C++ 9.014 июня 2005 г.Архитектура AMD64 (для Windows), программная оптимизация спекулятивных предварительных вычислений (SSP), улучшенные отчеты по оптимизации циклов.
Компилятор Intel C++ 10.05 июня 2007 г.Улучшенный распараллеливатель и векторизатор, потоковые расширения SIMD 4 ( SSE4 ), новые и улучшенные отчеты по оптимизации для расширенных преобразований циклов, новая оптимизированная реализация обработки исключений.
Компилятор Intel C++ 10.17 ноября 2007 г.Новая библиотека времени выполнения совместимости OpenMP*: если вы используете новую OpenMP RTL, вы можете смешивать и сопоставлять с библиотеками и объектами, созданными Visual C++. Чтобы использовать новые библиотеки, вам нужно использовать новую опцию "-Qopenmp /Qopenmp-lib:compat" в Windows и "-openmp -openmp-lib:compat" в Linux. Эта версия компилятора Intel поддерживает больше встроенных функций из Visual Studio 2005.

Поддержка VS2008: только командная строка в этом выпуске. Интеграция IDE пока не поддерживалась.

Компилятор Intel C++ 11.0Ноябрь 2008 г.Начальная поддержка C++11 . Интеграция с IDE VS2008 в Windows. OpenMP 3.0. Проверка исходного кода для статической диагностики памяти/параллельного кода.
Компилятор Intel C++ 11.123 июня 2009 г.Поддержка новейших инструкций Intel SSE SSE4.2 , AVX и AES . Расширение параллельного отладчика. Улучшенная интеграция в Microsoft Visual Studio, Eclipse CDT 5.0 и Mac Xcode IDE.
Intel C++ Composer XE 2011 до обновления 5 (компилятор 12.0)7 ноября 2010 г.Расширения языка Cilk Plus , управляемый автоматический параллелизм, улучшенная поддержка C++11 . [27]
Intel C++ Composer XE 2011 Update 6 и выше (компилятор 12.1)8 сентября 2011 г.Расширения языка Cilk Plus обновлены для поддержки спецификации версии 1.1 и доступны в Mac OS X в дополнение к Windows и Linux, Threading Building Blocks обновлены для поддержки версии 4.0, блоки Apple поддерживаются в Mac OS X, улучшена поддержка C++11, включая поддержку шаблонов Variadic, поддержка OpenMP 3.1.
Intel C++ Composer XE 2013 (компилятор 13.0)5 сентября 2012 г.Поддержка сопроцессоров Intel Xeon Phi на базе Linux, поддержка Microsoft Visual Studio 12 (Desktop), поддержка gcc 4.7, поддержка инструкций Intel AVX 2, обновления существующей функциональности, направленные на улучшение производительности приложений. [28]
Intel C++ Composer XE 2013 SP1 (компилятор 14.0)4 сентября 2013 г.Онлайн-установщик; поддержка сопроцессоров Intel Xeon Phi; предварительная поддержка графики Intel только для Win32; улучшенная поддержка C++11
Intel C++ Composer XE 2013 SP1 Обновление 1 (компилятор 14.0.1)18 октября 2013 г.Японская локализация 14.0; поддержка Windows 8.1 и Xcode 5.0
Компилятор Intel C++ для Android (компилятор 14.0.1)12 ноября 2013 г.Размещено на Windows, Linux или OS X, совместимо с инструментами Android NDK, включая компилятор gcc и Eclipse
Intel C++ Composer XE 2015 (компилятор 15.0)25 июля 2014 г.Полная поддержка языка C++11; Дополнительные улучшения OpenMP 4.0 и Cilk Plus
Intel C++ Composer XE 2015 Обновление 1 (компилятор 15.0.1)30 октября 2014 г.Поддержка AVX-512 ; японская локализация
Intel C++ 16.025 августа 2015 г.Доступность на основе набора (Intel Parallel Studio XE, Intel System Studio)
Intel C++ 17.015 сентября 2016 г.Доступность на основе набора (Intel Parallel Studio XE, Intel System Studio)
Intel C++ 18.026 января 2017 г.Доступность на основе набора (Intel Parallel Studio XE, Intel System Studio)
Intel C++ 19.03 апреля 2018 г.Доступность на основе набора (Intel Parallel Studio XE, Intel System Studio)
Классический компилятор Intel C++ 19.122 октября 2020 г.Только начальный Open MP 5.1 CPU
Компилятор Intel oneAPI DPC++ / C++ 20218 декабря 2020 г.SYCL, DPC++, начальный Open MP 5.1
Компилятор Intel C++ Classic 2021.1.2
Компилятор Intel oneAPI DPC++/C++ 2021.1.2
16 декабря 2020 г.oneAPI DPC++/C++ представляет поддержку разгрузки графического процессора
Компилятор Intel C++ Classic 2022.2.1
Компилятор Intel oneAPI DPC++/C++ 2022.2.1
2 ноября 2022 г.Поддержка новейших процессоров Intel, графических процессоров и ПЛИС;
поддержка будущих языковых стандартов ISO/IEC 9899:2023 ( C23 ) и ISO/IEC 14882:2023 ( C++23 )
Компилятор Intel C++ Classic 2023.0
Компилятор Intel oneAPI DPC++/C++ 2023.0
1 квартал 2023 г. [10]Поддержка Intel Advanced Matrix Extensions (Intel AMX), Quick Assist Technology (QAT), Intel AVX-512 с векторными инструкциями нейронной сети (VNNI) , bfloat16гибкость типов данных GPU, расширения матрицы Intel Xe (Intel XMX), векторный движок Intel GPU, XE-Link

Смотрите также

Ссылки

  1. ^ Корпорация Intel (2022-11-02). "Компилятор Intel® oneAPI DPC++/C++". software.intel.com . Intel . Получено 2024-10-11 .
  2. ^ Корпорация Intel (2022-11-02). "Intel® C++ Compiler Classic". software.intel.com . Intel . Получено 2022-12-01 .
  3. ^ "УВЕДОМЛЕНИЕ ОБ УСТАРЕНИИ: Intel® C++ Compiler Classic". community.intel.com . 2022-09-01 . Получено 2023-02-13 .
  4. ^ Intel (2021). "Компилятор Intel oneAPI DPC++/C++". Intel.com . Intel . Получено 2021-02-09 .
  5. ^ abcde Intel Corporation (2021). "Intel® oneAPI DPC++/C++ Compiler". software.intel.com . Intel . Получено 2021-02-09 .
  6. ^ "Выпущен компилятор Intel oneAPI DPC++ 2020-06 с новыми функциями". www.phoronix.com . Получено 17.12.2020 .
  7. ^ Команда, редакция (2019-12-16). "Программирование гетерогенных вычислений: oneAPI и параллельный C++ данных". insideBIGDATA . Получено 2020-12-17 .
  8. ^ "Khronos делает шаги к широкому развертыванию SYCL с выпуском предварительной спецификации SYCL 2020". Группа Khronos . 2020-06-30 . Получено 2020-12-17 .
  9. ^ "Компиляторы Intel C/C++ полностью приняли LLVM". Intel . Получено 2021-08-17 .
  10. ^ ab Intel Corporation (30 ноября 2022 г.). "Intel oneAPI 2023 Release: Preview the Tools". www.intel.com . Intel . Получено 01.12.2022 .
  11. ^ Корпорация Intel (16.12.2020). "Компилятор Intel® oneAPI DPC++/C++". software.intel.com . Intel . Получено 09.02.2021 .
  12. ^ Корпорация Intel (16.12.2020). "Intel® C++ Compiler Classic". software.intel.com . Intel . Получено 09.02.2021 .
  13. ^ "Ваш процессор, ваш компилятор и вы: дело о секретной строке CPUID". Архивировано из оригинала 2012-01-05 . Получено 2011-12-11 .
  14. ^ ab "Функция Intel "калека AMD"". www.agner.org .
  15. Hruska, Joel (29 июля 2008 г.). «Схватка на низком уровне: Nano против Atom». Ars Technica.
  16. ^ "Соглашение об урегулировании" (PDF) . download.intel.com .
  17. ^ "Intel и Федеральная торговая комиссия США достигли предварительного соглашения". Newsroom.intel.com. 2010-08-04 . Получено 2012-10-13 .
  18. ^ "FTC, Intel достигли соглашения; Intel запрещено заниматься антиконкурентной практикой". Архивировано из оригинала 2012-02-03 . Получено 2011-10-20 .
  19. ^ "Уведомление об оптимизации". Intel Corporation . Получено 11 декабря 2013 г.
  20. ^ "Аналитик: Тесты, показывающие, что смартфоны Intel превосходят ARM, были сфальсифицированы". The Register .
  21. ^ "Заметки о выпуске и новые функции компилятора Intel® C++". Intel Corporation . Получено 27 апреля 2021 г.
  22. ^ ""Домашняя страница компиляторов Intel(R) C++ и Fortran"". Архивировано из оригинала 1999-10-04 . Получено 2024-03-08 .{{cite web}}: CS1 maint: бот: исходный статус URL неизвестен ( ссылка )
  23. ^ ""История ревизий компилятора Intel(R) C/C++"". Архивировано из оригинала 2000-08-16 . Получено 2024-03-08 .{{cite web}}: CS1 maint: бот: исходный статус URL неизвестен ( ссылка )
  24. ^ ""Домашняя страница компиляторов Intel(R) C++ и Fortran"". Архивировано из оригинала 2001-10-19 . Получено 2024-03-08 .{{cite web}}: CS1 maint: бот: исходный статус URL неизвестен ( ссылка )
  25. ^ ""Intel(R) C++ Compiler for Linux"". Архивировано из оригинала 2002-10-03 . Получено 2024-03-08 .{{cite web}}: CS1 maint: бот: исходный статус URL неизвестен ( ссылка )
  26. ^ ""Intel Software Development Products"". Архивировано из оригинала 2003-02-01 . Получено 2024-03-08 .{{cite web}}: CS1 maint: бот: исходный статус URL неизвестен ( ссылка )
  27. ^ Эта заметка прилагается к выпуску, в котором был представлен Cilk Plus. Этот URL указывает на текущую документацию: http://software.intel.com/en-us/intel-composer-xe/
  28. ^ Заметки о выпуске Intel C++ Composer XE 2013 [1] http://software.intel.com/en-us/articles/intel-c-composer-xe-2013-release-notes/
  • Компилятор Intel oneAPI DPC++/C++
  • Загрузки отдельных компонентов и версии времени выполнения
  • Наборы инструментов Intel oneAPI
  • Сайт технической документации по программному обеспечению Intel
Взято с "https://en.wikipedia.org/w/index.php?title=Intel_C%2B%2B_Compiler&oldid=1250615881"