如何在CUDA中分配共享变量?我有一个内核,需要在属于特定块的线程之间共享数据.我需要两个名为sid
和的共享变量eid
.我这样使用它:
extern __shared__ int sid, eid
Run Code Online (Sandbox Code Playgroud)
但它给了我一个错误,__shared__
变量不能有外部链接.
分配共享内存有两种方法:静态和动态
1,静态
__shared__ int Var1[10]
Run Code Online (Sandbox Code Playgroud)
2,动态:应添加"extern"关键字
extern __shared__ int Var1[]
Run Code Online (Sandbox Code Playgroud)
如果使用动态方式分配共享内存,则应在调用函数时设置共享内存大小.例如:
testKernel <<< grid, threads, size>>>(...)
第三个段是共享内存的大小.这样,所有共享存储器都从相同的地址开始.所以如果你想定义几个共享的记忆.你应该编写如下代码.
__global__ void func(...)
{
extern __shared__ char array[];
short * array0 = (short*)array;
float * array1 = (float*)(&array0[128]);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6936 次 |
最近记录: |