В начале апреля стартовала программа по тестированию Intel® Parallel Composer beta, которая заканчивается в конце августа. Напомню основные компоненты композера:
- Intel C++ Compiler:
- Intel Integrated Performance Primitives (IPP):
- Intel Threading Building Blocks(TBB).
По мимо интеграции как композера, так и документации в Microsoft Visual Studio 2010*, есть четыре фичи(англ. feature) на которые я хочу обратить ваше внимание:
- Cilk C/C++ расширение параллельного программирования.
Cilk позволяет малыми силами превратить последовательную программу в параллельную. Это расширение добавляет новые ключевые слова (к моменту релиза они могут быть изменены):
- _Cilk_spawn- порождение процесса вызова функции для асинхронного выполнения;
- _Cilk_sync – точка синхронизации внутри этой функции;
- _Cilk_for – параллельное выполнение всего итерационного пространства цикла.
- CEAN: C++ Extended Array Notations for data parallelism.
Новое расширение C/C++ для массивов, которое позволяет задавать дата параллелизм. CEAN выражения чем-то похожи на выражения Фортрана 90. К примеру, вместо
for (i = 0; i < n; i++)
используются
С[i] = A[i]*B[i] + d;
С[:] = A[:]*B[:] + d;
Что позволяет компилятору более эффективно сгенерировать код с векторизацией. - GAP: Guided Auto-parallelization (/Qguide, /Qguide-vec, /Qguide-data-trans).
При использовании этой возможности, компилятор производит диагностику кода и советует пользователю, что и как стоит изменить в коде. Это позволяет улучшить авто-векторизацию и авто-распараллеливание. - #pragma simd и #pragma parallel always [assert]
Новые прагмы, которые указывают (а не советуют) компилятору, что он должен/не должен завекторизовать цикл. Об этом уже писалось тут.
Лично я сам учувствую в тестировании и написании сэмплов для CEAN и Cilk. На основе чего могу поделиться своими ощущениями:
CEAN по идеологии похож на valarray. Главное отличие заключается в том, что в vallaray предназначен для стандартного набора функций. В свою очередь CEAN, позволяет работать с пользовательскими типами, функциями и структурами. OpenMP* и CEAN в связке работают отлично, как и Cilk c CEAN. Единственно, Cilk позволил меньшей кровью получить выше эффективность распараллеливания тех сэмплов, над которыми я работал.
Ну и на последок, все кто желает протестировать новый Intel® Parallel Composer, пишите в личку.
Пожалуйста, обратитесь к странице Уведомление об оптимизации для более подробной информации относительно производительности и оптимизации в программных продуктах компании Intel.