我正在学习 CUDA 教程,在某个时候共享内存是动态分配的,如下所示:
extern __shared__ float4[] buffer;
除了vector类型
[]
后面的方括号float4
外,似乎还蛮容易理解的。他们的意思是什么?我为什么要写它们?
这用于动态共享内存,正确的方法是:
extern __shared__ float4 buffer[]
,不是
extern __shared__ float4[] buffer
当你使用这个时,你还必须在内核调用中使用分配内存的大小:
size_t blockSize = theBlockSize * theBlockSize
myfunc<<< NbBlocks, NbThreadsPerBlock , sizeof(float4) * blockSize>>>