在CUDA内核中调用内核

紫菜

我正在尝试做这样的事情:

__global__ void foo()
{
    // do stuff
}

__global__ void boo()
{
    foo<<<m, n>>>();
}

但出现错误“从__device__或__global__函数启动内核需要单独的编译模式”

我尝试使用谷歌搜索找到答案,然后看到一些有关“动态并行性”的结果,它说它要求我具有3或更高的计算能力(GTX 750 Ti计算能力5)。
我还这样,我需要打开“ rdc”标志,尽管它确实使错误消失了,但无论如何,它都会使编译失败(即使我注释了所有内容)

那么我该如何实现自己的目标,或者可能是问题所在?
(使用cuda 11.0)
我还添加了“ cudadevrt.lib; cudart.lib;”。在项目属性的链接器中输入

编辑:
rdc设置为true时给出的错误:

错误MSB3721命令“” C:\ Program Files \ NVIDIA GPU计算工具包\ CUDA \ v11.0 \ bin \ nvcc.exe“ -dlink -o” x64 \ Debug \ crimson cuda.device-link.obj“ -Xcompiler” / EHsc / W3 / nologo / Od / Zi /Fdx64\Debug\vc142.pdb / RTC1 / MDd“ -L” C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v11.0 \ bin / crt“ -L” C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v11.0 \ lib \ x64“ cudadevrt.lib cudart.lib cudart_static.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32。 lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib -gencode = arch = compute_50,code = sm_50 -G --machine 64 x64 \ Debug \ CrimsonNet.cu.obj x64 \ Debug \ kernel.cu.obj ”以代码1退出。

编辑2:我继续调查,似乎链接文件时出现问题,我不完全了解使用rdc时文件的工作方式。

紫菜

我仍然不知道是什么原因引起的,但是删除了与Nvidia有关的所有内容(驱动程序除外),然后通过CUDA安装程序重新安装了所有内容之后,该错误消失了,现在可以正常使用了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章