from myutils.ConfigManager import myCongif if myCongif.get_data("model_platform") == "acl": import acl SUCCESS = 0 # 成功状态值 FAILED = 1 # 失败状态值 class ACLModeManger: def __init__(self,): self.acl_ok = False def __del__(self): pass #初始化acl相关资源--一个进程内只能调用一次acl.init接口 @staticmethod def init_acl(device_id): # '''acl初始化函数''' ret = acl.init() # 0-成功,其它失败 if ret: raise RuntimeError(ret) ret = acl.rt.set_device(device_id) # 指定当前进程或线程中用于运算的Device。可以进程或线程中指定。*多设备时可以放线程* # 在某一进程中指定Device,该进程内的多个线程可共用此Device显式创建Context(acl.rt.create_context接口)。 if ret: raise RuntimeError(ret) print('ACL init Device Successfully') return True #去初始化 @staticmethod def del_acl(device_id): '''Device去初始化''' ret = acl.rt.reset_device(device_id) # 释放Device if ret: raise RuntimeError(ret) ret = acl.finalize() # 去初始化 0-成功,其它失败 --官方文档不建议放析构函数中执行 if ret: raise RuntimeError(ret) print('ACL finalize Successfully') return True @staticmethod def th_inti_acl(device_id): # 线程申请context context, ret = acl.rt.create_context(device_id) # 显式创建一个Context if ret: raise RuntimeError(ret) print('Init TH-Context Successfully') return context @staticmethod def th_del_acl(context): #线程释放context ret = acl.rt.destroy_context(context) # 释放 Context if ret: raise RuntimeError(ret) print('Deinit TH-Context Successfully') return True