我正在尝试做类似的事情:
__global__ void foo()
{
// do stuff
}
__global__ void boo()
{
foo<<<m, n>>>();
}
Run Code Online (Sandbox Code Playgroud)
但我收到错误“从 __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 计算工具包\CUDA\v11.0\bin/crt" -L" C:\Program Files\NVIDIA GPU 计算工具包\CUDA\v11.0\lib\x64" cudadevrt.lib cudart.lib cudart_static.lib …