我无法找到CUDA提供的有关全局内存写入可见性的任何保证(如果有)的文档。假设我有以下内容(为简单起见,只有一个块):
int tid = threadIdx.x;
someGlobalMemory[tid] = 1;
int globalMemoryVal = someGlobalMemory[tid];
是否保证globalMemoryVal == 1
?通常情况并非如此(通常需要__threadfence()来提交全局写入),但是想知道cuda规范是否保证来自当前线程的全局写入是立即可见的。如果不能保证,__threadfence()是保证来自当前线程的写入对来自同一线程的即将读取可见的典型方法吗?是否有一个较弱的原语只能保证当前线程(而不是整个块)的可见性?