Подтвердить что ты не робот

Компилятор Intel С++ в качестве альтернативы Microsoft?

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

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

4b9b3361

Ответ 1

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

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

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

  • Поддержка диспетчеризации CPU, это действительно важно, поскольку это позволяет компилятору ориентировать процессор на оптимизированные команды при запуске программы. Насколько я могу судить, это единственный компилятор С++, который делает это, если только g++ не представила это еще в своем.

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

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

Чтобы обойти проблему диспетчера, можно заменить код диспетчера, созданный версией, работающей на процессорах AMD, можно, например, использовать Agner Fog's библиотека asmlib, которая заменяет созданную компилятором функцию диспетчера. Гораздо больше информации о проблеме диспетчеризации и более подробных технических объяснениях некоторых тем можно найти в Оптимизация программного обеспечения на С++ - также от Anger (что действительно стоит прочитать).

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

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

Ответ 2

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

Здесь что-то интересное:

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

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

Статья в OSnews здесь

Ответ 3

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

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

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

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

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

Ответ 4

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

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

Ответ 5

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

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

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

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

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

Ответ 6

Я использую компилятор Intel С++ с первой версии Intel Parallel Studio, и до сих пор я не испытывал соблазна вернуться. Здесь приведен обзор этих преимуществ, а также (некоторые очевидные) наблюдения.

<сильные > Преимущества

  • Параллелизация (векторизация, OpenMP, SSE) не имеет себе равных в других компиляторах.
  • Набор инструментов просто потрясающий. Конечно, я говорю о профилировании.
  • Включение оптимизированных библиотек, таких как блокирование потоковых построений (хорошо, поэтому Microsoft реплицировала TBB с помощью PPL), Библиотека математического ядра (стандартные подпрограммы и некоторые реализации имеют поддержку MPI (!!!)), встроенные примитивы производительности и т.д. Что замечательно также, что эти библиотеки постоянно развиваются.

Недостатки

  • Ускорение - это только Intel. Ну, дух! Меня это не волнует, потому что на стороне сервера все, что мне нужно сделать, это выбрать компьютеры Intel. У меня нет проблем с этим, некоторые люди могут.
  • Вы не можете делать OSS или что-то в этом роде, потому что формат файла проекта отличается. Да, вы можете иметь как VS, так и IPS форматы файлов, но это просто странно. Когда вы вносите изменения, вы будете потеряны при синхронизации параметров проекта. Кстати, компилятор Intel имеет в два раза больше опций.
  • Компилятор намного сложнее. Слишком легко установить несовместимые параметры проекта, которые дадут вам загадочную ошибку компиляции вместо приятного осмысленного объяснения.
  • Это стоит дополнительных денег поверх Visual Studio.

Нейтральные

  • Я думаю, что аргумент производительности больше не является сильным, потому что множество библиотек, таких как Thrust или Microsoft AMP, позволяют использовать GPGPU, который все равно будет перенаправлять ваш процессор.
  • Я рекомендую всем, кто заинтересован получить пробную версию и попробовать какой-то код, включая библиотеки. (И да, библиотеки хороши, но интерфейсы C-стиля могут свести вас с ума.)

Ответ 7

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

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

Ответ 8

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

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