>
>
VivaMP - инструмент для OpenMP

Евгений Рыжков
Статей: 125

VivaMP - инструмент для OpenMP

Инструмент для программистов VivaMP предназначен для помощи разработчикам параллельных программ на базе OpenMP. В статье приведен краткий обзор программного продукта.

Поддержка OpenMP была прекращена в PVS-Studio после версии 5.20. По всем возникшим вопросам вы можете обратиться в нашу поддержку.

Технология параллельного программирования OpenMP: преимущества и недостатки

Современный процессор (будь он в настольном компьютере или в ноутбуке) имеет несколько ядер. Чаще всего это два ядра, чуть реже три или четыре. Однако совсем скоро и восемь ядер на обыкновенной домашней пользовательской машине будут обычным явлением. Поэтому наиболее прогрессивные разработчики программных продуктов уже сейчас задумываются над тем, как сделать свою программу параллельной. То есть как обеспечить загрузку всех доступных ядер процессора. И хотя абсолютно корректным решением было бы разработкой новой параллельной версии программного продукта, в реальности же обычно "распараллеливают" имеющуюся последовательную версию. Существует довольно много различных технологий параллельного программирования, однако нас интересует, прежде всего, технология OpenMP, как наиболее перспективная для систем с общей памятью. То есть наиболее перспективная для распараллеливания программ предназначенных для работы на персональных компьютерах. Она позволяет сделать существующую программу параллельной, переписав отдельные ее фрагменты. Все это выглядит (и действительно является) очень заманчивым для разработчиков, если бы не один нюанс. Поддержка технологии OpenMP в существующих средствах разработки реализована так, что очень легко допустить ошибки, которые никак не диагностируются [1]. Из-за чего сложность разработки OpenMP-решений значительно возрастает.

Инструмент поддержки разработчиков OpenMP-решений

Для уменьшения сложности разработки OpenMP-решений компанией ООО "СиПроВер", занимающейся созданием программных инструментов в области анализа кода, разработан программный продукт VivaMP.

VivaMP - это анализатор Си/Си++ кода, предназначенный для поиска ошибок в существующих OpenMP-программах и для упрощения разработки новых OpenMP-программ. Если в разрабатываемой параллельной программе есть ошибки, не диагностируемые компилятором, то инструмент VivaMP найдет их. После чего разработчик, воспользовавшись встроенной в VivaMP справочной системой, легко эти ошибки исправит.

Технически инструмент VivaMP реализован в виде модуля расширения (AddIn) для среды разработки Visual Studio 2005/2008 (рисунок 1).

Рисунок 1 - Инструмент VivaMP встраивается в среду Microsoft Visual Studio 2005/2008

После проверки отдельного файла, проекта или всего решения анализатор выводит в Error List список потенциальных ошибок, которые разработчик должен просмотреть. По каждой обнаруженной ошибке доступна информация в справочной системе, интегрирующейся в MSDN.

Инструмент VivaMP позволяет:

  • найти старые ошибки в существующих OpenMP-решениях;
  • выявить ошибки в новых разрабатываемых OpenMP-решениях;
  • получить информацию по исправлению ошибок из справочной системы;
  • повысить производительность решений на базе OpenMP;
  • изучить большинство возможных ошибок в OpenMP-решениях как по документации, так и на демонстрационной программе ParallelSample, поставляющейся вместе с дистрибутивом VivaMP.

Указанные способы применения VivaMP делают инструмент полезным как начинающим OpenMP-программистам, так и их более опытным коллегам.

Преимущества статического анализа над другими методикам поиска параллельных ошибок

Инструмент VivaMP является статическим анализатором кода. Это значит, что в отличие от динамических анализаторов, не требуется запуск проверяемой программы для обнаружения ошибок и результат работы статического анализатора не зависит от среды исполнения. Статический анализ позволяет проверить код, редко получающий управление или выполняющийся в случае отработки редких ошибочных ситуаций.

Считается, что верификация параллельных программ методом статического анализа затруднительна и малоэффективна в силу невозможности обнаружить ошибки, возникающие при взаимодействии различных частей программ. Но для технологии OpenMP статический анализ для выявления ошибок в коде возможен и эффективен. Дело в "локальности" технологии OpenMP. Параллельный код в программах, как правило, бывает собран в одном месте, что позволяет выполнить детальный статический анализ для нахождения ошибок. Более подробно этот вопрос рассматривается в статье "Тестирование параллельных программ" [2].

Заключение

Если вы разрабатываете параллельные программы с применением технологии OpenMP, то вам обязательно надо познакомиться с инструментом VivaMP. С его помощью разработка OpenMP-решений будет намного проще и быстрее.

Библиографический список

  • Алексей Колосов, Евгений Рыжков, Андрей Карпов. 32 подводных камня OpenMP при программировании на Си++. http://www.viva64.com/ru/a/0054/
  • Андрей Карпов. Тестирование параллельных программ.
  • http://www.viva64.com/ru/a/0031/