是否在CUDA中对全局内存原子进行一般读写,如果:
至少在开普勒和费米通用的4字节读取和写入全局内存原子的翘曲级或8/16字节指令原子在半/四分之一翘曲级别:
如果那些关于经纱水平上原子性的假设是正确的,那么有什么方法可以利用这些知识而不冒将来计算能力的风险呢?
发布于 2013-12-25 17:35:18
读写通常与缓存有关。当事务被分发到全局内存时,在CUDA编程或内存模型中无法保证原子性,除非使用atomic指令。
例如,假设线程块中的一个线程在开普勒上更新L2中的4字节数量。现在,另一个线程,在另一个翘曲、线程块或内核中,可以只更新L2中这4个字节中的一个,然后这个缓存就会被驱逐到全局内存中。当cacheline被逐出到全局内存时,它可能不代表原始线程甚至是第二个线程所写的内容(例如,如果有第三个写.)。
请记住,L2是一个写回缓存,不能禁用,并且不会被全局读写所绕过,除非是atomic指令。
https://stackoverflow.com/questions/20775033
复制相似问题