2010-07-09 102 views
14

它有可能在CUDA文件(不在内核代码中)使用openMP pragmas?在cuda主机代码中使用openMP?

我将结合gpu和cpu计算。但是nvvc编译器以“无法找到未知选项'openmp'”失败,如果我使用openmp选项(linux下)链接porgram

解决方法是仅在c/C++文件中使用openMP-statments。

回答

14

我刚刚发现这个

http://www.cse.buffalo.edu/faculty/miller/Courses/CSE710/heavner.pdf

第25页说:

用gcc: - #包括omp.h

添加-fopenmp标志

随着nvcc,这应该是-Xcompiler -fopenmp,因为这需要直接传递给gcc -Xcompiler直接将标志传递给主机编译器

在链接阶段添加-lgomp标志。

我还没有尝试过...

+0

小心应对和粘贴论据。如果仔细观察-Xcompiler -fopenmp上的破折号与命令行破折号不同。 – Tristan 2013-10-04 22:07:06

+0

破折号现在已修复。 – 2014-05-23 19:44:05

0

从NVIDIA的论坛发现了Visual Studio中的解决方案:

的“/ openmp'标志添加额外的C++中的选项CUDA建立规则。我将在稍后尝试Linux解决方案。

2

我尝试在“其他编译器选项”中编写参数,但它没有工作。

我做什么了Visual Studio 2010和CUDA 4.2:

在项目属性 - >配置属性 - > CUDA C/C++ - >命令行 - >附加选项: -Xcompiler “/ OpenMP的”

这导致生成的构建命令中有两个-Xcompiler参数,但没有导致任何问题并且成功运行。