﻿# Параллельные заметки №2 – инструментарий для OpenMP

Прежде чем приступить к изучению методики распараллеливания программ с помощью технологии OpenMP рассмотрим инструментарий, который нам потребуется\. А потребуется нам в первую очередь Visual Studio 2005/2008 и Intel® Parallel Studio\.

![0058_Parallel_notes_N2_-_toolkit_for_OpenMP_ru/image1.png](https://import.viva64.com/docx/blog/0058_Parallel_notes_N2_-_toolkit_for_OpenMP_ru/image1.png)

Преимущество технологии OpenMP заключается в том, что взяв код последовательной программы, можно распараллелить его без существенной модификации\. Это достигается расстановкой специальных директив\. Конечно, на практике придется не только вставлять директивы, но и править сам код приложения, но этих изменений будет гораздо меньше, чем если использовать альтернативные технологии, такие как MPI\.

Вышесказанное означает, что мы можем взять обыкновенный последовательный код на языке Си/Си\+\+ и начать его постепенно распараллеливать\. Для этого нам достаточно включить в проекте поддержку OpenMP\. В среде Visual Studio 2005/2008 зайдите в свойства проекта и выберете вкладку C/C\+\+ / Language, как показано на рисунке 1\.

![0058_Parallel_notes_N2_-_toolkit_for_OpenMP_ru/image2.png](https://import.viva64.com/docx/blog/0058_Parallel_notes_N2_-_toolkit_for_OpenMP_ru/image2.png)

Рисунок 1 \- Вкладка Visual Studio с настройками проекта, где можно включить поддержку OpenMP

Не забудьте также выбрать платформы и конфигурации, в которых вы планируете использовать OpenMP\. Как показано на рисунке 2, мы выбрали все конфигурации \(debug, release\) и все платформы \(Win32, x64\)\.

![0058_Parallel_notes_N2_-_toolkit_for_OpenMP_ru/image3.png](https://import.viva64.com/docx/blog/0058_Parallel_notes_N2_-_toolkit_for_OpenMP_ru/image3.png)

Рисунок 2 \- Выбор конфигураций и платформ, для которых мы устанавливаем параметры

Поддержка OpenMP включается опцией "OpenMP Support" как показано на рисунке 3\.

![0058_Parallel_notes_N2_-_toolkit_for_OpenMP_ru/image4.png](https://import.viva64.com/docx/blog/0058_Parallel_notes_N2_-_toolkit_for_OpenMP_ru/image4.png)

Рисунок 3 \- Поддержка OpenMP включена

Следующим шагом является подключение заголовочного файла "omp\.h"\. Часто рационально поместить "\#include <omp\.h\>" в stdafx\.h, чтобы он был виден во всем проекте\.

Вот и все подготовительные шаги, которые необходимы, чтобы начать осваивать технологию OpenMP и распараллеливать программный код\. Знакомство с OpenMP мы начнем со следующей заметки\. Сейчас мы продолжим знакомство с инструментами\. Дело в том, что хотя возможностей Visual Studio 2005/2008 достаточно чтобы разрабатывать параллельные OpenMP программы, это слишком спартанские условия\. Для полноценной работы разумно воспользоваться [Intel® Parallel Studio](https://software.intel.com/content/www/us/en/develop/tools/parallel-studio-xe.html)\. Я не сотрудник Intel и за рекламу инструментов мне никто не платит\. Parallel Studio действительно удобный и крайне полезный инструмент для разработки параллельных приложений\. Рекомендую на основании собственного опыта\.

Дистрибутив Intel® Parallel Studio занимает порядка 460 Мбайт и доступен для скачивания с сайта [Intel](https://software.intel.com/content/www/us/en/develop/tools/parallel-studio-xe.html)\. При этом полная функциональность Parallel Studio будет доступна в течении одного пробного месяца, что вполне достаточно, чтобы познакомиться с принципами работы и поэкспериментировать с параллельным кодом\. Parallel Studio интегрируется внутрь Visual Studio 2005/2008, добавляя дополнительные пункты меню и в панель инструментов \(смотри рисунок 4\)\.

![0058_Parallel_notes_N2_-_toolkit_for_OpenMP_ru/image5.png](https://import.viva64.com/docx/blog/0058_Parallel_notes_N2_-_toolkit_for_OpenMP_ru/image5.png)

В следующих параллельных заметках мы будем использовать инструмент Intel®Parallel Inspector из комплекта Intel® Parallel Studio для проверки создаваемого параллельного кода на наличие параллельных ошибок\. А также Intel® Parallel Amplifier для оптимизации\. Компилятор Intel® Parallel Composer нам не обязателен, но мы будем компилировать OpenMP приложения им\. В качестве преимущества можно назвать поддержку Intel® Parallel Composer версии стандарта OpenMP 3\.0, в то время как компилятор из Visual Studio 2005/2008 поддерживает только OpenMP 2\.0\. Также Intel C\+\+ дает некоторые дополнительные возможности по статическому анализу параллельного кода, о чем можно прочитать в [статье](https://software.intel.com/content/www/us/en/develop/articles/an-unsuccessful-attempt-to-compare-pvs-studio-vivamp-and-intel-cc-parallel-lint.html)\.

Для компиляции приложения с использованием Parallel Composer следует сделать активным компилятором Intel C\+\+\. Это можно осуществить используя кнопку "Use Intel C\+\+" на панели инструментов, как показано на рисунке 5\.

![0058_Parallel_notes_N2_-_toolkit_for_OpenMP_ru/image6.png](https://import.viva64.com/docx/blog/0058_Parallel_notes_N2_-_toolkit_for_OpenMP_ru/image6.png)

Теперь для сборки приложения будет использоваться компилятор Intel C\+\+\. Да, если после компиляции и запуска приложения вы увидите сообщение, подобное тому что показано на рисунке 6, то не расстраивайтесь\.

![0058_Parallel_notes_N2_-_toolkit_for_OpenMP_ru/image7.png](https://import.viva64.com/docx/blog/0058_Parallel_notes_N2_-_toolkit_for_OpenMP_ru/image7.png)

Попробуйте просто перезапустить Visual Studio, чтобы в силу вступили изменения которые прописывает Parallel Studio в среду окружения\. Если и это не поможет, воспользуйтесь ручной установкой окружения, запустив соответствующие командные фалы\. Они доступны из меню пуск, как показано на рисунке 7\.

![0058_Parallel_notes_N2_-_toolkit_for_OpenMP_ru/image8.png](https://import.viva64.com/docx/blog/0058_Parallel_notes_N2_-_toolkit_for_OpenMP_ru/image8.png)

Закончим пока на этом первое знакомство с инструментами\. Скачивайте и устанавливайте Intel® Parallel Studio\. Попробуйте собрать какую\-нибудь свою простую программу с использованием Intel C\+\+\.