CUDA线程分配

时间:2010-10-15 11:19:24

标签: cuda

我已经阅读了CUDA编程指南,我无法理解下面显示的线程分配方法:

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

有些人可以解释如何为上述条件分配线程吗?

1 个答案:

答案 0 :(得分:5)

考虑网格阻止的直观方式是将其可视化:

  • 网格:网格是水平线和垂直线的网格。因此它只有2个维度。
  • 阻止:想想一块木头。它有三个尺寸:长度,宽度和高度。
  • 一个块由线程组成。
  • 网格由块组成。

您的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个线程启动。