>
>
Щупаем новый Intel Parallel Studio XE 2…

Андрей Карпов
Статей: 671

Щупаем новый Intel Parallel Studio XE 2011 beta

Вот, наконец, добрался попробовать Си++ компилятор, входящий в состав Intel Parallel Studio XE 2011 beta. Привожу краткий отчет о своих экспериментах.

Скачать и попробовать новую версию Parallel Studio можно здесь: Intel Parallel Studio XE 2011 for Windows* Beta Registration. Лицензия на beta-версию предоставляется на несколько месяцев, так что времени для экспериментов с инструментом вполне достаточно. Размер дистрибутива (for IA-32/Intel 64 - 1 GB) несколько удивляет, но в настоящее время, думаю, скачать его не будет проблематично.

Меня и коллег в Intel Parallel Studio интересовал собственно один единственный вопрос - сборка PVS-Studio. Хотелось посмотреть, получим ли мы прирост производительности? и каков будет этот прирост.

Меня не интересуют абстрактные маленькие программы-примеры, где быстро что-то считают математическое. Это слишком оторвано он реальности. А у нас в руках есть свой собственный совершенно реальный проект, представляющий собой работу над графами (деревом разбора).

Анализатор PVS-Studio имеет конфигурацию для сборки под Win32 и Win64. Нас кончено в первую очередь интересовала 64-битная сборка, но, к сожалению, с ней не заладилось. Мы используем Boost, который нам не удалось собрать для Win64. Возможно, мы что-то делали не правильно и руки у нас не там. Однако кажется причина все таки в дефекте компилятора, в результате чего на многих файлах мы получили сообщения вида:

c:\boost_1_44_0\libs\iostreams\src\file_descriptor.cpp(294) 
(col. 1): internal error: 0_1374
compilation aborted for libs\iostreams\src\file_descriptor.cpp 
(code 4)

С другими конфигурациями библиотеки Boost проблем не возникло:

Как видно Debug успешно собирается как в 32-битном, так и 64-битном режиме. К сожалению, Debug-версии нам не интересны, поэтому пришлось ограничиться сравнением Release Win32 и Release Win64.

Еще попутным мелким неприятным моментом оказалось, что Intel C++ до сих пор так и не научился поддерживать "nullptr", появившийся в C++0x. Пришлось сделать вставку в stdafx.h:

#ifdef __INTEL_COMPILER
  #define nullptr 0
#endif

А теперь самое интересное - замер скорости работы внутренних тестов. Простая перекомпиляция проекта ничего не дает, даже приводит к замедлению его работы:

Однако уже использование ключей /Qipo "Multifile interprocedural optimization" и /GA "Optimize for Windows Applications" дает заметный прирост производительности:

А вот использование опции /Qparallel (Tells the auto-parallelizer to generate multithreaded code for loops that can be safely executed in parallel) ничего заметного не дало. Но возможно мы просто "не умеем их готовить", и к своему стыду были не заинтересованы продолжать изучение. Не интересно по той причине, что более подробные эксперименты с возможностями оптимизации имеют смысл для нас только относительно 64-битной версии. Надеемся релиз Intel Parallel Studio будет более стабильный и тогда можно будет продолжить. Однако уже видно, что можно получить существенный выигрыш от смены компилятора. Рекомендую попробовать.