可以在CUDA文件中使用openMP pragma(不在内核代码中)吗?
我将结合使用gpu和cpu计算。但是nvvc编译器失败了,“无法找到未知选项'openmp'”,如果我将porgram与openmp选项链接(在linux下)
一种解决方法是仅在c / c ++文件中使用openMP-statments。
答案 0 :(得分:15)
我刚发现了这个
http://www.cse.buffalo.edu/faculty/miller/Courses/CSE710/heavner.pdf
第25页说:
使用gcc: - #include omp.h
添加-fopenmp
标志
使用nvcc时,这应该是-Xcompiler -fopenmp
,因为这需要直接传递给gcc
-Xcompiler将标志直接传递给主机编译器
在链接阶段添加-lgomp
标志。
我还没试过......
答案 1 :(得分:2)
我尝试在“其他编译器选项”中编写参数,但它不起作用。
我为Visual Studio 2010和CUDA 4.2做了什么:
在项目属性中 - >配置属性 - > CUDA C / C ++ - >命令行 - >其他选项: -Xcompiler“/ openmp”
这会在生成的构建命令中生成两个-Xcompiler参数,但不会导致任何问题并成功运行。
答案 2 :(得分:0)
从nvidia-forum发现的Visual Studio解决方案:
将'/ openmp'标志添加到cuda构建规则中的Extra C ++ Options。我稍后会尝试使用linux解决方案。