CUDA C++编程指南(3.2.5)——分布式共享内存
AI-安全-功耗 CUBE 博客目录导读
在计算能力9.0中引入的线程块集群(cluster)功能,使得集群内的线程可以访问该集群中所有参与线程块的共享内存。这种分区式共享内存被称为分布式共享内存(Distributed Shared Memory),对应的地址空间称为分布式共享内存地址空间。属于线程块集群的线程可以在分布式地址空间中进行读取、写入或原子操作,无论该地址属于本地线程块还是远程线程块。无论内核是否使用分布式共享内存,共享内存大小的规格(静态或动态)仍以每个线程块为单位。分布式共享内存的大小仅是每个集群的线程块数量乘以每个线程块的共享内存大小。
访问分布式共享内存中的数据需要确保所有线程块都存在。用户可以通过Cluster Group API中的cluster.sync()来保证所有线程块都已开始执行。 用户还需要确保所有分布式共享内存操作在线程块退出前完成,例如,如果远程线程块试图读取某个线程块的共享内存,用户必须确保远程线程块完成共享内存读取后才能退出。
CUDA提供了一种访问分布式共享内存的机制,
