请问CUDA与OPENMP连用时,怎么编译啊?用nvcc

rolyluo 2010-01-25 09:43:32
请问CUDA与OPENMP连用时,怎么编译啊?

我用
nvcc -fopenmp -o cudaOpenMP cudaOpenMP.cu ...
提示下面错误
nvcc fatal : Unknown option 'fopenmp'


...全文
1925 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
dsjfakls 2011-06-20
  • 打赏
  • 举报
回复
具体步骤是什么啊?哪位大神能说一下
diaolingdeyu 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 l7331014 的回复:]
引用 5 楼 rolyluo 的回复:
老程,只有WINDOWS下的SDK有cudaOpenMP啊,linux下的没有这个算例啊
怎么办呢?


抱歉,我现在手头只有windows的本本.没注意这点.呵呵.

哪找个sample的makefile改吧....
OPENMP的参数要和gcc的参数加在一起.而不是在nvcc命令后.
[/Quote]这个到底加在那啊?
diaolingdeyu 2010-08-20
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 l7331014 的回复:]
引用 21 楼 diaolingdeyu 的回复:
引用 15 楼 newredstarcn 的回复:
困扰多日的问题已经解决,只因将/openmp 放置的位置不同。之前增加了/openmp 不过一直是这样的: -Xcompiler "/openmp /EHsc /W3 /nologo /Od /Zi /MTd "; 后来将其调整到最后就可以了,调整后如下:-Xcompiler " /EHsc……
[/Quote]
我已经加上了~可是还是和以前一样的效果~ 运行cudaopenMP的例子,
我有2块显卡~为什么只是显示一个线程?
结果如下:
number of host cpus :4
number of CUDA devices :2
0:GF GTX260
1:GF GTX260
----------------------------
CPU thread 0<of 1>uses CUDA device 0//这个地方不应该会显示有2个CPU线程么
----------------------------
TEST PASSED
Press enter to exit....
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 diaolingdeyu 的回复:]
引用 15 楼 newredstarcn 的回复:
困扰多日的问题已经解决,只因将/openmp 放置的位置不同。之前增加了/openmp 不过一直是这样的: -Xcompiler "/openmp /EHsc /W3 /nologo /Od /Zi /MTd "; 后来将其调整到最后就可以了,调整后如下:-Xcompiler " /EHsc /W3 /nologo /Od /Zi /MTd /……
[/Quote]

nvcc编译的命令行。
diaolingdeyu 2010-08-19
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 newredstarcn 的回复:]
困扰多日的问题已经解决,只因将/openmp 放置的位置不同。之前增加了/openmp 不过一直是这样的: -Xcompiler "/openmp /EHsc /W3 /nologo /Od /Zi /MTd "; 后来将其调整到最后就可以了,调整后如下:-Xcompiler " /EHsc /W3 /nologo /Od /Zi /MTd /openmp". 哎,晕死了,如果SDK能够在samp……
[/Quote]
-Xcompiler " /EHsc /W3 /nologo /Od /Zi /MTd /openmp" 这玩意在那里加啊~~??
diaolingdeyu 2010-08-19
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 newredstarcn 的回复:]
困扰多日的问题已经解决,只因将/openmp 放置的位置不同。之前增加了/openmp 不过一直是这样的: -Xcompiler "/openmp /EHsc /W3 /nologo /Od /Zi /MTd "; 后来将其调整到最后就可以了,调整后如下:-Xcompiler " /EHsc /W3 /nologo /Od /Zi /MTd /openmp". 哎,晕死了,如果SDK能够在samp……
[/Quote]
楼主到底怎么处理的啊?
我用编译没有错误,但是只是显示一个线程~;这是怎么回事呢?、
gudaoqianfu 2010-04-28
  • 打赏
  • 举报
回复
学习了,小菜在这里膜拜各位大牛
OpenGPU2010 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 openhero 的回复:]

再解释一下吧,nvcc因为要使用额外的编译器来编译cu文件中的C或者C++部分,这部分就会有openmp的代码,这个代码编译的时候,就需要指定openmp的编译命令,而要使用额外工具的编译命令,就需要添加-Xcompiler 命令,这个命令就是告诉C或则C++的编译器开始OpenMP的支持,当然,需要在编译外面link上openmp的库~
[/Quote]

大牛说得好,支持一下!
:>

---------------------------------------------------------------------

开源图形处理器体系结构论坛(OpenGPU论坛)
http://www.opengpu.org/bbs/

OpenGPU Graphics Open Source community图形开源社区),聚焦领域(focus domain)包括:
* GPU Architecture图形处理器体系结构).
* Graphics Algorithm图形算法).
* Open Source Rendering Engine开源渲染器).
* Open Source GPU Simulator/RTL Implement开源GPU模拟器).
* GPGPU Programming 面向通用的图形处理器编程
* GPU General-purposed ComputingGPU通用计算).
.


