Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编译CUDA程序_Cuda_Parallel Processing - Fatal编程技术网

编译CUDA程序

编译CUDA程序,cuda,parallel-processing,Cuda,Parallel Processing,我正在努力使用CUDA并行化光线跟踪程序。我有顺序代码,我写了并行代码(内核) 运行程序时,我遇到以下错误(从VS2010复制) 我想我已经正确地包含了所有的lib和header 以及如何成功编译和运行它的想法,以及错误的原因是什么 Tnx预先在这种特殊情况下,问题中最初描述的错误源自传递给nvcc的这组特定命令行开关: -gencode=arch=compute_21,code=\"sm_21,compute_21\" compute_21 Visual Studio生成该特定无效开关的确切

我正在努力使用CUDA并行化光线跟踪程序。我有顺序代码,我写了并行代码(内核)

运行程序时,我遇到以下错误(从VS2010复制)

我想我已经正确地包含了所有的lib和header

以及如何成功编译和运行它的想法,以及错误的原因是什么


Tnx预先

在这种特殊情况下,问题中最初描述的错误源自传递给nvcc的这组特定命令行开关:

-gencode=arch=compute_21,code=\"sm_21,compute_21\"
compute_21

Visual Studio生成该特定无效开关的确切原因尚不清楚。但是,在显示
sm_21
的任何位置,可以通过将项目设置更改为
sm_20
来解决该特定问题。这不会对代码生成产生显著影响,也不会对代码的支持能力产生影响

正如在评论中所讨论的,OP似乎在VisualStudio配置方面也存在其他问题

编辑:我运行了您在最近的评论中提供的程序。它对我来说似乎运行“正确”。我在linux下运行它,而不是在windows下运行,因为这是我手边可以进行此类测试的机器。我没有对您的程序进行任何更改,只是更改了一些包含文件以匹配linux路径名等。我观察到的主要问题是,通常情况下,渲染每帧大约需要17秒。如果您的GPU速度慢得多,您可能需要等待几分钟才能看到第一帧。以下是示例输出:

所以我认为主要的问题是提高渲染速度。我还没有花很多时间查看您的程序,但是任何使用
配置调用的内核都没有真正有效地利用GPU


我在这里使用的GPU是Quadro1000M GPU,它可能比您的9500GS快得多。

这里可能没有足够的速度继续下去。你能提供更多的输出吗?比如你贴的那一行之前和之后的那一行?你能提供CUDAraytracer.cu程序吗?其他人可以进行测试编译,看看是否存在任何问题。你使用CUDA 4.2有什么原因吗?它现在很旧了。您是否能够构建任何cuda示例应用程序?您好。这是我得到的唯一输出。我使用CUDA 4.2是因为我的旧图形卡-9500GS,驱动程序版本306.23。这是CUDAraytracer.cu(太长,无法发布,因此这里有链接)”。jeah,我可以运行一些示例应用程序,即使每次运行一个应用程序时我都必须重新启动电脑,因为屏幕闪烁和冻结,哈哈。。。Tnx.某些VS设置可能会阻止您查看
nvcc
的实际输出。可以尝试从命令提示符发出命令吗?基本上复制所有内容,从
“C:\Program Files…”
开始,以
…CUDAraytracer.cu“
结束,并在命令提示栏中作为命令输入。。。“不支持的gpu体系结构'compute_21'”。为什么呢?我在projectsettings/CUDA C/C++/Device中更改了它。。。最初,它是“compute_10”,但在该设置下,我出现了以下错误:错误20错误:递归函数调用还不受支持:calculateReflection(double*,double*,double*,double*,RAY,int,SPHERE_交集,double,double,int)c:\Users\mc.choice\Desktop\CUDAraytracer.cu 529怎么办?如果要使用递归功能,还需要消除
compute\u 10
sm\u 10
设置。您应该能够通过在VS.Hey中正确操作项目设置(或者可能是该特定.cu文件的文件设置)来实现这一点。我一直坚持使用CUDA,并且已经到了一切都能成功编译和运行的地步。我已将所有内容都放入*.cu文件中。现在的问题是,当我运行程序时,它只显示黑屏。没有弹跳球。。。除此之外,我认为它正在工作,因为测量时间显示在输出中(我测量每一帧的执行时间)。有什么想法吗?代码可以在这里找到:不是真的。您是否正在对所有CUDA调用和内核调用进行错误检查?您使用的是OpenGL或DX interop的一些版本吗?你有一个只有CPU的版本工作正常,对吗?我看不出你的代码有任何正确的地方。我肯定会从这里开始,将它添加到所有CUDAAPI调用和所有内核调用之后。通过使用
CUDA memcheck
Right运行代码,您还可以快速了解是否存在CUDA问题-仅CPU版本工作正常。嗯,从来没有想过cuda错误检查,tnx的提示:)就像我说的-我在这方面是一个初学者,特别是并行计算,但想获得有关它的知识。感谢上帝为这样的网站。工作结束后将报告结果,请再次使用tnx。因此,我尝试实现gpuerchk()。一切正常,就像以前一样,但我没有得到任何错误的输出,输出屏幕仍然是黑色的。没有球体。我的点子快用完了。也许真正的问题在于我的旧显卡和驱动程序。驱动程序确实很旧,但如果我尝试安装一个新的,一切都会变得一团糟(冻结,Win boot崩溃…),而且由于此任务的截止日期是周日,我无法承受时间损失。顺便问一下,您使用OpenGL或DX interop中的一些是什么意思?
-gencode=arch=compute_21,code=\"sm_21,compute_21\"