2014-09-26 35 views
0

我是Cuda编程的初学者。道歉为我的简单的问题。我们是否需要在cuda编程中设置网格的数量?

我看了一些文档和例子。如果我使用内核函数,我应该这样做:

kernelfun <<<number of block, number of thread>>>(args). 

所以没有网格编号。我们是否需要设置我们计划使用的网格数量?

根据我的GPU,应该怎么设置线程块的数量,以及多少? enter image description here

因为我看到每块的最大线程数是512。所以我应该设置线程的num是512充分利用GPU。

另一个问题是要计算我的项目中使用的内存,当我设定的块数和线程?或者电脑会自动安排,我不需要关心我的项目使用的内存。

回答

1

相信内核启动参数是:

kernelfun <<<number of block, number of _threads_>>>(args). 

至于设置网格数 - 不,你没有做这样的事情。一次内核启动相当于一个网格,它由块和块组成,线程由线程组成,线程是执行单元执行内核的代码。

您对电网和块大小的其他问题是最有可能重复,因为这是一个相当有名的主题 - 请参阅此SO thread的实例。

至于最后一个问题,内存的担忧,如果块中的线程消耗比提供更多的寄存器,那么内核根本不会成功执行。除此之外,我想不出有什么要问究竟,所以如果不回答,那么你质疑,请添加额外的细节,例如哪些类型的内存你关心等

+0

您好,感谢您的回答。你能否在我最近编辑的文章中回答其他问题? – Vivian 2014-09-26 12:36:38

相关问题