我得到了关于为cuda编程设置线程数和块数的正确值的混淆读物。在阅读了几个指南和许多提示后,我没有得到我搜索的答案。 我的GPU:Nvidia GT645M 计算能力:3.0
据我所知:
每个块的最大线程数在我的情况下为1024(32 x 32)
在我的情况下,网格中的最大块数为2 ** 31 - 1 = 4294967295块
多处理器计数= 2
块的数量取决于输入数据=(输入数据)/(每块的线程数)
对于像[1,2,...... 10] + [1,2,...... 10]这样的输入数据,我需要10个线程和1个块。
我的计算问题:
例如,我有这样的输入数据:
git rev-parse --show-toplevel
我尝试对此向量进行操作,如: ' +',' - ',' *'按价值
问题1:
我的知识:
GPU cuda计算的工作方式如下:
对于numpy数组中的每个值 - > cuda块与一个线程一起使用。
我的意思是
(x = [0,1,...... 9])+(y = [1,2,...... 10])= x [0] + y [0] in:block(0,0),螺纹(0,0),
那么x [1] + y [1] in:block(0,0),thread(1,0)等等。
这是对的吗?
问题2:
让我们说:
线程数= 5
块数= 1
那么这一个块中的所有线程都将运行2次x + y?
问题3:
一次可以同时运行多少个块?
如果您可以通过简单的矢量示例解释cuda上的逐步计算,那将很好。
感谢您的帮助,请不要给cuda指南任何链接,我会感到困惑,阅读它们。请举例说明:)