Visual Studio 2005 Standard中的OpenMP

时间:2009-05-14 20:49:37

标签: visual-c++ visual-studio-2005 openmp

我使用OpenMP和gcc编写并行代码。我现在正在使用Visual C ++ 2005,并试图弄清楚如何使用OpenMP。在Properties-> C / C ++ / Language菜单中有一个编译器选项,但它会抱怨库缺失。是否有OpenMP的第三方实现,或者我只是错误地配置Visual C ++?

3 个答案:

答案 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)

您需要添加:

/openmp

编译器选项。

有关详情,请参阅MSDN