我是Cuda编程的初学者。为我的简单问题道歉。
我阅读了一些文档和示例。如果我使用内核函数,我应该做类似的事情
kernelfun <<<number of block, number of thread>>>(args).
因此,没有网格编号。我们需要设置计划使用的网格数量吗?
根据我的GPU,我应该如何设置块数和线程数?
因为我看到每个块的最大线程数是512。所以我应该将线程数设置为512,以充分利用GPU。
另一个问题是,当我设置块和线程的数量时,我应该计算项目使用的内存吗?否则计算机将自动安排它,而我不必担心我的项目使用的内存。
我相信内核启动参数是:
kernelfun <<<number of block, number of _threads_>>>(args).
至于设置网格的数量-不,您不必做任何类似的事情。一次内核启动等效于一个网格,该网格由块组成,块由线程组成,线程是执行内核代码的执行单元。
关于网格和块的大小的其他问题很可能是重复的,因为这是一个非常著名的话题-请参见此SO线程。
关于内存的最后一个问题,如果块中的线程消耗的寄存器多于可用的寄存器,则内核将无法成功执行。除此之外,我无法弄清楚您到底在问什么,因此,如果这不能回答您的问题,请添加其他详细信息,例如您关心的是哪种内存等。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句