2010-10-15 73 views
1

我已经通过CUDA编程指南过去了,我无法理解的线程分配方法如下所示:CUDA线程分配

dim3 dimGrid(2, 2, 1); 
dim3 dimBlock(4, 2, 2); 
KernelFunction<<< dimGrid, dimBlock >>>(. . .); 

一些能解释一下线程分配给上述条件?

+1

阅读编程指南。再次。 – fabrizioM 2010-10-15 16:08:04

回答

5

一种直观的方式来考虑网格是它们可视化:

  • 网格:网格是的水平和垂直线的晶格。因此它只有2个维度。
  • Block:想象一块木头。它有全部3个维度:长度,宽度和高度。
  • 块由线程组成。
  • 网格由块组成。

您的dimBlock(4, 2, 2)意味着每个块都有4 x 2 x 2 = 16个线程。 您的dimGrid(2, 2, 1)表示网格有2 x 2 x 1 = 4块。 因此,您的内核在4个块的网格上启动,其中每个块都有16个线程。总之,您的内核将以16 x 4 = 64线程启动。

+0

哇..这是一个伟大的思考方式。感谢分享。 – Lostsoul 2012-05-19 22:17:38