我使用OpenMP和gcc编写并行代码。我现在正在使用Visual C ++ 2005,并试图弄清楚如何使用OpenMP。在Properties-> C / C ++ / Language菜单中有一个编译器选项,但它会抱怨库缺失。是否有OpenMP的第三方实现,或者我只是错误地配置Visual C ++?
答案 0 :(得分:7)
经过一些研究后,我发现OpenMP libs和dll不包含在Visual C ++ 2005或Visual C ++ Express Edition 2008中。但是通过一些解决方法,您可以使它工作。
首先,你需要从微软下载lib文件,可以在Windows SDK for Windows Server 2008 and .NET framework 3.5找到。下载后,您需要确保将vcomp.lib或vcompd.lib链接到您的程序。
接下来,您需要拥有可在Visual C++ Redistributable Packkage中找到的dll。然后确保vcomp90.dll位于路径中的某个位置。
您还需要启用OpenMP编译器选项,该选项可以在Visual C ++的Properties-> C / C ++ / Language菜单中找到。
之后你应该能够正常使用OpenMP。
答案 1 :(得分:6)
我认为VC 2005开箱即用,但我不确定它们是否提供了所有版本。
如果你jsut附上
/openmp
选项你还必须包括open mp header
#include <omp.h>
这很重要,因为此标头会将清单添加到您的应用程序中 使其能够从正确的系统路径加载vcomp.dll。所以通常不再 允许复制vcomp.dll或其他系统dll在您的可执行文件下,但您必须pimp应用程序的清单从正确的位置加载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;
}
答案 2 :(得分:1)