设置了 shared 变量
想设置一个临界区 让某一个线程访问时 其它线程不能访问 以免数据错误
cuda 对这有什么支持吗
(1)作为硬件,fermi和kepler分别有LDSLK/STSUL(fermi)和LDSLK/STSCUL(kepler)指令对,但是资料不公开。我这里有前者的,使用LDSLK可以锁定一个shared memory中的位置(LDSLK),然后访问完毕后,安全的更新并解锁(STSUL)。但是我不能给您。抱歉。
您可以询问驻版的NVIDIA官方技术支持,能否提供资料。
(2)作为一种高级语言,CUDA C/C++没有直接的临界区支持。但是您可以通过原子操作实现一个。
(3)作为人,使用者可以尝试改变算法,以让block里的线程能充分协作,从而规避需要“临界区”之类的东东。
感谢您的来访。
cuda 原子操作实现临界区 有这方面的资料吗
您可以直接搜索cuda + 原子操作 + 锁 之类的关键字。
但是我强烈不建议您这样做。
谢谢您的解答
您客气了。服务您是我的荣幸。