aclrtUtilizationInfo
aclprofStepTag
| 数据格式 | 说明 |
|---|---|
| ACL_STEP_START = 0 | step start |
| ACL_STEP_END = 1 | step end |
:::note 说明 同一个aclprofStepInfo对象、同一个tag只能设置一次,否则Profiling解析会出错。 :::
父主题: 数据类型及其操作接口
acldvppChannelMode
| 数据格式 | 说明 |
|---|---|
| DVPP_CHNMODE_VPC = 1 | 指定图片数据处理通道用于实现VPC功能 |
| DVPP_CHNMODE_JPEGD = 2 | 指定图片数据处理通道用于实现JPEGD功能 |
| DVPP_CHNMODE_JPEGE = 4 | 指定图片数据处理通道用于实现JPEGE功能 |
| DVPP_CHNMODE_PNGD = 8 | 指定图片数据处理通道用于实现PNGD功能 |
父主题: 数据类型及其操作接口
aclrtFloatOverflowMode
| 数据格式 | 说明 |
|---|---|
| ACL_RT_OVERFLOW_MODE_SATURATION = 0 | 饱和模式,默认值。 |
| ACL_RT_OVERFLOW_MODE_INFNAN = 1 | Inf/NaN模式(符合IEEE 754标准)。 |
| ACL_RT_OVERFLOW_MODE_UNDEF = 2 | 预留参数。 |
父主题: 数据类型及其操作接口
aclrtUtilizationInfo
| 数据格式 | 说明 |
|---|---|
| cube_utilization | 整型,Cube算子使用率。 |
| vector_utilization | 整型,Vector算子使用率。 |
| aicpu_utilization | 整型,AI CPU算子使用率。 |
| memory_utilization | 整型,Device内存使用率。 |
| utilization_extend | 整型,预留扩展字段,当前版本不支持。 |
父主题: 数据类型及其操作接口
pyACL表达约定
接口命名规则
接口命名同时满足如下规则:
- acl+接口类别缩写+操作动词+对象
- 操作动词和对象均采用首字母大写。
接口类别
| 接口类别 | 缩写 | 描述 |
|---|---|---|
| runtime | rt | 表示运行管理类的接口 |
| DVPP | media | 表示媒体数据处理类的接口 |
| AIPP | aipp | 表示aipp(AI Preprocessing)类的接口 |
| CBLAS | blas | 表示blas类的接口 |
| model | mdl | 表示模型推理类的接口 |
| OP | op | 表示算子执行类的接口 |
| fv | fv | 表示特征向量检索的接口 |
| Profiling | prof | 表示Profiling配置类接口 |
注:
-
缩写原则上不超过4个字母。
-
在接口命名中,如果类别与操作对象重叠时,操作动词后的对象将省略。
如:acl.mdl.load_from_file_with_mem,表示model类接口,这个接口表示含义是load model from file,因此在接口命名中Load后面 mdl将被省略。
变量命名
本文代码示例中涉及的变量,其中,命名带下划线的变量(例如:deviceId)表示类的私有变量。
父主题: 附录
使用约束
-
进入系统休眠前,需要确保将正在运行的AI推理业务、媒体数据处理业务等进程退出。等待唤醒成功后,再继续执行业务。
-
不支持使用fork函数创建多个进程,且在进程中调用pyACL接口的场景,否则进程运行时会报错或者卡死。
-
不支持在acl.rt.memcpy_async、acl.rt.memset_async接口等异步操作内存过程中使用fork以及封装了fork的函数,如system、posix_spawnp等,否则会导致进程运行时会报错,甚至卡死等不可预期的错误。
-
对于创建类接口(例如:acl.rt.create_stream、acl.rt.create_event、acl.create_data_buffer等),用户调用该类接口创建对应的资源后,资源使用完成后,建议及时调用对应的销毁类接口(例如:acl.rt.destroy_stream、acl.rt.destroy_event、acl.destroy_data_buffer等),否则,程序可能会异常。
-
对于销毁类接口(例如:acl.rt.destroy_stream、acl.rt.destroy_event、acl.rt.free、acl.destroy_data_buffer等),用户调用该类接口后,不能继续使用已释放或销毁的资源,建议用户调用销毁类接口后,将相关资源设置为无效值(例如,设置为None)。
-
对于Atlas 200/500 A2推理产品,一个Device上最多只能支持64个用户进程,Host最多只能支持Device个数*64个进程。
-
使用pyACL提供的内存申请接口(例如acl.rt.malloc、acl.media.dvpp_malloc等)申请内存后,为确保内存中不会有脏数据,建议在使用内存前先调用acl.rt.memset或acl.rt.memset_async接口先清空内存,例如acl.rt.memset(dev_buffer_ptr, dev_buffer_size, 0, dev_buffer_size)。
-
Ascend RC形态下,如果应用程序中涉及aclrtMalloc、acldvppMalloc、hi_mpi_dvpp_malloc等内存申请接口,应用程序在Device上运行时,当前默认在内存不足时,应用程序可能会挂起,等待内存资源,用户可以根据实际需求选择启用操作系统提供的一些配置(例如,enable_oom_killer),这样在内存不足时,应用程序会自动退出,不会一直等待。
若启用enable_oom_killer,您需登录Device,在“/proc/sys/vm”目录下,以root用户启用enable_oom_killer,命令示例如下,1表示启用,0表示禁用:
echo 1 > enable_oom_killer
父主题: 附录
在线提单