请考虑以下代码:
__global__ void kernel(int *something) {
extern __shared__ int shared_array[];
// Some operations on shared_array here.
}
Run Code Online (Sandbox Code Playgroud)
是否可以将整个shared_array设置为某个值 - 例如0 - 而无需在某个线程中明确地寻址每个单元格?
har*_*ism 14
您可以像这样并行高效地初始化共享阵列
// if SHARED_SIZE == blockDim.x, eliminate this loop
for (int i = threadIdx.x; i < SHARED_SIZE; i += blockDim.x)
shared_array[i] = INITIAL_VALUE;
__syncthreads();
Run Code Online (Sandbox Code Playgroud)
Cyg*_*sX1 12
不.共享内存未初始化.你必须以某种方式自己初始化它,不管怎样......
从CUDA C编程指南3.2,B.2.4.2节,第2段:
__shared__变量不能作为声明的一部分进行初始化.
这也会丢弃共享变量的非平凡默认构造函数.