Skip to content

Commit

Permalink
创建模型实例会添加目前实例到全局变量,程序退出时,先对所有实例进行unload再finalize
Browse files Browse the repository at this point in the history
  • Loading branch information
zylo117 committed Jan 10, 2025
1 parent 2ce8f87 commit a4c757c
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion axengine/_axclrt.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@

_is_axclrt_initialized = False
_is_axclrt_engine_initialized = False
_all_model_instances = []


def _transform_dtype(dtype):
Expand Down Expand Up @@ -55,6 +56,8 @@ def _initialize_axclrt():

def _finalize_axclrt():
global _is_axclrt_initialized, _is_axclrt_engine_initialized
for model_instance in _all_model_instances:
model_instance._unload()
if _is_axclrt_engine_initialized:
axclrt_lib.axclrtEngineFinalize()
_is_axclrt_engine_initialized = False
Expand Down Expand Up @@ -167,8 +170,11 @@ def __init__(
# prepare io
self._io = self._prepare_io()

_all_model_instances.append(self)

def __del__(self):
self._unload()
_all_model_instances.remove(self)

def _load(self, path_or_bytes):
# model buffer, almost copied from onnx runtime
Expand Down Expand Up @@ -215,7 +221,7 @@ def _unload(self):
axclrt_lib.axclrtFree(dev_prt[0])
axclrt_lib.axclrtEngineDestroyIO(self._io)
self._io = None
if self._model_id[0] is not None:
if self._model_id[0] is not None and self._model_id[0] != 0:
axclrt_lib.axclrtEngineUnload(self._model_id[0])
self._model_id[0] = 0

Expand Down

0 comments on commit a4c757c

Please sign in to comment.