Компилятор C++ Intel как альтернатива Microsoft?

Кто-либо здесь использует компилятор C++ Intel вместо компилятора Visual C++ Microsoft?

Мне очень было бы интересно слышать Ваш опыт об интеграции, производительности и время изготовления.

28
задан avakar 30 December 2009 в 20:11
поделиться

7 ответов

Компилятор Intel - один из самых продвинутых доступных компиляторов C ++, он имеет ряд преимуществ перед, например, компилятором Microsoft Visual C ++ и один серьезный недостаток. К преимуществам относятся:

  • Очень хорошая поддержка SIMD, насколько мне удалось выяснить, это компилятор, который лучше всего поддерживает инструкции SIMD.

  • Поддерживает как автоматическое распараллеливание (многоядерная оптимизация), так и ручное (через OpenMP), и делает то и другое очень хорошо.

  • Поддержка диспетчеризации ЦП, это действительно важно, поскольку позволяет компилятору настраивать процессор для оптимизированных инструкций при выполнении программы. Насколько я могу судить, это единственный доступный компилятор C ++, который делает это, если только G ++ не представил это в своих файлах.

  • Он часто поставляется с оптимизированными библиотеками, такими как математические библиотеки и библиотеки изображений.

Однако у него есть один серьезный недостаток, диспетчер, как упоминалось выше, работает только на процессорах Intel, это означает, что расширенные оптимизации будут исключены для процессоров AMD. Для этого есть обходной путь, но это по-прежнему серьезная проблема с компилятором.

Чтобы обойти проблему диспетчера, можно заменить созданный код диспетчера версией, работающей на процессорах AMD, например, можно использовать библиотеку asmlib Агнера Фога , которая заменяет созданный компилятором диспетчерская функция. Более подробную информацию о проблеме диспетчеризации и более подробные технические объяснения некоторых тем можно найти в статье Оптимизация программного обеспечения в C ++ - также от Anger (которую действительно стоит прочитать).

От себя лично я использовал компилятор Intel c ++ Compiler с Visual Studio 2005, где он работал безупречно, у меня не было никаких проблем с языковыми расширениями Microsoft, похоже, я понимал те, которые я использовал, но, возможно, те, которые упомянут Джон Кнеллер отличался от тех, что были у меня в моих проектах.

Хотя мне нравится компилятор Intel, в настоящее время я работаю с компилятором Microsoft C ++ просто из-за дополнительных финансовых вложений, необходимых для компилятора Intel. Я бы использовал компилятор Intel только как альтернативу Microsoft или компилятору GNU, если бы производительность была критичной для моего проекта и у меня была финансовая часть в порядке;)

27
ответ дан 28 November 2019 в 03:15
поделиться

Я пробовал использовать Intel C++ на своей предыдущей работе. IIRC, он действительно генерировал более эффективный код за счет времени компиляции. Но мы не использовали его в производстве по причинам, которые я не помню.

Одним из важных отличий от MSVC является то, что компилятор Intel поддерживает C99.

.
3
ответ дан 28 November 2019 в 03:15
поделиться

Анекдотически, я обнаружил, что компилятор Intel падает чаще, чем Visual C++. Его диагностика немного более тщательна и понятна, чем диагностика VC. Таким образом, возможно, что компилятор выдаст диагностики, которые не были выданы с ВК, или же произойдет падение там, где не было ВК, что сделает ваше преобразование более дорогим.

Однако я считаю, что компилятор Intel позволяет связываться с такими запусками Microsoft, как CRT, что снижает стоимость перехода.

Если вы взаимодействуете с управляемым кодом, то вам, наверное, стоит придерживаться компилятора Microsoft.

Последние компиляторы Intel достигают значительно лучшей производительности на тяжелых бенчмарках с плавающей точкой, и схожи с Visual C++ на целочисленных тяжелых бенчмарках. Однако, в зависимости от программы и от того, используете ли вы генерацию линковочного кода или оптимизацию под профиль или нет, она сильно различается. Если производительность критична для вас, то перед выбором вам необходимо провести бенчмаркинг вашего приложения. Я бы только сказал, что если вы занимаетесь научными вычислениями, то, наверное, стоит потратить время на исследование.

Intel предоставляет вам месячную бесплатную пробную версию своего компилятора, так что вы можете попробовать это самостоятельно.

.
3
ответ дан 28 November 2019 в 03:15
поделиться

Последний раз компания, в которой я работаю, сравнивала их примерно год назад (может быть, 2). Компилятор Intel генерировал более быстрый код, как правило, только чуть-чуть быстрее, но в некоторых случаях - совсем чуть-чуть.

Но он не мог справиться с некоторыми расширениями языка MS, от которых мы зависели, поэтому в итоге мы остановились на MS. Это был VS 2005, с которым мы сравнивали его. И я забиваю себе голову, чтобы вспомнить, с каким именно расширением MS компилятор Intel не мог справиться. Я вернусь и отредактирую этот пост, если смогу вспомнить.

2
ответ дан 28 November 2019 в 03:15
поделиться

Я имел только один опыт работы с этим компилятором, компилируя STLPort. На его компиляцию ушло около 5 минут в MSVC, а компиляция ICC длилась более часа. Похоже, что их компиляция шаблонов очень медленная. Кроме того, я слышал о нем только хорошее.

Вот что интересно:

Компилятор Intel может производить разные версии кода, с каждой версия, оптимизированная под конкретный процессор и/или набор команд (SSE2, SSE3 и т.д.). Система обнаруживает на каком процессоре он работает и какой выбирает. оптимальный путь к коду; соответственно Диспетчер процессора, как он называется.

" Однако, диспетчер Intel CPU не только проверяет, какая инструкция набор поддерживается процессором, он также проверяет идентификационную строку поставщика", Фог детали: "Если строка продавца говорит "GenuineIntel" затем использует оптимальный путь кода. Если процессор не от Intel, тогда, в большинстве случаев, это будет работать самая медленная версия кода, даже если центральный процессор полностью совместимый с лучшей версией"

OSnews article here

5
ответ дан 28 November 2019 в 03:15
поделиться

Компилятор Intel C++ имеет поддержку AMAZING (человекоподобный). Разговор с Microsoft может занять буквально несколько дней. Моя нетривиальная проблема была решена через чат менее чем за 10 минут (включая время проверки членства).

EDIT: Я говорил с Microsoft о проблемах в их продуктах, таких как Office 2007, даже получил сообщение об ошибке. Хотя в конце концов мне это удалось, общий размер и сложность их продуктов и иерархии организации просто пугает.

2
ответ дан 28 November 2019 в 03:15
поделиться

Я не использую компилятор Intel C++ на работе / персональный (хотелось бы).

Я бы использовал его, потому что он имеет:

  • отличную поддержку встроенного ассемблера. Intel C++ поддерживает как Intel, так и AT&T (GCC) синтаксис ассемблера, для платформ x86 и x64. Visual C++ может работать только с синтаксисом ассемблера Intel и только для x86.

  • Поддержка наборов команд SSE3, SSSE3 и SSE4. Visual C++ имеет поддержку SSE и SSE2.

  • Основан на EDG C++, который имеет полную реализацию стандарта ISO/IEC 14882:2003. Это означает, что вы можете использовать / изучать каждую возможность C++.

5
ответ дан 28 November 2019 в 03:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: