如可变内存空间规范中所述,使用__shared分配共享内存__ 内存空间说明符。 正如线程层次结构中提到的,共享内存预计比全局内存快得多 并在共享内存中详细说明。它可以用作暂存存储器(或软件管理的缓存) 以最小化来自CUDA块的全局存储器访问,如以下矩阵乘法所示 实例 以下代码示例是矩阵乘法的直接实现 利用共享内存。每个线程读取一行A和一列B并计算 C的相应元素,如图8所示。因此,A从全局读取B.宽度倍 存储器和B被读取A.高度倍 Distributed Shared Memory 计算能力9.0中引入的线程块集群为线程中的线程提供了能力 块集群,以访问集群中所有参与线程块的共享内存。此分区 共享内存称为分布式共享内存,对应的地址空间为 称为分布式共享内存地址空间。属于线程块集群的线程可以 在分布式地址空间中读取、写入或执行原子,无论地址是否属于 到本地线程块或远程线程块。内核是否使用分布式共享 内存与否,共享内存大小规范,静态或动态仍然是每个线程块。这个 分布式共享内存的大小就是每个集群的线程块数乘以 每个线程块的共享内存大小。 访问分布式共享内存中的数据需要所有线程块都存在。用户可以保证 所有线程块都已开始使用cluster Group API中的cluster.sync()执行。 用户还需要确保所有分布式共享内存操作在退出之前发生 线程块的,例如,如果远程线程块正试图读取给定线程块的共享存储器, 用户需要确保远程线程块读取的共享内存已完成,然后才能 出口 |
说点什么...