2010-10-15 72 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