函数:allocator_register
产品支持情况
| 
          产品  | 
        
          是否支持  | 
       
|---|---|
| 
          | 
        
          √  | 
       
| 
          | 
        
          √  | 
       
| 
          | 
        
          √  | 
       
| 
          | 
        
          √  | 
       
| 
          | 
        
          x  | 
       
功能说明
调用该接口注册用户提供的Allocator以及Allocator对应的回调函数,用于使用用户提供的Allocator。
函数原型
- C函数原型
      
1aclError aclrtAllocatorRegister(aclrtStream stream, aclrtAllocatorDesc allocatorDesc )
 - python函数
      
1ret = acl.rt.allocator_register(stream, allocatorDesc)
 
参数说明
| 
          参数名  | 
        
          说明  | 
       
|---|---|
| 
          stream  | 
        
          int,该Allocator需要注册的Stream。传入的stream参数值不能为NULL,否则返回报错。  | 
       
| 
          allocatorDesc  | 
        
          int,Allocator描述符指针地址。  | 
       
返回值说明
| 
          返回值  | 
        
          说明  | 
       
|---|---|
| 
          ret  | 
        
          int,错误码,返回0表示成功,返回其它值表示失败。  | 
       
约束说明
- Atlas 200I/500 A2推理产品,不支持该接口。
 - 当前仅支持在单算子模型执行、动态shape模型推理场景下使用本接口。
      
单算子模型场景下,需在算子执行接口(例如:acl.op.execute_v2等)之前调用本接口。
动态shape模型推理场景,本接口需配合aclmdlExecuteAsync接口一起使用,且需在aclmdlExecuteAsync接口之前调用本接口。
 - 调用本接口前,需要先调用acl.rt.allocator_create_desc创建Allocator描述符,再分别调用acl.rt.allocator_set_obj_to_desc、acl.rt.allocator_set_alloc_func_to_desc、acl.rt.allocator_set_get_addr_from_block_func_to_desc、acl.rt.allocator_set_free_func_to_desc设置Allocator对象及回调函数。Allocator描述符使用完成后,可调用acl.rt.allocator_destroy_desc接口销毁Allocator描述符。
 - 对于同一条流,多次调用本接口,以最后一次注册为准。
 - 对于不同流,如果用户使用同一个Allocator,不可以多条流并发执行,在执行下一条Stream前,需要对上一Stream做流同步。
 - 将Allocator中的内存释放给操作系统前,需要先调用acl.rt.synchronize_stream接口执行流同步,确保Stream中的任务已执行完成。
 
     父主题: 内存管理