CANN Runtime事件管理API参考 # 7. Event管理【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime本章节描述 CANN Runtime 的 Event 管理接口用于事件的创建、记录、同步、计时及 IPC 跨进程共享。aclError aclrtCreateEvent(aclrtEvent *event)创建Event创建出来的Event可用于统计两个Event之间的耗时、多Stream之间的任务同步等场景。aclError aclrtCreateEventWithFlag(aclrtEvent *event, uint32_t flag)创建带flag的Event不同flag的Event用于不同的功能。支持创建Event时携带多个flag按位进行或操作从而同时使能对应flag的功能。aclError aclrtCreateEventExWithFlag(aclrtEvent *event, uint32_t flag)创建带flag的Event不同flag的Event用于不同的功能。aclError aclrtDestroyEvent(aclrtEvent event)销毁Event支持在Event未完成前调用本接口销毁Event。此时本接口不会阻塞线程等Event完成Event相关资源会在Event完成时被自动释放。aclError aclrtRecordEvent(aclrtEvent event, aclrtStream stream)在指定Stream中记录一个Event。异步接口。aclError aclrtResetEvent(aclrtEvent event, aclrtStream stream)复位Event恢复Event初始状态便于Event对象重复使用。异步接口。aclError aclrtQueryEvent(aclrtEvent event, aclrtEventStatus *status)查询与本接口在同一线程中的aclrtRecordEvent接口所记录的Event是否执行完成。aclError aclrtQueryEventStatus(aclrtEvent event, aclrtEventRecordedStatus *status)查询该Event捕获的所有任务的执行状态。具体见aclrtRecordEvent接口参考Event捕获的细节。aclError aclrtQueryEventWaitStatus(aclrtEvent event, aclrtEventWaitStatus *status)调用aclrtStreamWaitEvent接口后查询该Event对应的等待任务是否都执行完成。aclError aclrtSynchronizeEvent(aclrtEvent event)阻塞当前线程运行直到Event捕获的所有任务都执行完成。aclError aclrtSynchronizeEventWithTimeout(aclrtEvent event, int32_t timeout)阻塞当前线程运行直到Event捕获的所有任务都执行完成具体见aclrtRecordEvent接口参考Event捕获的细节该接口是在接口aclrtSynchronizeEvent基础上进行了增强支持用户设置永久等待、或配置具体的超时时间若配置具体的超时时间则当应用程序异常时可根据所设置的超时时间自行退出。aclError aclrtEventElapsedTime(float *ms, aclrtEvent startEvent, aclrtEvent endEvent)统计两个Event之间的耗时。aclError aclrtStreamWaitEvent(aclrtStream stream, aclrtEvent event)阻塞指定Stream的运行直到指定的Event完成支持多个Stream等待同一个Event的场景。异步接口。aclError aclrtStreamWaitEventWithTimeout(aclrtStream stream, aclrtEvent event, int32_t timeout)获取算子二进制数据在Device上的内存地址及内存大小。aclError aclrtSetOpWaitTimeout(uint32_t timeout)本接口用于设置等待Event完成的超时时间。aclError aclrtEventGetTimestamp(aclrtEvent event, uint64_t *timestamp)获取Event的执行结束时间点表示从AI处理器系统启动以来的时间。aclError aclrtGetEventId(aclrtEvent event, uint32_t *eventId)获取指定Event的ID。aclError aclrtGetEventAvailNum(uint32_t *eventCount)查询当前Device上可用的Event数量。aclError aclrtIpcGetEventHandle(aclrtEvent event, aclrtIpcEventHandle *handle)将本进程中的指定Event设置为IPCInter-Process Communication Event并返回其handle即Event句柄用于在跨进程场景下实现任务同步支持同一个Device内的多个进程以及跨Device的多个进程。aclError aclrtIpcOpenEventHandle(aclrtIpcEventHandle handle, aclrtEvent *event)在本进程中获取handle的信息并返回本进程可以使用的Event指针。aclrtCreateEventaclError aclrtCreateEvent(aclrtEvent *event)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明创建Event创建出来的Event可用于统计两个Event之间的耗时、多Stream之间的任务同步等场景。参数说明参数名输入/输出说明event输出Event的指针。类型定义请参见aclrtEvent。返回值说明返回0表示成功返回其他值表示失败请参见aclError。约束说明采用本API创建的Event不支持在aclrtResetEvent接口中使用否则会导致未定义的行为。调用本接口创建Event时并不会实际申请Event资源只有在调用aclrtRecordEvent接口时才会进行资源申请因此在调用aclrtRecordEvent时可能会出现线程阻塞等待Event资源的释放。不同型号的硬件支持的Event数量不同如下表所示型号单个Device支持的Event最大数Ascend 950PR/Ascend 950DTAtlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品65536aclrtCreateEventWithFlagaclError aclrtCreateEventWithFlag(aclrtEvent *event, uint32_t flag)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明创建带flag的Event不同flag的Event用于不同的功能。支持创建Event时携带多个flag按位进行或操作从而同时使能对应flag的功能。参数说明参数名输入/输出说明event输出Event的指针。类型定义请参见aclrtEvent。flag输入Event指针的flag。当前支持将flag设置为如下宏- ACL_EVENT_TIME_LINE使能该bit表示创建的Event需要记录时间戳信息。注意使能时间戳功能会影响Event相关接口的性能。- ACL_EVENT_SYNC使能该bit表示创建的Event支持多Stream间的同步。- ACL_EVENT_CAPTURE_STREAM_PROGRESS使能该bit表示创建的Event用于跟踪stream的任务执行进度。- ACL_EVENT_EXTERNAL使能该bit表示创建的Event用于任务捕获场景下的任务更新功能相关说明请参见aclmdlRICaptureBegin。注意该flag不支持与其他flag进行位或操作。- ACL_EVENT_DEVICE_USE_ONLY使能该bit表示创建的Event仅在Device上调用。仅如下型号支持ACL_EVENT_DEVICE_USE_ONLYAscend 950PR/Ascend 950DTAtlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品宏的定义如下#define ACL_EVENT_TIME_LINE 0x00000008U#define ACL_EVENT_SYNC 0x00000001U#define ACL_EVENT_CAPTURE_STREAM_PROGRESS 0x00000002U#define ACL_EVENT_EXTERNAL 0x00000020U#define ACL_EVENT_DEVICE_USE_ONLY 0x00000010U返回值说明返回0表示成功返回其他值表示失败请参见aclError。约束说明调用本接口创建Event时flag为bitmap支持将flag设置为单个宏、或者对多个宏进行或操作。若flag参数值不包含ACL_EVENT_SYNC宏则不支持在以下API中使用本接口创建的EventaclrtResetEvent、aclrtStreamWaitEvent、aclrtQueryEventWaitStatus。若flag参数值包含ACL_EVENT_SYNC宏或者flag设置为ACL_EVENT_EXTERNAL时则创建出来的Event数量受限具体如下型号单个Device支持的Event最大数Ascend 950PR/Ascend 950DTAtlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品65536aclrtCreateEventExWithFlagaclError aclrtCreateEventExWithFlag(aclrtEvent *event, uint32_t flag)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明创建带flag的Event不同flag的Event用于不同的功能。支持创建Event时携带多个flag按位进行或操作从而同时使能对应flag的功能。创建Event时Event资源不受硬件限制。参数说明参数名输入/输出说明event输出Event的指针。类型定义请参见aclrtEvent。flag输入Event指针的flag。当前支持将flag设置为如下宏- ACL_EVENT_TIME_LINE使能该bit表示创建的Event需要记录时间戳信息。注意使能时间戳功能会影响Event相关接口的性能。- ACL_EVENT_SYNC使能该bit表示创建的Event支持多Stream间的同步。- ACL_EVENT_CAPTURE_STREAM_PROGRESS使能该bit表示创建的Event用于跟踪stream的任务执行进度。- ACL_EVENT_IPC使能该bit表示创建的Event用于进程间通信详细说明请参见aclrtIpcGetEventHandle。注意该flag不支持与其他flag进行位或操作。本flag创建出来的Event不支持在以下接口或场景中使用aclrtResetEvent、aclrtQueryEvent、aclrtQueryEventWaitStatus、aclrtEventElapsedTime、aclrtEventGetTimestamp、aclrtGetEventId、模型捕获场景参见aclmdlRICaptureBegin中的说明否则返回报错。宏的定义如下#define ACL_EVENT_TIME_LINE 0x00000008U#define ACL_EVENT_SYNC 0x00000001U#define ACL_EVENT_CAPTURE_STREAM_PROGRESS 0x00000002U#define ACL_EVENT_IPC 0x00000040U返回值说明返回0表示成功返回其他值表示失败请参见aclError。约束说明采用本API创建的Event不支持在以下接口中使用aclrtResetEvent、aclrtQueryEvent、aclrtQueryEventWaitStatus否则返回报错。调用本接口创建Event时flag为bitmap支持将flag设置为单个宏、或者对多个宏进行或操作。若flag参数值不包含ACL_EVENT_SYNC宏则不支持在aclrtStreamWaitEvent接口中使用本接口创建的Event。若flag参数值包含ACL_EVENT_SYNC宏并不会实际申请Event资源只有在调用aclrtRecordEvent接口时才会进行资源申请因此在调用aclrtRecordEvent时可能会出现线程阻塞等待Event资源的释放。不同型号的硬件支持的Event数量不同如下表所示型号单个Device支持的Event最大数Ascend 950PR/Ascend 950DTAtlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品65536aclrtDestroyEventaclError aclrtDestroyEvent(aclrtEvent event)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明销毁Event支持在Event未完成前调用本接口销毁Event。此时本接口不会阻塞线程等Event完成Event相关资源会在Event完成时被自动释放。参数说明参数名输入/输出说明event输入待销毁的Event。类型定义请参见aclrtEvent。返回值说明返回0表示成功返回其他值表示失败请参见aclError。约束说明在调用aclrtDestroyEvent接口销毁指定Event时需确保其它接口没有正在使用该Event。aclrtRecordEventaclError aclrtRecordEvent(aclrtEvent event, aclrtStream stream)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明在指定Stream中记录一个Event。异步接口。aclrtRecordEvent接口与aclrtStreamWaitEvent接口配合使用时主要用于多Stream之间同步等待的场景。调用aclrtRecordEvent接口时会捕获当前Stream上已下发的任务并记录到Event事件中因此后续若调用aclrtQueryEventStatus或aclrtStreamWaitEvent接口时会检查或等待该Event事件中所捕获的任务都已经完成。另外对于使用aclrtCreateEventExWithFlag创建的EventaclrtRecordEvent接口支持对同一个Event多次record实现Event复用每次Record会重新捕获当前Stream上已下发的任务并覆盖保存到Event中。在调用aclrtStreamWaitEvent接口时会使用最近一次Event中所保存的任务且不会被后续的aclrtRecordEvent调用影响。在首次调用aclrtRecordEvent接口前由于Event中没有任务因此调用aclrtQueryEventStatus接口时会返回ACL_EVENT_RECORDED_STATUS_COMPLETE。参数说明参数名输入/输出说明event输入待记录的Event。类型定义请参见aclrtEvent。stream输入指定Stream。类型定义请参见aclrtStream。多Stream同步等待场景下例如Stream2等待Stream1的场景此处配置为Stream1。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtResetEventaclError aclrtResetEvent(aclrtEvent event, aclrtStream stream)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明复位Event恢复Event初始状态便于Event对象重复使用。异步接口。对于多个Stream间任务同步的场景通常在调用aclrtStreamWaitEvent接口之后再复位Event。参数说明参数名输入/输出说明event输入待复位的Event。类型定义请参见aclrtEvent。stream输入指定Stream。类型定义请参见aclrtStream。多个Stream间任务同步的场景例如Stream2中的任务依赖Stream1中的任务时此处配置为Stream2。返回值说明返回0表示成功返回其他值表示失败请参见aclError。约束说明仅支持复位由aclrtCreateEventWithFlag接口创建的、带有ACL_EVENT_SYNC标志的Event。注意在多个Stream中的任务需要等待同一个Event的情况下不建议使用调用此接口来复位Event。如图所示如果在stream2中的aclrtStreamWaitEvent接口之后调用aclrtResetEvent接口Event将被复位这会导致stream3中的aclrtStreamWaitEvent接口无法成功。aclrtQueryEvent废弃aclError aclrtQueryEvent(aclrtEvent event, aclrtEventStatus *status)须知此接口后续版本会废弃请使用aclrtQueryEventStatus接口。产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明查询与本接口在同一线程中的aclrtRecordEvent接口所记录的Event是否执行完成。参数说明参数名输入/输出说明event输入指定待查询的Event。类型定义请参见aclrtEvent。status输出Event状态的指针。类型定义请参见aclrtEventStatus。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtQueryEventStatusaclError aclrtQueryEventStatus(aclrtEvent event, aclrtEventRecordedStatus *status)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明查询该Event捕获的所有任务的执行状态。具体见aclrtRecordEvent接口参考Event捕获的细节。参数说明参数名输入/输出说明event输入指定待查询的Event。类型定义请参见aclrtEvent。status输出Event状态的指针。类型定义请参见aclrtEventRecordedStatus。如果该Event捕获的所有任务都已经执行完成则返回ACL_EVENT_RECORDED_STATUS_COMPLETE如果有任何一个任务未执行完成则返回ACL_EVENT_RECORDED_STATUS_NOT_READY。返回值说明返回0表示成功返回其他值表示失败请参见aclError。约束说明如果用户在不同线程上分别调用aclrtRecordEvent和aclrtQueryEventStatus可能由于多线程导致这两个API的执行时间乱序进而导致查询到的Event对象的完成状态不符合预期。aclrtQueryEventWaitStatusaclError aclrtQueryEventWaitStatus(aclrtEvent event, aclrtEventWaitStatus *status)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明调用aclrtStreamWaitEvent接口后查询该Event对应的等待任务是否都执行完成。参数说明参数名输入/输出说明event输入指定待查询的Event。类型定义请参见aclrtEvent。status输出Event状态的指针。类型定义请参见aclrtEventWaitStatus。返回值说明返回0表示成功返回其他值表示失败请参见aclError。约束说明通过aclrtCreateEventExWithFlag接口创建的Event不支持调用本接口。aclrtSynchronizeEventaclError aclrtSynchronizeEvent(aclrtEvent event)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明阻塞当前线程运行直到Event捕获的所有任务都执行完成。具体见aclrtRecordEvent接口参考Event捕获的细节。参数说明参数名输入/输出说明event输入需等待的Event。类型定义请参见aclrtEvent。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtSynchronizeEventWithTimeoutaclError aclrtSynchronizeEventWithTimeout(aclrtEvent event, int32_t timeout)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明阻塞当前线程运行直到Event捕获的所有任务都执行完成具体见aclrtRecordEvent接口参考Event捕获的细节该接口是在接口aclrtSynchronizeEvent基础上进行了增强支持用户设置永久等待、或配置具体的超时时间若配置具体的超时时间则当应用程序异常时可根据所设置的超时时间自行退出。参数说明参数名输入/输出说明event输入需等待的Event。类型定义请参见aclrtEvent。timeout输入接口的超时时间。取值说明如下- -1表示永久等待和接口aclrtSynchronizeEvent功能一样。- 0配置具体的超时时间单位是毫秒。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtEventElapsedTimeaclError aclrtEventElapsedTime(float *ms, aclrtEvent startEvent, aclrtEvent endEvent)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明统计两个Event之间的耗时。本接口需与其它关键接口配合使用接口调用顺序调用aclrtCreateEvent/aclrtCreateEventWithFlag接口创建Event**--调用aclrtRecordEvent接口在同一个Stream中记录起始Event、结尾Event--调用aclrtSynchronizeStream接口阻塞应用程序运行直到指定Stream中的所有任务都完成--**调用aclrtEventElapsedTime接口统计两个Event之间的耗时参数说明参数名输入/输出说明ms输出表示两个Event之间耗时的指针单位为毫秒。startEvent输入起始Event。类型定义请参见aclrtEvent。endEvent输入结尾Event。类型定义请参见aclrtEvent。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtStreamWaitEventaclError aclrtStreamWaitEvent(aclrtStream stream, aclrtEvent event)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明阻塞指定Stream的运行直到指定的Event完成支持多个Stream等待同一个Event的场景。异步接口。提交到Stream上的所有后续任务都需要等待Event捕获的任务都完成后才能开始执行。具体见aclrtRecordEvent接口了解Event捕获的细节。参数说明参数名输入/输出说明stream输入指定Stream。类型定义请参见aclrtStream。多Stream同步等待场景下例如Stream2等待Stream1的场景此处配置为Stream2。event输入需等待的Event。类型定义请参见aclrtEvent。返回值说明返回0表示成功返回其他值表示失败请参见aclError。约束说明一个进程内调用aclInit接口初始化后若再调用aclrtSetOpWaitTimeout接口设置超时时间那么本进程内后续调用aclrtStreamWaitEvent接口下发的任务支持在所设置的超时时间内等待若等待的时间超过所设置的超时时间则在调用同步等待接口例如aclrtSynchronizeStream后会返回报错。aclrtStreamWaitEventWithTimeoutaclError aclrtStreamWaitEventWithTimeout(aclrtStream stream, aclrtEvent event, int32_t timeout)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明获取算子二进制数据在Device上的内存地址及内存大小。参数说明参数名输入/输出说明stream输入指定Stream。类型定义请参见aclrtStream。多Stream同步等待场景下例如Stream2等待Stream1的场景此处配置为Stream2。event输入需等待的Event。类型定义请参见aclrtEvent。timeout输入超时时间。取值0用于配置具体的超时时间单位是毫秒。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtSetOpWaitTimeoutaclError aclrtSetOpWaitTimeout(uint32_t timeout)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明本接口用于设置等待Event完成的超时时间。不调用本接口则默认不超时一个进程内多次调用本接口则以最后一次设置的时间为准。参数说明参数名输入/输出说明timeout输入设置超时时间单位为秒。将该参数设置为0时表示不超时。返回值说明返回0表示成功返回其他值表示失败请参见aclError。约束说明一个进程内调用aclInit接口初始化后若再调用aclrtSetOpWaitTimeout接口设置超时时间那么本进程内后续调用aclrtStreamWaitEvent接口下发的任务支持在所设置的超时时间内等待若等待的时间超过所设置的超时时间则在调用同步等待接口例如aclrtSynchronizeStream后会返回报错。aclrtEventGetTimestampaclError aclrtEventGetTimestamp(aclrtEvent event, uint64_t *timestamp)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明获取Event的执行结束时间点表示从AI处理器系统启动以来的时间。本接口需与其它关键接口配合使用接口调用顺序调用aclrtCreateEvent/aclrtCreateEventWithFlag接口创建Event**--调用aclrtRecordEvent接口在Stream中记录Event调用aclrtSynchronizeStream接口阻塞应用程序运行直到指定Stream中的所有任务都完成--**调用aclrtEventGetTimestamp接口获取Event的执行时间。参数说明参数名输入/输出说明event输入查询的Event。类型定义请参见aclrtEvent。timestamp输出Event执行结束的时间点单位为微秒。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtGetEventIdaclError aclrtGetEventId(aclrtEvent event, uint32_t *eventId)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明获取指定Event的ID。参数说明参数名输入/输出说明event输入指定要查询的Event。类型定义请参见aclrtEvent。eventId输出Event ID。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtGetEventAvailNumaclError aclrtGetEventAvailNum(uint32_t *eventCount)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明查询当前Device上可用的Event数量。参数说明参数名输入/输出说明eventCount输出Event数量。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtIpcGetEventHandleaclError aclrtIpcGetEventHandle(aclrtEvent event, aclrtIpcEventHandle *handle)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明将本进程中的指定Event设置为IPCInter-Process Communication Event并返回其handle即Event句柄用于在跨进程场景下实现任务同步支持同一个Device内的多个进程以及跨Device的多个进程。本接口需与以下其它关键接口配合使用此处以A进程、B进程为例A进程中调用aclrtCreateEventExWithFlag接口创建flag为ACL_EVENT_IPC的Event。调用aclrtIpcGetEventHandle接口获取用于进程间通信的Event句柄。调用aclrtRecordEvent接口在Stream中插入1.a中创建的Event。B进程中调用aclrtIpcOpenEventHandle接口获取A进程中的Event句柄信息并返回本进程可以使用的Event指针。调用aclrtStreamWaitEvent接口阻塞指定Stream的运行直到指定的Event完成。Event使用完成后调用aclrtDestroyEvent接口销毁Event。参数说明参数名输入/输出说明event输入指定Event。类型定义请参见aclrtEvent。仅支持通过aclrtCreateEventExWithFlag接口创建的、flag为ACL_EVENT_IPC的Event。handle输出进程间通信的Event句柄。类型定义请参见aclrtIpcEventHandle。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtIpcOpenEventHandleaclError aclrtIpcOpenEventHandle(aclrtIpcEventHandle handle, aclrtEvent *event)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明在本进程中获取handle的信息并返回本进程可以使用的Event指针。本接口需与其它接口配合使用以便实现不同进程间的任务同步请参见aclrtIpcGetEventHandle接口处的说明。参数说明参数名输入/输出说明handle输入Event句柄。类型定义请参见aclrtIpcEventHandle。必须先调用aclrtIpcGetEventHandle接口获取指定Event的句柄再作为入参传入。event输出Event指针。类型定义请参见aclrtEvent。返回值说明返回0表示成功返回其他值表示失败请参见aclError。【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考