函数:destroy_context
函数:get_device_utilization_rate
| C函数原型 | aclError aclrtGetDeviceUtilizationRate(int32_t deviceId, aclrtUtilizationInfo *utilizationInfo) |
|---|---|
| Python函数 | utilization_info, ret = acl.rt.get_device_utilization_rate (device_id) |
| 函数功能 | 查询Device上Cube、Vector、AI CPU等的利用率。同步接口。 |
| 输入说明 | device_id:int,Device ID。 用户调用acl.rt.get_device_count接口获取可用的Device数量后,这个Device ID的取值范围:[0, (可用的Device数量-1)]。 |
| 输出说明 | 无 |
| 返回值说明 | utilization_info:dict,aclrtUtilizationInfo类型利用率信息字典,具体请参见aclrtUtilizationInfo。 ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | - 昇腾虚拟化实例场景下,不支持调用本接口查询利用率,接口返回值无实际意义。 - 开启Profiling功能时,不支持调用本接口查询利用率,接口返回值无实际意义。 - 查询Device内存利用率为预留功能,当前版本不支持,若调用本接口查询内存利用率,查询到的利用率为-1。 |
父主题: Device管理
函数:create_context
| C函数原型 | aclError****aclrtCreateContext(aclrtContext *context, int32_t deviceId) |
|---|---|
| Python函数 | context, ret = acl.rt.create_context(device_id) |
| 函数功能 | 在当前进程或线程中显式创建一个Context。同步接口。 对于Atlas 200/500 A2推理产品,该默认Context中包含2个Stream,1个默认Stream和1个执行内部同步的Stream。 |
| 输入说明 | device_id:int,指定需要创建Context的Device设备号。 |
| 返回值说明 | context:int,表示创建的Context的指针地址。 ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | 支持以下使用场景: - 若不调用acl.rt.create_context接口显式创建Context,那系统会使用默认Context,该默认Context是在调用acl.rt.set_device接口时隐式创建的。 - 隐式创建Context:适合简单、无复杂交互逻辑的应用,但缺点在于,在多线程编程中,执行结果取决于线程调度的顺序。 - (推荐)显式创建Context:适合大型、复杂交互逻辑的应用,且便于提高程序的可读性、可维护性。 - 若在某一进程内创建多个Context(Context的数量与Stream相关,Stream数量有限制,请参见acl.rt.create_stream),当前线程在同一时刻内只能使用其中一个Context,建议通过acl.rt.set_context接口明确指定当前线程的Context,增加程序的可维护性**。** (说明:) |
| 参考资源 | 接口调用流程与示例,请参见运行管理资源申请与释放、同步等待。 |
父主题: Context管理
函数:destroy_context
| C函数原型 | aclError aclrtDestroyContext(aclrtContext context) |
|---|---|
| Python函数 | ret = acl.rt.destroy_context(context) |
| 函数功能 | 销毁一个Context,释放Context的资源,同步接口。只能销毁通过acl.rt.create_context接口创建的Context。 |
| 输入说明 | context:int,指定需要销毁的Context对象指针地址。 |
| 返回值说明 | ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | 无 |
| 参考资源 | 接口调用流程与示例,请参见运行管理资源申请与释放、同步等待。 |
父主题: Context管理
函数:set_context
| C函数原型 | aclError aclrtSetCurrentContext(aclrtContext context) |
|---|---|
| Python函数 | ret = acl.rt.set_context(context) |
| 函数功能 | 设置线程的Context,同步接口。 |
| 输入说明 | context:int,线程当前的Context对象指针地址。 |
| 返回值说明 | ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | - 支持以下场景: - 如果在某线程(例如:thread1)中调用acl.rt.create_context接口显式创建一个Context(例如:ctx1),则可以不调用acl.rt.set_context接口指定该线程的Context,系统默认将ctx1作为thread1的Context。 - 如果没有调用acl.rt.create_context接口显式创建Context,则系统将默认Context作为线程的Context,此时,不能通过acl.rt.destroy_context接口来释放默认Context。 - 如果多次调用acl.rt.set_context接口设置线程的Context,以最后一次为准。 - 若给线程设置的Context所对应的Device已经被复位,则不能将该Context设置为线程的Context,否则会导致业务异常。 - 推荐在某一线程中创建的Context,在该线程中使用。若在线程A中调用acl.rt.create_context接口创建Context,在线程B中使用该Context,则需由用户自行保证两个线程中同一个Context下同一个Stream中任务执行的顺序。 |
| 参考资源 | 接口调用流程,参见多Device场景。 |
父主题: Context管理
函数:get_context
| C函数原型 | aclError aclrtGetCurrentContext(aclrtContext *context) |
|---|---|
| Python函数 | context, ret = acl.rt.get_context() |
| 函数功能 | 获取线程的Context,同步接口。 如果用户多次调用acl.rt.set_context接口设置当前线程的Context,则获取的是最后一次设置的Context。 |
| 输入说明 | 无 |
| 返回值说明 | context:int,表示创建的Context对象指针地址。 ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | 无 |
父主题: Context管理
在线提单