Другие имена |
|
---|---|
Разработчик(и) | Интел |
Стабильный релиз | 2024.2.1 / 5 августа 2024 г. ( 2024-08-05 ) [1] |
Репозиторий |
|
Операционная система | Windows , Linux |
Тип | Компилятор |
Лицензия | Бесплатное программное обеспечение , фирменное |
Веб-сайт | Software.intel.com/content/www/us/en/develop/tools/oneapi/comComponents/dpc-compiler.html |
Другие имена |
|
---|---|
Разработчик(и) | Интел |
Стабильный релиз | 2021.10.0 Сборка 20230609_000000 / 28 июля 2023 г. ( 2023-07-28 ) [2] |
Репозиторий |
|
Операционная система | 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 C++ Compiler Classic предназначен для универсальных процессоров архитектуры Intel x86-64 , включая: [5]
Компилятор 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 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.0 | 1999 | Поддержка потоковой передачи SIMD, улучшенная оптимизация на основе профиля, векторизация [22] |
Компилятор Intel C/C++ 4.5 | 2000 | Поддержка OpenMP, Itanium [23] |
Компилятор Intel C/C++ 5.0 | 2001 | [24] |
Компилятор Intel C/C++ 6.0 | 2002 | Расширенная поддержка Linux, автоматическое распараллеливание [25] |
Компилятор Intel C++ 7.0 | 2003 | [26] |
Компилятор Intel C++ 8.0 | 15 декабря 2003 г. | Предварительно скомпилированные заголовки, инструменты покрытия кода. |
Компилятор Intel C++ 8.1 | Сентябрь 2004 г. | Архитектура AMD64 (для Linux). |
Компилятор Intel C++ 9.0 | 14 июня 2005 г. | Архитектура AMD64 (для Windows), программная оптимизация спекулятивных предварительных вычислений (SSP), улучшенные отчеты по оптимизации циклов. |
Компилятор Intel C++ 10.0 | 5 июня 2007 г. | Улучшенный распараллеливатель и векторизатор, потоковые расширения SIMD 4 ( SSE4 ), новые и улучшенные отчеты по оптимизации для расширенных преобразований циклов, новая оптимизированная реализация обработки исключений. |
Компилятор Intel C++ 10.1 | 7 ноября 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.1 | 23 июня 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.0 | 25 августа 2015 г. | Доступность на основе набора (Intel Parallel Studio XE, Intel System Studio) |
Intel C++ 17.0 | 15 сентября 2016 г. | Доступность на основе набора (Intel Parallel Studio XE, Intel System Studio) |
Intel C++ 18.0 | 26 января 2017 г. | Доступность на основе набора (Intel Parallel Studio XE, Intel System Studio) |
Intel C++ 19.0 | 3 апреля 2018 г. | Доступность на основе набора (Intel Parallel Studio XE, Intel System Studio) |
Классический компилятор Intel C++ 19.1 | 22 октября 2020 г. | Только начальный Open MP 5.1 CPU |
Компилятор Intel oneAPI DPC++ / C++ 2021 | 8 декабря 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 |
{{cite web}}
: CS1 maint: бот: исходный статус URL неизвестен ( ссылка ){{cite web}}
: CS1 maint: бот: исходный статус URL неизвестен ( ссылка ){{cite web}}
: CS1 maint: бот: исходный статус URL неизвестен ( ссылка ){{cite web}}
: CS1 maint: бот: исходный статус URL неизвестен ( ссылка ){{cite web}}
: CS1 maint: бот: исходный статус URL неизвестен ( ссылка )