Настройка OpenMP C++ Visual Studio 2019

Материал из HNKN
Перейти к навигации Перейти к поиску

OpenMP (Open Multi-Processing) — открытый стандарт для распараллеливания программ на языках Си, Си++ и Фортран. Дает описание совокупности директив компилятора, библиотечных процедур и переменных окружения, которые предназначены для программирования многопоточных приложений на многопроцессорных системах с общей памятью.

Настройка Visual Studio[править | править код]

Пример описывает создание простейшей параллельной программы и спользованием IDE Visual Studio Community. Скачать её можно на официальном сайте, достаточно версии Сommunity (прямая ссылка).

Во время установки будет необходима рабочая нагрузка Разработка классических приложений на C++

VisualStudioInstallerC++.png

Если Visual studio уже установлена, но не установлена эта рабочая нагрузка, её всегда можно догрузить в программе Visual Studio Installer, должна легко находиться в поиске пуска.

Создание консольного приложения C++[править | править код]

Для наглядного примера отлично проходит шаблон консольное приложение c++

VisualStudioC++.png

Настройка Проекта[править | править код]

Для уменьшения возможных ошибок убедитесь, что стоит x64 и режим Debug

VSDebugX64.png

Далее заходим в проект -> свойства и настраиваем конфигурацию языка C++ подключив OpenMP Api

VsC++OpenMP.png

Далее остаётся добавить /Zc:twoPhase- в Дополнительных параметрах Конфигурации командной строки.

AdditionalparamsCommandLineTwoPhace.png

Код примера[править | править код]

#include <iostream>
#include <omp.h>

int main()
{
#pragma omp parallel // #pragma omp parallel num_threads(4)
	{
		std::cout << "Hello World!\n";
	}
	return 0;
}

Предполагаемый вывод[править | править код]

Программа должна вывести строку hello world столько раз сколько потоков (ядер) поддеживает (содержит) центральный процессор.

Если программа выводит строку лишь единожды то скорее всего что-то настроено неправильно. Одноякорные процессоры уже редкость.

Ссылки[править | править код]