CUDA:异步复制与合并的全局内存读取原子性

问题描述

我正在阅读有关Cuda中内存模型的内容。特别是,当将数据从全局复制到共享内存时,我对shared_mem_data[i] = global_mem_data[i]的理解是,它是以合并的 atomic 方式完成的,即,warp中的每个线程都读取global_data[i]一个不可分割的交易中。正确吗?

解决方法

不完全是。即,直到所有其他线程所有扭曲线程都有其输出,扭曲中的线程才会恢复执行。并且-GPU的内存总线可能(或可能不)足够宽,以允许在其上执行完整的4字节每个线程线程读取。但是,AFAICR不能保证读取的内存是原子的。并且在读取过程中可能会更改内存中那些位置中的某些值。