我正在使用C
并行化编写CUDA
程序,我想知道内核是否有可能return a break
到CPU
。
我的程序基本上做了一个for循环,在那个循环中我采取了几个并行动作;在每次迭代开始时,我必须控制驻留在GPU
上的变量(测量刚刚完成的迭代的改进)。
我的愿望是对该变量的控制会向CPU
返回一个中断,以便退出for循环(我使用一个简单的kernel <<<1,1>>>
来控制。)
我已经尝试在CPU上复制该变量并对CPU进行控制,但是,正如我所担心的那样,它会降低整体执行速度。
有什么建议吗?
答案 0 :(得分:2)
目前,支持CUDA的GPU上的任何正在运行的代码都无法抢占主机CPU上运行的代码。因此,尽管您所询问的内容并不明显,但我相当肯定答案不仅仅是因为设备代码中没有可用的主机端抢占或中断机制。
答案 1 :(得分:0)
CPU代码与GPU代码之间没有任何关联。 使用CUDA时你所能做的就是:
所以在循环中考虑这些步骤,剩下的就是检查结果并在需要时打破循环。