昇腾社区首页
中文
注册
开发者
下载

函数:notify_get_export_key

产品支持情况

产品

是否支持

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

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

Atlas 训练系列产品

x

Atlas 推理系列产品

Atlas 200I/500 A2 推理产品

x

功能说明

将本进程中指定Notify设置为IPC(Inter-Process Communication) Notify,并返回key(即Notify共享名称),用于在多Device上不同进程间实现任务同步,调用本接口前,需调用acl.rt.device_enable_peer_access接口开启两个Device之间的数据交互。

本接口需与以下其它关键接口配合使用,以便实现多Device上不同进程间的任务同步,此处以Device 0上的A进程、Device 1上的B进程为例,说明两个进程间的任务同步接口调用流程:

  1. 在A进程中:
    1. 调用acl.rt.create_notify接口创建Notify。
    2. 调用acl.rt.notify_get_export_key接口导出key(即Notify共享名称)。
    3. 获取B进程的进程ID,并调用acl.rt.notify_set_import_pid接口,将B进程的进程ID设置为白名单。
    4. 调用acl.rt.wait_and_reset_notify接口下发等待任务。
    5. 调用acl.rt.destroy_notify接口销毁Notify。涉及IPC Notify的进程都需要释放Notify,所有涉及IPC Notify的进程都完成释放操作,Notify才真正释放。
  2. 在B进程中:
    1. 调用acl.rt.device_get_bare_tgid接口,获取B进程的进程ID。本接口内部在获取进程ID时已适配物理机、虚拟机场景,用户只需调用本接口获取进程ID,再配合其它接口使用,达到内存共享的目的。若用户不调用本接口、自行获取进程ID,可能会导致后续使用进程ID异常。
    2. 调用acl.rt.notify_import_by_key获取key的信息,并返回本进程可以使用的Notify指针。在调用acl.rt.notify_import_by_key接口前,需确保IPC Notify,不能提前释放。
    3. 调用acl.rt.record_notify接口下发Record任务。
    4. 调用acl.rt.destroy_notify接口销毁Notify。

函数原型

  • C函数原型
    aclError aclrtNotifyGetExportKey(aclrtNotify notify, char *key, size_t len, uint64_t flag)
  • python函数
    1
    key, ret = acl.rt.notify_get_export_key(notify, len, flags)
    

参数说明

参数名

说明

notify

int,指定Notify指针地址。

len

int,Notify共享名称的长度,最小长度为65。

flags

int,是否启用进程白名单校验。

取值为如下宏:

  • ACL_RT_NOTIFY_EXPORT_FLAG_DEFAULT:默认值,启用进程白名单校验。

    配置为该值时,需单独调用acl.rt.notify_set_import_pid接口将使用Notify共享名称的进程ID设置为白名单。

  • ACL_RT_NOTIFY_EXPORT_FLAG_DISABLE_PID_VALIDATION:关闭进程白名单校验。

    配置为该值时,则无需调用acl.rt.notify_set_import_pid接口。

宏的定义如下:

#define ACL_RT_NOTIFY_EXPORT_FLAG_DEFAULT                0x0UL
#define ACL_RT_NOTIFY_EXPORT_FLAG_DISABLE_PID_VALIDATION 0x02UL

返回值说明

返回值

说明

key

str,Notify共享名称。

ret

int,返回0表示成功,返回其他值表示失败。

约束说明

昇腾虚拟化实例场景不支持该操作。