我正在使用Pascal GPU同步所有块而不在内核中执行多次传递。但是,我不确定我是否理解它。就我而言,我总共有117000个要处理的元素。使用512个线程的块大小,它需要大约228个块。当我尝试运行内核时,它告诉我块的数量很高:
CUDA error at ../SW/SmithWatermanGPU.cu:122 code=82(cudaErrorCooperativeLaunchTooLarge) "cudaLaunchCooperativeKernel((void*)SWProc, blocks, NUM_THREADS_BLOCK, params)"
我知道我无法使用合作组加载所有这些块。是吗?
非常感谢。
答案 0 :(得分:1)
我知道我无法使用合作加载所有这些块 组。是吗?
是。
存在占用限制,您必须尊重合作启动才能成功。这在documentation中有详细讨论。每个块有512个线程,每个SM最多可以限制4个块,而我所知道的最大Pascal GPU有56个SM,这意味着上限为224个块,可能更少,具体取决于你的GPU和内核资源需求。