OpenMP в Visual Studio 2005 Standard - PullRequest
4 голосов
/ 15 мая 2009

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

Ответы [ 3 ]

7 голосов
/ 16 мая 2009

После некоторых исследований я обнаружил, что библиотеки и библиотеки 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 ++ Redstributable Packkage . Затем убедитесь, что vcomp90.dll находится где-то на вашем пути.

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

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

6 голосов
/ 15 июня 2009

Я думаю, что с VC 2005 все готово, но я не уверен, что они есть во всех версиях.

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

/openmp

опция, вы также должны включить открытый заголовок 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;
}
1 голос
/ 15 мая 2009

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

/openmp

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

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

...