Инструменты Intel работают рука об руку с Microsoft Visual Studio
Сегодня многоядерные процессоры встречаются повсеместно, поэтому появилась необходимость в новых инструментах, упрощающих параллельное программирование.
Чтобы помочь программистам в написании кода, использующего множество ядер, Intel выпустила набор инструментов Parallel Studio, который работает рука об руку с Microsoft Visual Studio (и поддерживает только Microsoft Windows версии XP и выше).
Intel Parallel Studio состоит из следующих компонентов: ·
- Parallel Inspector — аналитический инструмент, позволяющий выявлять проблемы с потоками и памятью; ·
- Parallel Composer — набор инструментов, включающий компилятор Intel C++ и соответствующие библиотеки; ·
- Parallel Amplifier — инструмент для анализа производительности вашей программы; ·
- Parallel Advisor Lite — инструмент, проводящий вас через несколько шагов при подготовке программы к параллелизму. (Технически Parallel Advisor Lite не является частью Intel Parallel Studio, а представляет собой самостоятельный инструмент.)
Приложения, написанные с помощью Intel Parallel Studio, будут совместимы с будущими многоядерными процессорами Intel, включая Larrabee — разрабатываемый многоядерный процессор общего назначения архитектуры x86 со встроенной высокопроизводительной графикой.
Intel именует такую совместимость масштабирумостью, имея в виду, что приложения, написанные с помощью Parallel Studio, будут работать с процессорами, насчитывающими больше ядер по сравнению с сегодняшними, и смогут использовать все преимущества дополнительных ядер.
В ходе тестирования Parallel Inspector помог мне выявить некоторые наиболее часто встречающиеся проблемы параллельного программирования, особенно взаимные блокировки и случаи одновременного обращения к одним и тем же данным (data races).
Инструмент запускает вашу программу и ведет мониторинг ее работы, выискивая названные проблемы, вместо того, чтобы просто инспектировать сам программный код. Поскольку действие вашей программы анализируется, она выполняется гораздо дольше. В моем тесте — в 10 с лишним раз дольше обычного. Но наградой за ожидание стал исчерпывающий список найденных ошибок, включая случаи одновременного обращения к одним и тем же данным. Список имеет форму перечня неотложных дел. Я мог щелкнуть по указанной в нем ошибке и сразу перейти к строке исходного кода, которая породила проблему.
Хотя Inspector находит ошибки в процессе работы программы и может показать вам, где в вашем исходном коде возникли проблемы, он лишь подсказывает, как их устранить. В конечно счете только вы, как хороший программный инженер, можете достаточно глубоко знать свой код, чтобы понять выявленную проблему и корректно ее устранить.
В уже описанном случае Inspector обнаружил, что несколько потоков (threads) пытались одновременно вести запись по одному и тому же адресу в памяти. Следовательно, мне необходимо было создать критическую секцию. Это было нетрудно. Компилятор Intel C++, поставляемый в качестве компонента Parallel Composer, полностью поддерживает стандарт OpenMP. Он представляет собой расширение C++, которое позволяет использовать в своем коде прагмы, чтобы определить многопоточные особенности, такие как критические секции.
Это упрощает работу: вместо того чтобы обращаться к операционной системе для создания критической секции, вы просто вставляете прагму (типа #pragma omp critical) перед строкой, которая должна выполнять роль критической секции. Компилятор Intel C++ включает также собственные расширения языка, которыми вы можете воспользоваться.
Кроме того, компилятор поставляется с библиотекой нитей (threading library) под названием Intel IPP (Integrated Performance Primitives) и библиотекой на основе шаблонов, именуемой Intel TBB (Threading Building Blocks).
После использования Parallel Inspector для выявления проблем вы можете произвести тонкую настройку своего приложения и проверить, использует ли оно ядра процессоров оптимальным образом. Для этого применяется Parallel Amplifier. Он вновь проанализирует запущенную вами программу и проверит, работает ли она оптимальным образом, используя все преимущества многоядерности. Разумеется, проверка будет ограничена тем числом ядер, которое имеется на используемой для тестирования машине. Если у вас двухъядерный процессор, вы не сможете проверить, какую производительность покажет ваше ПО на машине с четырехъядерным процессором.
Поставив себя на место пользователя, я могут представить себе множество приложений, с которыми я работаю ежедневно и которые могли бы выиграть, будучи переписаны с помощью Intel Parallel Studio. Только подумайте, сколько раз вы смотрели на свой менеджер задач и видели программу, загрузившую одно ядро на 100% и не использующую другое ядро. Если код написан правильно, программы могут частично использовать каждое ядро и выполняться быстрее, оставляя достаточно процессорной мощности для других программ без замедления работы компьютера.
Полная версия Parallel Studio без Parallel Advisor Lite стоит 799 долл. Parallel Composer, Parallel Inspector и Parallel Amplifier можно также приобрести по отдельности по 399 долл. за каждый продукт. На Parallel Studio для учебных заведений установлена специальная цена в 199 долл.