CUDA合作组织

时间:2018-06-18 19:22:52

标签: cuda gpu nvidia

我正在使用Pascal GPU同步所有块而不在内核中执行多次传递。但是,我不确定我是否理解它。就我而言,我总共有117000个要处理的元素。使用512个线程的块大小,它需要大约228个块。当我尝试运行内核时,它告诉我块的数量很高:

CUDA error at ../SW/SmithWatermanGPU.cu:122 code=82(cudaErrorCooperativeLaunchTooLarge) "cudaLaunchCooperativeKernel((void*)SWProc, blocks, NUM_THREADS_BLOCK, params)"

我知道我无法使用合作组加载所有这些块。是吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

  

我知道我无法使用合作加载所有这些块   组。是吗?

是。

存在占用限制,您必须尊重合作启动才能成功。这在documentation中有详细讨论。每个块有512个线程,每个SM最多可以限制4个块,而我所知道的最大Pascal GPU有56个SM,这意味着上限为224个块,可能更少,具体取决于你的GPU和内核资源需求。