6.15. 对等设备内存访问

本节介绍 CUDA 运行时应用程序编程接口的对等设备内存访问功能。

函数

__host__cudaError_t cudaDeviceCanAccessPeer ( int* canAccessPeer, int  device, int  peerDevice )
查询设备是否可以直接访问对等设备的内存。
__host__cudaError_t cudaDeviceDisablePeerAccess ( int  peerDevice )
禁用对对等设备上内存分配的直接访问。
__host__cudaError_t cudaDeviceEnablePeerAccess ( int  peerDevice, unsigned int  flags )
启用对对等设备上内存分配的直接访问。

函数

__host__cudaError_t cudaDeviceCanAccessPeer ( int* canAccessPeer, int  device, int  peerDevice )
查询设备是否可以直接访问对等设备的内存。
参数
canAccessPeer
- 返回的访问能力
device
- 设备,从此设备访问上的分配peerDevice将被直接访问。
peerDevice
- 设备,其上的分配将被直接访问device驻留。
描述

*canAccessPeer中返回值 1,如果 devicedevice能够直接访问来自peerDevice的内存,否则返回 0。如果可以直接访问peerDevice来自device,则可以通过调用 cudaDeviceEnablePeerAccess() 启用访问。

注意

另请参阅

cudaDeviceEnablePeerAccess, cudaDeviceDisablePeerAccess, cuDeviceCanAccessPeer

__host__cudaError_t cudaDeviceDisablePeerAccess ( int  peerDevice )
禁用对对等设备上内存分配的直接访问。
参数
peerDevice
- 对等设备,禁用对其的直接访问
描述

如果尚未从当前设备启用对peerDevice上内存的直接访问,则返回 cudaErrorPeerAccessNotEnabled

注意

另请参阅

cudaDeviceCanAccessPeer, cudaDeviceEnablePeerAccess, cuCtxDisablePeerAccess

__host__cudaError_t cudaDeviceEnablePeerAccess ( int  peerDevice, unsigned int  flags )
启用对对等设备上内存分配的直接访问。
参数
peerDevice
- 对等设备,启用从当前设备对其的直接访问
flags
- 保留供将来使用,必须设置为 0
描述

成功后,当前设备将立即可以访问来自peerDevice的所有分配。它们将保持可访问状态,直到使用 cudaDeviceDisablePeerAccess() 显式禁用访问,或使用 cudaDeviceReset() 重置任一设备为止。

请注意,此调用授予的访问权限是单向的,为了从peerDevice访问当前设备上的内存,需要对 cudaDeviceEnablePeerAccess() 进行单独的对称调用。

请注意,根据系统配置,存在设备范围和系统范围的限制,如 CUDA 编程指南中“对等内存访问”部分所述。

如果 cudaDeviceCanAccessPeer() 指示当前设备无法直接访问来自peerDevice.

的内存,则返回 cudaErrorPeerAccessAlreadyEnabledpeerDevice如果已启用从当前设备对

的直接访问,则返回 cudaErrorInvalidValueflags如果

注意

另请参阅

cudaDeviceCanAccessPeer, cudaDeviceDisablePeerAccess, cuCtxEnablePeerAccess