0
我明白,当我在内核声明一个共享存储器阵列,相同的尺寸的阵列由所有线程声明。代码如CUDA共享存储器寻址
__shared__ int s[5];
将在每个线程中创建一个20字节的数组。我理解寻址共享内存的方式是它在所有线程中都是通用的。所以,如果我解决下标10如下
s[10] = 1900;
它是在所有的线程完全相同的内存位置。不会出现不同的线程访问下标10的不同共享内存地址。这是正确的吗?编译器当然会抛出下标超出范围的警告。
顾名思义,是在共享存储器中,而不是在每一个线程创建的共享存储器阵列。换句话说,只有一个共享的阵列's',这就是为什么不同的线程共享内存访问同一个地址时,有可能是银行的冲突。 – chaohuang
共享内存由块中的线程共享,而不是内核的所有线程共享。它可以被当作一个可编程的缓存。 – konjac