同一个内核的多次启动是否可以访问共享变量?
Could shared variable be accessed by multiples launches of same kernel?
我对内核中的共享变量有疑问。假设我像这样多次启动同一个内核:
if (index>i && index<n){
K<<<1,n>>>(i, n, n);
}
如果我在内核"K"中声明一个extern __shared__
变量,像这样:
__global__ K(int i, int n){
...
extern __shared__ int test[];
...
}
block内所有内核的所有线程都可以访问它吗?或者共享变量是内核独有的?
- cuda中存在
Per-thread local memory
、Per-block shared memory
和global memory
三种内存类型。 -
__shared__
变量存储在每个块内存中。同一个块中的所有线程都可以访问同一个__shared__
变量。 - 如果变量需要在内核调用之间存在,则有
__device__
限定符,这表明该变量应该存储在全局空间中,并且具有应用程序的生命周期。
相关文章:
- C++子类共享变量?
- 初学者问题:如何访问此变量?
- 子目录之间的 CMAKE 共享变量
- 使用 getter 访问成员变量C++
- 在qt创建器中调试时如何访问字符串变量的完整值?
- 如何在不同的CMakeList.txt之间共享变量?
- OpenMP 任务看不到共享变量的更改
- 访问共享内存而不使用易失性、std::atomic、信号量、互斥锁和自旋锁
- C++ 访问编号变量
- 如何在构造函数中访问类变量以分配它们,而无需在C++中使用此指针
- OpenMP:当我按线程 ID 访问共享变量时,我是否需要一个关键部分
- 无法使用 ILOG CP 的 C++ API 访问决策变量
- 多个 OpenMP 线程读取(而不是写入)共享变量的性能成本?
- 非静态函数可以访问静态变量吗?
- 如何使用 gcc 内联汇编器代码访问成员变量
- 访问共享内存时出现读取访问冲突
- 在 pthread 中使用共享变量
- 对共享变量的无保护访问是否总是数据竞赛
- 同一个内核的多次启动是否可以访问共享变量?
- 线程在主线程退出后访问共享变量