Компилятор Intel C++
Другие имена |
|
---|---|
Разработчик(и) | Интел |
Стабильная версия | 2023.2.1 / 28 июля 2023 г [1] |
Репозиторий | |
Операционная система | Винда , Линукс |
Тип | Компилятор |
Лицензия | Бесплатная , проприетарная |
Веб-сайт | программное обеспечение |
Другие имена |
|
---|---|
Разработчик(и) | Интел |
Стабильная версия | 2021.10.0 Сборка 20230609_000000 / 28 июля 2023 г [2] |
Репозиторий | |
Операционная система | Windows , MacOS , Linux |
Тип | Компилятор |
Лицензия | Бесплатная , проприетарная |
Веб-сайт | программное обеспечение |
Компилятор Intel oneAPI DPC++/C++ и классический компилятор Intel C++ (устаревшие 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, а также графические процессоры, включая Intel Processor Graphics Gen9 и выше, Intel X и архитектура и программируемая карта ускорения Intel с FPGA Intel Arria 10 GX. [5] Как и Intel C++ Compiler Classic, он также поддерживает среды разработки Microsoft Visual Studio и Eclipse IDE , а также поддерживает многопоточность через Intel oneAPI Threading Building Blocks , OpenMP и собственные потоки.
ЦОД++ [6] [7] основан на спецификации SYCL от The Khronos Group. Он предназначен для того, чтобы позволить разработчикам повторно использовать код на разных аппаратных объектах (ЦП и ускорителях, таких как графические процессоры и FPGA) и выполнять пользовательскую настройку для конкретного ускорителя. 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++ 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 Gen9 и выше
- Интел Х и архитектура
- Программируемая карта ускорения Intel с Intel 10 GX FPGA
- Графические процессоры Intel для центров обработки данных, включая серии Flex и Max Series
- Intel FPGA
Компилятор Intel C++ 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 и набора инструментов Intel oneAPI IoT. [5]
Компилятор Intel C++ Classic доступен как отдельный компонент. [12] или как часть базового инструментария Intel oneAPI. [5]
Отладка [ править ]
Компилятор Intel предоставляет отладочную информацию, стандартную для обычных отладчиков ( DWARF 2 в Linux, аналогично gdb , и COFF для Windows). Флаги для компиляции с отладочной информацией: /Zi
в Windows и -g
на Линуксе. Отладка выполняется в 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 и т. д. В систему включена функция, определяющая, на каком типе процессора она работает. on и выбирает оптимальный путь кода для этого процессора. Это называется диспетчером ЦП. Однако диспетчер ЦП Intel не только проверяет, какой набор инструкций поддерживается ЦП, но также проверяет строку идентификатора поставщика. Если строка поставщика — «GenuineIntel», то используется оптимальный путь кода. Если ЦП не 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 Mobile Benchmark, пропущены части теста, которые показали повышенную производительность по сравнению с платформами 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 г. | Улучшенный параллелизатор и векторизатор, Streaming SIMD Extensions 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 . Интеграция VS2008 IDE в Windows. ОпенМП 3.0. Source Checker для статической памяти/параллельной диагностики. |
Компилятор 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, обновление 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 (настольная версия), поддержка gcc 4.7, поддержка инструкций Intel AVX 2, обновления существующих функций, направленные на повышение производительности приложений. [28] |
Intel C++ Composer XE 2013 SP1 (компилятор 14.0) | 4 сентября 2013 г. | Онлайн-установщик; поддержка сопроцессоров Intel Xeon Phi; предварительная версия Win32 поддерживает только графику Intel; улучшенная поддержка 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 С++ 16.0 | 25 августа 2015 г. | Доступность на основе пакета (Intel Parallel Studio XE, Intel System Studio) |
Intel С++ 17.0 | 15 сентября 2016 г. | Доступность на основе пакета (Intel Parallel Studio XE, Intel System Studio) |
Intel С++ 18.0 | 26 января 2017 г. | Доступность на основе пакета (Intel Parallel Studio XE, Intel System Studio) |
Intel С++ 19.0 | 3 апреля 2018 г. | Доступность на основе пакета (Intel Parallel Studio XE, Intel System Studio) |
Классический компилятор Intel C++ 19.1 | 22 октября 2020 г. | Только начальный процессор Open MP 5.1 |
Компилятор Intel oneAPI DPC++/C++ 2021 | 8 декабря 2020 г. | SYCL, DPC++, первоначальный Open MP 5.1 |
Классический компилятор Intel C++ 2021.1.2 Компилятор Intel oneAPI DPC++/C++ 2021.1.2 | 16 декабря 2020 г. | oneAPI DPC++/C++ представляет поддержку графического процессора разгрузки |
Классический компилятор Intel C++ 2022.2.1 Компилятор Intel oneAPI DPC++/C++ 2022.2.1 | 2 ноября 2022 г. | Поддержка новейших процессоров, графических процессоров и FPGA Intel; поддержка будущих ISO/IEC 9899:2023 ( C23 ) и ISO/IEC 14882:2023 ( C++23 языковых стандартов ). |
Классический компилятор Intel C++ 2023.0 Компилятор Intel oneAPI DPC++/C++ 2023.0 | 1 квартал 2023 г. [10] | Поддержка расширений Intel Advanced Matrix Extensions (Intel AMX), технологии Quick Assist (QAT), Intel AVX-512 с векторными инструкциями нейронной сети (VNNI) , bfloat16 , гибкость типов данных графического процессора, расширения матрицы Intel Xe (Intel XMX), векторный механизм Intel GPU, XE-Link |
См. также [ править ]
- Библиотека анализа данных
- Зона разработчиков Intel
- Интел-компилятор Фортрана
- Интегрированные примитивы производительности
- Библиотека математических ядер
- Intel Параллельная Студия
- СилкПлюс
- VTune
- Список компиляторов C
Ссылки [ править ]
- ^ Корпорация Intel (02.11.2022). «Компилятор Intel® oneAPI DPC++/C++» . программное обеспечение.intel.com . Интел . Проверено 1 декабря 2022 г.
- ^ Корпорация Intel (02.11.2022). «Классический компилятор Intel® C++» . программное обеспечение.intel.com . Интел . Проверено 1 декабря 2022 г.
- ^ «УВЕДОМЛЕНИЕ ОБ УСТАРЕВЕНИИ: Intel® C++ Compiler Classic» . сообщество.intel.com . 01.09.2022 . Проверено 13 февраля 2023 г.
- ^ Интел (2021 г.). «Компилятор Intel oneAPI DPC++/C++» . Intel.com . Интел . Проверено 9 февраля 2021 г.
- ^ Jump up to: Перейти обратно: а б с д и Корпорация Intel (2021 г.). «Компилятор Intel® oneAPI DPC++/C++» . программное обеспечение.intel.com . Интел . Проверено 9 февраля 2021 г.
- ^ «Компилятор Intel oneAPI DPC++ 2020-06 выпущен с новыми функциями» . www.phoronix.com . Проверено 17 декабря 2020 г.
- ^ Команда, редакция (16 декабря 2019 г.). «Гетерогенное вычислительное программирование: oneAPI и параллельный анализ данных C++» . внутриBIGDATA . Проверено 17 декабря 2020 г.
- ^ «Хронос делает шаг к широкому развертыванию SYCL с выпуском предварительной спецификации SYCL 2020» . Группа «Хронос» . 30 июня 2020 г. Проверено 17 декабря 2020 г.
- ^ «Компиляторы Intel C/C++ завершают внедрение LLVM» . Интел . Проверено 17 августа 2021 г.
- ^ Jump up to: Перейти обратно: а б Корпорация Intel (30 ноября 2022 г.). «Выпуск Intel oneAPI 2023: обзор инструментов» . www.intel.com . Интел . Проверено 1 декабря 2022 г.
- ^ Корпорация Intel (16 декабря 2020 г.). «Компилятор Intel® oneAPI DPC++/C++» . программное обеспечение.intel.com . Интел . Проверено 9 февраля 2021 г.
- ^ Корпорация Intel (16 декабря 2020 г.). «Классический компилятор Intel® C++» . программное обеспечение.intel.com . Интел . Проверено 9 февраля 2021 г.
- ^ «Ваш процессор, ваш компилятор и вы: случай секретной строки CPUID» . Архивировано из оригинала 05 января 2012 г. Проверено 11 декабря 2011 г.
- ^ Jump up to: Перейти обратно: а б «Функция Intel «калечить AMD»» . www.agner.org .
- ^ Грушка, Джоэл (29 июля 2008 г.). «Бюджетный матч недовольства: Нано против Атома» . Арс Техника.
- ^ «Мировое соглашение» (PDF) . скачать.intel.com .
- ^ «Intel и Федеральная торговая комиссия США достигли предварительного урегулирования» . Newsroom.intel.com. 04 августа 2010 г. Проверено 13 октября 2012 г.
- ^ «FTC и Intel достигли соглашения; Intel запрещена антиконкурентная практика» . Архивировано из оригинала 3 февраля 2012 г. Проверено 20 октября 2011 г.
- ^ «Уведомление об оптимизации» . Корпорация Интел . Проверено 11 декабря 2013 г.
- ^ «Аналитик: Тесты, показавшие, что смартфоны Intel превосходят ARM, были сфальсифицированы» . Регистр .
- ^ «Примечания к выпуску компилятора Intel® C++ и новые возможности» . Корпорация Интел . Проверено 27 апреля 2021 г.
- ^ " "Домашняя страница компиляторов Intel(R) C++ и Fortran" " .
- ^ " "История версий компилятора Intel(R) C/C++" " .
- ^ " "Домашняя страница компиляторов Intel(R) C++ и Fortran" " .
- ^ " "Компилятор Intel(R) C++ для Linux" " .
- ^ « Продукты Intel для разработки программного обеспечения » .
- ^ Это примечание приложено к выпуску, в котором был представлен Cilk Plus. Этот URL-адрес указывает на текущую документацию: http://software.intel.com/en-us/intel-composer-xe/.
- ^ Примечания к выпуску Intel C++ Composer XE 2013 [1] http://software.intel.com/en-us/articles/intel-c-composer-xe-2013-release-notes/