aclrtMemExportToShareableHandleV2

产品支持情况

产品 是否支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

将本进程通过aclrtMallocPhysical接口获取到的Device物理内存handle导出,以便后续将Device物理内存共享给其它进程。

本接口是在接口aclrtMemExportToShareableHandle基础上进行了增强,用户可通过shareType参数指定导出AI Server内的共享句柄,或导出跨AI Server的共享句柄。AI Server通常多个NPU设备组成的服务器形态的统称。

本接口的使用流程可参见aclrtMemExportToShareableHandle,但本接口需配合调用aclrtMemSetPidToShareableHandleV2接口设置进程白名单、调用aclrtMemImportFromShareableHandleV2接口导入共享句柄。

函数原型

aclError aclrtMemExportToShareableHandleV2(aclrtDrvMemHandle handle, uint64_t flags, aclrtMemSharedHandleType shareType, void *shareableHandle)

参数说明

参数名 输入/输出 说明
handle 输入 存放物理内存信息的handle。
需先在本进程调用aclrtMallocPhysical接口申请物理内存,该接口调用成功,会返回一个handle。
handle与shareableHandle是一一对应的关系,在同一个进程中,不允许一对多、或多对一,否则报错,例如重复调用本接口导出时则会返回报错。
flags 输入 是否启用进程白名单校验。
取值为如下宏:

- ACL_RT_VMM_EXPORT_FLAG_DEFAULT:默认值,启用进程白名单校验。配置为该值时,需单独调用aclrtMemSetPidToShareableHandleV2接口将使用shareableHandle的进程ID设置为白名单。
- ACL_RT_IPC_MEM_EXPORT_FLAG_DISABLE_PID_VALIDATION:关闭进程白名单校验。配置为该值时,则无需调用aclrtMemSetPidToShareableHandleV2接口。


宏的定义如下:
#define ACL_RT_VMM_EXPORT_FLAG_DEFAULT 0x0UL
#define ACL_RT_VMM_EXPORT_FLAG_DISABLE_PID_VALIDATION 0x1UL
shareType 输入 导出的共享句柄类型。
shareableHandle 输出 指向共享句柄的指针。其指向的内存由调用者提供,大小根据shareType决定:
若shareType为ACL_MEM_SHARE_HANDLE_TYPE_DEFAULT,则指向一个uint64_t变量。
若shareType为ACL_MEM_SHARE_HANDLE_TYPE_FABRIC,则指向一个aclrtMemFabricHandle结构体。
typedef struct aclrtMemFabricHandle {
uint8_t data[128];
} aclrtMemFabricHandle;

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError

约束说明

  • 支持AI Server内跨进程共享物理内存的产品型号如下,若跨Device还需配合aclrtDeviceEnablePeerAccess接口使用。

    Atlas A3 训练系列产品/Atlas A3 推理系列产品

    Atlas A2 训练系列产品/Atlas A2 推理系列产品

  • 仅Atlas A3 训练系列产品/Atlas A3 推理系列产品支持跨AI Server的跨进程共享物理内存。

  • 不支持昇腾虚拟化实例场景。