CUDA __global__函数递归

时间:2013-09-19 20:27:41

标签: cuda

我在CUDA中有一个__global__函数。可以自称吗?

以下是我的例子:

__global__ void 
force_create_empty_nodes (struct NODE *Nodes, int topnode, int bits, int no, int x, int y, 
                          int z, struct topnode_data *TopNodes)
{
    /// * Some code *///
    force_create_empty_nodes <<<1, 8>>>(Nodes, topnode+1, bits+1, no+1, 
                                             x+1, y+1, z+1, TopNodes);
}

我收到的错误是:

error: kernel launch from __device__ or __global__ functions requires separate compilation mode

这是我的make命令:

nvcc -c -arch compute_35 cudaForceNodes.cu -o obj/cudaForceNodes.o

1 个答案:

答案 0 :(得分:3)

从另一个内核调用内核称为动态并行。它的文档是here

需要:

  1. 计算能力3.5设备。您可以通过运行cuda deviceQuery示例找到设备的计算能力。
  2. 编译命令中的各种开关,包括指定cc3.5架构的编译和单独(设备)编译所需的开关,以及与设备运行时的链接。
  3. 由于您的GT550M不是cc 3.5设备,因此您将无法使用此功能。没有其他方法可以在内核中调用内核。