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