从笔记本中迁移至网上
函数类型
_global_ 修饰内核函数的,只能被主机函数调用。内核函数:运行在GPU上的函数
_host_ 可缺省,主机函数,运行在CPU上的函数。
_device_ 只能被内核函数调用的内核函数
内建变量
dim3
threadId
bolckId
gridId
Dim3 Dg(Dg.x, Dg.y) 表示grid中每行有Dg.x个block,每列有Dg.y个block。第三维恒为1,。Dg.x与Dg.y的最大值为 65535
Dim3 Db(Db.x, Db.y, Db.z) 表示每个block中每行有Dg.x个thread,每列有Db.y个thread,高度为Db.z
对于(Dx, Dy)二维块, (x, y)ID: x + yDx
对于(Dx, Dy, Dz)三维块, (x, y, z)ID: x + yDx + zDxDy
thread、warp、processor
SP(streaming Process),SM(streaming multiprocessor)是硬件(GPU hardware)概念。而thread,block,grid,warp是软件上的(CUDA)概念。
在执行CUDA程序时,每个 stream processor 就对应一个 thread, 每个 multiprocessor 对应一个block。但由于stream processor 进行运算都有 latency,提取内存也有latency,因此CUDA执行程序时,以warp为单位。一个warp内有32个thread,分成两组16 threads 的half-warp。由于stream processor 的运算