company_banner

Щупаем новый 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 проблем не возникло:
    Intel Parallel Studio XE 2011 beta, Boost
    Как видно Debug успешно собирается как в 32-битном, так и 64-битном режиме. К сожалению, Debug-версии нам не интересны, поэтому пришлось ограничиться сравнением Release Win32 и Release Win64.

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

    А теперь самое интересное — замер скорости работы внутренних тестов. Простая перекомпиляция проекта ничего не дает, даже приводит к замедлению его работы:
    Picture 2
    Однако уже использование ключей /Qipo «Multifile interprocedural optimization» и /GA «Optimize for Windows Applications» дает заметный прирост производительности:
    Picture 3
    А вот использование опции /Qparallel (Tells the auto-parallelizer to generate multithreaded code for loops that can be safely executed in parallel) ничего заметного не дало. Но возможно мы просто «не умеем их готовить», и к своему стыду были не заинтересованы продолжать изучение. Не интересно по той причине, что более подробные эксперименты с возможностями оптимизации имеют смысл для нас только относительно 64-битной версии. Надеемся релиз Intel Parallel Studio будет более стабильный и тогда можно будет продолжить. Однако уже видно, что можно получить существенный выигрыш от смены компилятора. Рекомендую попробовать.
    Intel
    Компания

    Похожие публикации

    Комментарии 5

      +6
      Простите, но вы его не пощупали, а аккуратно ткнули. :)
      Было бы интересно почитать про влияние различных опций компилятора на быстродействие конечной программы.
        +1
        Мне тоже интересно. :) Но только 64-битных. А это как раз и не вышло.
          +1
          >Простите, но вы его не пощупали, а аккуратно ткнули. :)
          Размер занимаемого программой места увеличился…
          0
          Автопараллелизация по мне должна умножать скорость копмиляции в несколько раз, т.к. в некоторых случаях совсем непросто разбораться с тем, даст ли распараллеливание цикла прирост к производительности.
            0
            Простите, автопараллелизация чего должна увеличить скорость компиляции?

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

          Самое читаемое