Skip to main content

aclrtSetOpWaitTimeout

aclrtGetThreadIdFromExceptionInfo

函数功能

获取异常信息中的线程ID,同步接口。该接口与aclrtSetExceptionInfoCallback接口配合使用。

函数原型

uint32_t aclrtGetThreadIdFromExceptionInfo(const aclrtExceptionInfo *info)

参数说明

参数名输入/输出说明
info输入异常信息的指针。 在执行任务之前调用aclrtSetExceptionInfoCallback接口,系统会将产生异常的任务ID、Stream ID、线程ID、Device ID存放在aclExceptionInfo结构体中。

返回值说明

返回异常信息中的线程ID,返回值为0xFFFFFFFF(以十六进制为例)时表示Device异常。

父主题: 同步等待

aclrtGetDeviceIdFromExceptionInfo

函数功能

获取异常信息中的Device ID,同步接口。该接口与aclrtSetExceptionInfoCallback接口配合使用。

函数原型

uint32_t aclrtGetDeviceIdFromExceptionInfo(const aclrtExceptionInfo *info)

参数说明

参数名输入/输出说明
info输入异常信息的指针。 在执行任务之前调用aclrtSetExceptionInfoCallback接口,系统会将产生异常的任务ID、Stream ID、线程ID、Device ID存放在aclExceptionInfo结构体中。

返回值说明

返回异常信息中的Device ID,返回值为0xFFFFFFFF(以十六进制为例)时表示Device异常。

参考资源

接口调用示例,参见AI Core异常信息获取

父主题: 同步等待

aclrtGetErrorCodeFromExceptionInfo

函数功能

获取异常信息中的错误码,同步接口。该接口与aclrtSetExceptionInfoCallback接口配合使用。

函数原型

uint32_t aclrtGetErrorCodeFromExceptionInfo(const aclrtExceptionInfo *info)

参数说明

参数名输入/输出说明
info输入异常信息的指针。 在执行任务之前调用aclrtSetExceptionInfoCallback接口,系统会将产生异常的任务ID、Stream ID、线程ID、Device ID、错误码存放在aclExceptionInfo结构体中。

返回值说明

返回异常信息中的错误码,返回值为0xFFFFFFFF(以十六进制为例)时表示Device异常。

父主题: 同步等待

aclrtSetOpWaitTimeout

函数功能

本接口用于设置等待Event完成的超时时间。同步接口。

约束说明

  • 不调用本接口,则默认不超时;一个进程内多次调用本接口,则以最后一次设置的时间为准。

  • 一个进程内,调用aclInit接口初始化AscendCL后,调用本接口设置超时时间,本进程内后续调用aclrtStreamWaitEvent接口下发的任务支持在所设置的超时时间内等待。

    由于aclrtStreamWaitEvent接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功,因此若等待的时间超过所设置的超时时间,则在调用aclrtSynchronizeStream接口后,会返回报错。

函数原型

aclError aclrtSetOpWaitTimeout(uint32_t timeout)

参数说明

参数名输入/输出说明
timeout输入设置超时时间,单位为秒。 将该参数设置为0时,表示不超时。

返回值说明

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

父主题: 同步等待

总体说明

  • 若涉及媒体数据处理功能,关于内存使用,有以下注意事项:
    1. 由于媒体数据处理功能对存放输入、输出数据的内存有更高的要求(例如,内存首地址128字节对齐),因此需调用专用的内存申请接口,如下:
    2. 调用1申请出来的内存可以满足媒体数据处理的要求,也可以在其它任务中使用,例如,从性能角度,为了减少拷贝,媒体数据处理的输出作为模型推理的输入,实现内存复用。
    3. 但由于媒体数据处理访问的地址空间有限,为确保媒体数据处理时内存足够,除媒体数据处理功能外的其它功能(例如,模型加载),建议调用内存管理章节下的aclrtMalloc接口、或aclrtMallocHost接口、或aclrtMallocCached接口申请内存。

父主题: 内存管理

aclrtMalloc

函数功能

在Device上申请size大小的线性内存,该接口对用户申请的size向上对齐成32字节整数倍后再多加32字节,并通过*devPtr返回已分配内存的指针。同步接口。

通过该接口申请的Device内存都支持cache缓存,不需要用户处理cpu与npu之间的cache一致性。

调用媒体数据处理的接口前,若需要申请Device上的内存存放输入或输出数据,需调用acldvppMalloc申请内存。

约束说明

  • 使用aclrtMalloc接口申请的内存,需要通过aclrtFree接口释放内存。

  • 频繁调用aclrtMalloc接口申请内存、调用aclrtFree接口释放内存,会损耗性能,建议用户提前做内存预先分配或二次管理,避免频繁申请/释放内存。

  • 若用户使用本接口申请大块内存并自行划分、管理内存时,建议使用aclrtMallocAlign32接口,该接口相比aclrtMalloc接口,只会对用户申请的size向上对齐成32字节整数倍,不会再多加32字节。

    不管是aclrtMalloc接口,还是aclrtMallocAlign32接口,每段内存需同时满足以下需求:

    • 内存大小向上对齐成32整数倍+32字节(m=ALIGN_UP[len,32]+32字节);
    • 内存起始地址需满足64字节对齐(ALIGN_UP[m,64])。

    :::note 说明 len表示某段内存的大小,ALIGN_UP[len,k]表示向上按k字节对齐:((len-1)/k+1)*k。 :::

函数原型

aclError aclrtMalloc(void **devPtr, size_t size, aclrtMemMallocPolicy policy)

参数说明

参数名输入/输出说明
devPtr输出“Device上已分配内存的指针”的指针。
size输入申请内存的大小,单位Byte。 size不能为0。
policy输入内存分配规则。

返回值说明

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

参考资源

接口调用示例,参见数据传输

父主题: 内存管理

aclrtMallocAlign32

函数功能

申请大块内存并自行划分、管理内存时,可调用本接口在Device上申请size大小的线性内存,该接口对用户申请的size向上对齐成32字节整数倍,并通过*devPtr返回已分配内存的指针。同步接口。

与aclrtMalloc接口相比,本接口只会对用户申请的size向上对齐成32字节整数倍,不会再多加32字节。

通过该接口申请的Device内存都支持cache缓存,不需要用户处理cpu与npu之间的cache一致性。

调用媒体数据处理的接口前,若需要申请Device上的内存存放输入或输出数据,需调用acldvppMalloc申请内存。

约束说明

  • 使用aclrtMallocAlign32接口申请的内存,需要通过aclrtFree接口释放内存。

  • 频繁调用aclrtMallocAlign32接口申请内存、调用aclrtFree接口释放内存,会损耗性能,建议用户提前做内存预先分配或二次管理,避免频繁申请/释放内存。

  • 若用户使用本接口申请大块内存并自行划分、管理内存时,每段内存需同时满足以下需求:

    • 内存大小向上对齐成32整数倍+32字节(m=ALIGN_UP[len,32]+32字节);
    • 内存起始地址需满足64字节对齐(ALIGN_UP[m,64])。

    :::note 说明 len表示某段内存的大小,ALIGN_UP[len,k]表示向上按k字节对齐:((len-1)/k+1)*k。 :::

函数原型

aclError aclrtMallocAlign32(void **devPtr, size_t size, aclrtMemMallocPolicy policy)

参数说明

参数名输入/输出说明
devPtr输出“Device上已分配内存的指针”的指针。
size输入申请内存的大小,单位Byte。 size不能为0。
policy输入内存分配规则。

返回值说明

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

父主题: 内存管理

在线提单