昇腾社区首页
中文
注册

函数:mem_import_from_shareable_handle

产品支持情况

产品

是否支持

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

Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件

Atlas 训练系列产品

Atlas 推理系列产品

Atlas 200I/500 A2 推理产品

Atlas 200/300/500 推理产品

功能说明

在本进程中获取shareable_handle里的信息,并返回本进程中的handle,用于在本进程中建立虚拟地址与物理地址之间的映射关系。本接口还支持生成指定Device上的handle。

本接口需与其它接口配合使用,以便实现内存共享的目的,配合使用流程请参见acl.rt.mem_export_to_shareable_handle接口处的说明。

函数原型

  • C函数原型
    1
    aclError aclrtMemImportFromShareableHandle(uint64_t shareableHandle, int32_t deviceId, aclrtDrvMemHandle *handle)
    
  • python函数
    1
    handle, ret = acl.rt.mem_import_from_shareable_handle(shareable_handle, device_id)
    

参数说明

参数名

说明

shareableHandle

int,待共享的shareable_handle。

acl.rt.mem_export_to_shareable_handle接口中导出的shareable_handle保持一致。

deviceId

int,用于生成指定Device ID上的handle。

用户调用acl.rt.get_device_count接口获取可用的Device数量后,这个Device ID的取值范围:[0, (可用的Device数量 - 1)]

返回值说明

返回值

说明

handle

int,本进程的物理内存handle。

ret

int,错误码,返回0表示成功,返回其它值表示失败。

约束说明

  • Ascend RC形态不支持调用本接口。
  • 在调用本接口前,需确保待共享的物理内存存在,不能提前释放。
  • handle与shareable_handle是一一对应的关系,在同一个进程中,不允许一对多、或多对一,否则报错,例如重复调用本接口导入时则会返回报错。
  • 不支持同一个进程中调用acl.rt.mem_import_from_shareable_handle、acl.rt.mem_export_to_shareable_handle这两个接口,只支持跨进程调用。
  • 支持在一个Device上调用acl.rt.mem_export_to_shareable_handle接口导出handle,然后调用本接口生成另一个Device上的handle。
  • 内存使用完成后,要及时调用acl.rt.free_physical销毁handle,则需所有调用本接口的进程都销毁shareable_handle的情况下,handle才会正在销毁。