【发布时间】:2015-10-28 20:02:34
【问题描述】:
是否可以在 CUDA 文件中(不在内核代码中)使用 openMP pragma?
我将结合 gpu 和 cpu 计算。但是如果我将 porgram 与 openmp 选项链接(在 linux 下),nvvc 编译器会失败并显示“找不到未知选项 'openmp'”
一种解决方法是仅在 c/c++ 文件中使用 openMP-statments。
【问题讨论】:
是否可以在 CUDA 文件中(不在内核代码中)使用 openMP pragma?
我将结合 gpu 和 cpu 计算。但是如果我将 porgram 与 openmp 选项链接(在 linux 下),nvvc 编译器会失败并显示“找不到未知选项 'openmp'”
一种解决方法是仅在 c/c++ 文件中使用 openMP-statments。
【问题讨论】:
我刚刚找到了这个
http://www.cse.buffalo.edu/faculty/miller/Courses/CSE710/heavner.pdf
第 25 页说:
使用 gcc: -#include omp.h
添加-fopenmp 标志
对于 nvcc,这应该是 -Xcompiler -fopenmp 因为这需要直接传递给 gcc
-Xcompiler 将标志直接传递给宿主编译器
在链接阶段添加-lgomp标志。
我还没试过……
【讨论】:
我尝试在“附加编译器选项”中编写参数,但没有成功。
我为 Visual Studio 2010 和 CUDA 4.2 做了什么:
在项目属性 -> 配置属性 -> CUDA C/C++ -> 命令行 -> 附加选项: -Xcompiler "/openmp"
这导致生成的构建命令中有两个 -Xcompiler 参数,但没有导致任何问题并成功运行。
【讨论】:
从 nvidia-forum 找到的 Visual Studio 的解决方案:
将“/openmp”标志添加到 cuda 构建规则中的额外 C++ 选项中。稍后我会尝试 linux 的解决方案。
【讨论】: