peer-to-peer访问?cudaDeviceEnablePeerAccess?多GPU的peer-to-peer访问?cudaDeviceEnablePeerAccess?
Peer-to-Peer(P2P) 指多 GPU 间直接访问对方显存,不经过 host。在支持 P2P 的拓扑下(如同一 PCIe 树、NVLink),可降低延迟、提高带宽,用于多卡 kernel 间直接读写。
cudaDeviceEnablePeerAccess(peerDeviceId, flags) 使当前 device 能访问 peerDeviceId 的显存。需在两端都启用(A 能访问 B、B 能访问 A 需各调一次)。返回 cudaErrorPeerAccessAlreadyEnabled 表示已开。配合 cudaMemcpyPeer(dst, dstDev, src, srcDev, size) 做 D2D 拷贝。
拓扑需支持(同机多卡通常支持;跨机不行)。可先 cudaDeviceCanAccessPeer(&can, dev, peer) 查询。P2P 打开后,分配在 peer 上的指针可在本 device kernel 中通过统一地址或 Peer 接口使用(视驱动与 UVA 而定)。
| 返回模块 | 返回总览 |