2009-05-14 3 views
4

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

+0

Это также, кажется, относится к Visual Studio 2008. – batty

ответ

7

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

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

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

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

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

+0

Он также не входит в стандартные версии, насколько я могу судить. Похоже, вам нужны версии Professional или Team System. Вот сообщение в блоге, которое подтверждает, что указывает вышеприведенный ответ. http://kenny-tm.xanga.com/651048063/parallel-programming-using-openmp-with-visual-c-2008-express/ – batty

+0

Я знаю, что это старый, но я смог получить openMP для работы с визуальными C++ 2008, просто установив SDK, связанный выше. Не нужно было делать другие упомянутые шаги, но они могут работать для других людей. – Justin

1

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

/openmp 

Для ваших вариантов компилятора.

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

6

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

Если этого нужно просто прикрепить вариант

/openmp 

вы также должны включать заголовок открытый Mp

#include <omp.h> 

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

Таким образом, минимальный код, если вы не хотите, чтобы modyfy свой манифест самостоятельно является:

#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; 
} 
+0

Мне не хватало включенный файл (не было в учебнике, в котором я следил ...) Хорошая причина всегда показывать включенные в учебники! – Urchin