cuda 一共提供了14个接口进行虚拟地址管理,参见 Virtual Memory Management 相关文档。 按照功能大致可分为物理地址管理、虚拟地址管理、地址映射和访问权限管理四类。

PA-物理地址管理

类型是 CUmemGenericAllocationHandle, 相关接口

VA-虚拟地址管理

  1. 预留: cuMemAddressReserve
  2. 释放: cuMemAddressFree
  3. 反查物理handle: cuMemRetainAllocationHandle

Map-地址映射

  1. 映射地址: cuMemMap
  2. 批量映射: cuMemMapArrayAsync
  3. 解除地址映射: cuMemUnmap

Perm-访问权限

  1. 获取: cuMemGetAccess
  2. 设置: cuMemSetAccess

ref

  1. CUDA 官方文档
  2. Blog: Introducing Low-Level GPU Virtual Memory Management