我正在做以下事情:
__shared__ int exForBlockLessThanP = totalElementLessThanPivotEntireBlock[blockIdx.x];
Run Code Online (Sandbox Code Playgroud)
其中totalElementLessThanPivotEntireBlock是GPU上的一个数组.编译器抛出错误,如问题标题中所述.我真的不明白为什么这是一个问题?
共享变量的静态初始化在CUDA中是非法的.问题是在编程模型中未定义每个线程应如何处理共享内存的静态初始化的语义.哪个线程应该写?如果线程之间的值不一致会发生什么?编译器应该如何为这种情况发出代码以及硬件应该如何运行呢?
在您的荒谬示例中,您要求块中的每个线程使用值初始化相同的共享变量 - 基本上是静态编译的内存竞争.
| 归档时间: |
|
| 查看次数: |
3264 次 |
| 最近记录: |