使用 OpenMP 支持编译和链接 CUDA 源文件
是否可以在 CUDA 源文件(而不是内核代码)中使用 OpenMP 编译指示?
我将结合 GPU 和 CPU 计算。但是,当我使用 openmp
选项(在 Linux 下)链接程序时,nvcc 编译器失败,并显示“找不到未知选项 'openmp'”。
解决方法是仅在 C/C++ 文件中使用 OpenMP 编译指示。
It it possible to use OpenMP pragmas in CUDA source files (not in kernel code)?
I will combine GPU and CPU computation. But the nvcc compiler fails with "cannot find Unknown option 'openmp'", when I link the program with an openmp
option (under Linux).
A workaround is to use OpenMP pragmas only in C/C++ files.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我刚刚找到了这个
http://www.cse。 buffalo.edu/faculty/miller/Courses/CSE710/heavner.pdf
第25页说:
请注意第三行中
-fopenmp
的拼写错误。I've just found this
http://www.cse.buffalo.edu/faculty/miller/Courses/CSE710/heavner.pdf
Page 25 says:
Note the misspelling of
-fopenmp
in the third line.我尝试在“附加编译器选项”中写入参数,但它不起作用。
我对 Visual Studio 2010 和 CUDA 4.2 所做的操作:
在项目属性中 ->配置属性-> CUDA C/C++ ->命令行 ->附加选项:
-Xcompiler "/openmp"
这导致生成的构建命令中有两个 -Xcompiler 参数,但没有引起任何问题并且工作成功。
I tried writing the parameter in "Additional Compiler Options" but it didn't work.
What I did for Visual Studio 2010 and CUDA 4.2:
In Project Properties -> Configuration Properties -> CUDA C/C++ -> Command Line -> Additional Options:
-Xcompiler "/openmp"
This resulted in two -Xcompiler parameters in the resulting build command but did not cause any problems and worked successfully.
使用 CMake 构建
我必须将
-Xcompiler=-fopenmp
作为编译选项添加到我的 CMakeLists.txt 文件中,以使用 OpenMP 指令构建 CUDA 主机代码:Building with CMake
I had to add
-Xcompiler=-fopenmp
as an compile option to my CMakeLists.txt file to build CUDA host code with OpenMP directives:从 nvidia-forum 找到的 Visual Studio 解决方案:
将“/openmp”标志添加到 cuda 构建规则中的 Extra C++ 选项中。稍后我会尝试linux解决方案。
The solution for the Visual Studio found from the nvidia-forum:
add the '/openmp'-flag to the Extra C++ Options in cuda build rules. I will try the linux solution later.