我已经阅读了CUDA编程指南,我无法理解下面显示的线程分配方法:
dim3 dimGrid( 2, 2, 1 );
dim3 dimBlock( 4, 2, 2 );
KernelFunction<<< dimGrid, dimBlock >>>(. . .);
有些人可以解释如何为上述条件分配线程吗?
答案 0 :(得分:5)
考虑网格和阻止的直观方式是将其可视化:
您的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
个线程启动。