可以通过同一内核的多次启动来访问共享变量吗?

时间:2015-09-01 23:38:25

标签: c++ cuda gpu nvidia

我对内核中的共享变量有疑问。假设我像这样多次启动相同的内核:

if (index>i && index<n){
  K<<<1,n>>>(i, n, n);
}    

如果我在内核中宣布&#34; K&#34;这样的extern __shared__变量:

__global__ K(int i, int n){
  ...
  extern __shared__ int test[];
  ...
}

块内所有内核的所有线程都可以访问它吗?或者共享变量是内核独有的?

1 个答案:

答案 0 :(得分:0)

  1. cuda中有三种记忆类型:Per-thread local memoryPer-block shared memoryglobal memory
  2. __shared__个变量存储在每个块的内存中。同一个块中的所有线程都可以访问相同的__shared__ var。
  3. 如果变量需要在内核调用之间存在,则有__device__限定符,表示var应存储在全局空间中并具有应用程序的生命周期。