Вопрос

Я использовал OpenMP с gcc для написания параллельного кода.Сейчас я использую Visual C++ 2005 и пытаюсь понять, как использовать OpenMP.В меню «Свойства->C/C++/Язык» есть опция компилятора, но затем он жалуется, что библиотека отсутствует.Существует ли сторонняя реализация OpenMP или я просто неправильно настраиваю Visual C++?

Это было полезно?

Решение

После некоторых исследований я обнаружил, что библиотеки и библиотеки OpenMP не включены в Visual C++ 2005 или Visual C++ Express Edition 2008.Но с помощью нескольких обходных путей вы можете заставить его работать.

Сначала вам необходимо загрузить файлы lib от Microsoft, которые можно найти по адресу Windows SDK для Windows Server 2008 и .NET Framework 3.5.После загрузки вам необходимо убедиться, что с вашей программой связан либо vcomp.lib, либо vcompd.lib.

Далее вам понадобится dll, который можно найти в папке Распространяемый пакет Visual C++.Затем убедитесь, что vcomp90.dll находится где-то на вашем пути.

Вам также необходимо включить опцию компилятора OpenMP, которую можно найти в меню «Свойства->C/C++/Язык» Visual C++.

После этого вы сможете нормально использовать OpenMP.

Другие советы

Я думаю, что он работает с VC 2005 «из коробки», но я не уверен, что они включены во все версии.

Если вы просто прикрепите

/openmp

вариант, вам также необходимо включить заголовок open mp

#include <omp.h>

Это важно, потому что этот заголовок добавит манифест в ваше приложение, которое позволяет ему загружать Vcomp.dll с правильного пути системного пути.Таким образом, обычно больше не разрешается копировать vcomp.dll или другие системы DLL под вашим исполняемым файлом, но вы должны перемещать манифест вашего приложения для загрузки DLL из правильного местоположения.Это не происходит автоматически в заголовке omp.h.

Итак, минимальный код, если вы не хотите изменять свой манифест самостоятельно:

#include <omp.h> // has to include this header to build the correct manifest to find vcom.dll or vcompd.dll

int main(int argc, char* argv[])
{
  double sum;
#pragma omp parallel for
  for(int i = 0; i < 10000; ++i) {

  }
    return 0;
}

Вам нужно добавить:

/openmp

К вашим параметрам компилятора.

Более подробная информация доступна на MSDN

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top