rolyluo 2010-04-20
  • 打赏
  • 举报
回复
呵呵,没错,要-Xcompiler -fopenmp

不过关于OPENMP,调试是个问题呵,没法 print 变量值

据说intel c会好些,nvcc怎么跟intel c一块用?


newredstarcn 2010-04-05
  • 打赏
  • 举报
回复
从该地方搜到如下信息,详见此链接http://forums.nvidia.com/lofiversion/index.php?t53738.html,但是,最后Paulius的回复如下:
Use the following flags when compiling a .cu file to use OpenMP:
--host-compilation=C++ -Xcompiler /openmp
That's what cudaOpenMP SDK sample uses (available in Windows). You'll have to provide the proper gcc flag after -Xcompiler for Linux (not sure what that is, but gcc 4.2 and later does support OpenMP).
看起来与这句话的意思差不多:“nvcc是编译cu与生成中间cpp的.OPENMP的参数还是要加在实际的后面的cpp的编译器上.” 问题是,该如何增加呢,能否有一个具体步骤的说明呢? 查看了cudaopenmp sdk sample,也没有找到她是如何配置的。还望能够答疑解惑!!!!
newredstarcn 2010-04-05
  • 打赏
  • 举报
回复
几位大侠,小弟我最近几天一直在折腾利用openmp 操作多块GPU的问题。但是始终看到的都只有一个CPU的线程在run,请帮忙看看该如何配置呢。
测试环境:Win7 x64,CUDA 2.3 X64,visual studio 2008 professional
利用sdk下的cudaopenmp 例程,修改了cuda custom build rule v2.3.0 中command line,在 -Xcomplier 后面增加了 "/openmp"选项。编译运行后,跟没有增加 /openmp选项的效果一样,还是只有一个thread在run,具体该如何配置呢。请多多指教。
运行sdk下cudaopenmp例程的具体log:
number of host CPUs: 8
number of CUDA devices:2
0: Gerforce GTX 260
1: Gerforce GTX 260
-----------------------------
main():generating input data...
main():waiting form GPU results...
1
CPU thread 0(of 1) uses CUDA device 0
-----------------------------
sum: 33556916.000000
GPU Processing time : 123.318077(ms)
Checking the results...
CPU Processing time: 258.719604(ms)
GPU sum: 3356916.000000; CPU sum: 33556851.542208
Relative difference: 1.920853E-006
TEST FAILED

Cyrosly 2010-04-05
  • 打赏
  • 举报
回复
记得好像需要声明为extern "C"
newredstarcn 2010-04-05
  • 打赏
  • 举报
回复
困扰多日的问题已经解决,只因将/openmp 放置的位置不同。之前增加了/openmp 不过一直是这样的: -Xcompiler "/openmp /EHsc /W3 /nologo /Od /Zi /MTd "; 后来将其调整到最后就可以了,调整后如下:-Xcompiler " /EHsc /W3 /nologo /Od /Zi /MTd /openmp". 哎,晕死了,如果SDK能够在sample 里做的再完善一些,就不用耗费这几天的时间了。
OpenHero 2010-03-30
  • 打赏
  • 举报
回复
再解释一下吧,nvcc因为要使用额外的编译器来编译cu文件中的C或者C++部分,这部分就会有openmp的代码,这个代码编译的时候,就需要指定openmp的编译命令,而要使用额外工具的编译命令,就需要添加-Xcompiler 命令,这个命令就是告诉C或则C++的编译器开始OpenMP的支持,当然,需要在编译外面link上openmp的库~
OpenHero 2010-03-29
  • 打赏
  • 举报
回复
-Xcompiler -fopenmp
or -fopenmp
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zuojuntao1 的回复:]
我也想问这个问题,c++类文件开启在VS2005中有那个选项,但是由于cuda编译规则中未将这项包含在内,所以就无openmp开启选项……
[/Quote]

在command line中直接加不行?
zuojuntao1 2010-03-29
  • 打赏
  • 举报
回复
我也想问这个问题,c++类文件开启在VS2005中有那个选项,但是由于cuda编译规则中未将这项包含在内,所以就无openmp开启选项……
ansonchong 2010-02-03
  • 打赏
  • 举报
回复
Ok I k I like it jast
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 rolyluo 的回复:]
老程,只有WINDOWS下的SDK有cudaOpenMP啊,linux下的没有这个算例啊
怎么办呢?
[/Quote]

抱歉,我现在手头只有windows的本本.没注意这点.呵呵.

哪找个sample的makefile改吧....
OPENMP的参数要和gcc的参数加在一起.而不是在nvcc命令后.
OpenHero 2010-01-27
  • 打赏
  • 举报
回复
linux下你需要添加openmp的编译选项才行
加载更多回复(5)

589

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