共享内存
一、共享内存的概念
- 共享内存实际上是可受用户控制的一级缓存。申请共享内存后,其内容在每一个用到的
block
被复制一遍,使得在每个block
内,每一个thread
都可以访问和操作这块内存,而无法访问其他block
内的共享内存。这种机制就使得一个block
之内的所有线程可以互相交流和合作。 - 在设备代码中声明共享内存要使用
__shared__
变量声明说明符。 - 共享内存有两种方法:静态与动态
//动态分配共享内存
dynamicReverse<<<1, n, n*sizeof(int)>>>(d_d, n);
二、代码
代码如下(示例):
#include <stdio.h>
__global__ void staticReverse(int *d, int n)
{
__shared__ int s[64];
int t = threadIdx.x;
int tr = n-t-1;
s[t] = d[t];
__syncthreads();
d[