From 014a51e9fa0af69e30fa519e67c08fc0c6c68bba Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 11 Aug 2026 17:10:53 +0000 Subject: [PATCH] =?UTF-8?q?fix(runtime):=20preload=20torch=E6=A0=B8?= =?UTF-8?q?=E5=BF=83=E5=BA=93(libc10.so=E7=AD=89)=E5=90=8E=E5=86=8D?= =?UTF-8?q?=E5=8A=A0=E8=BD=BDixformer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _ixformer_torch.so依赖libc10.so,后者在torch/lib/里。 之前直接ctypes.CDLL加载_ixformer_torch.so时找不到libc10.so。 新增Phase 0:先RTLD_GLOBAL加载torch的libc10/libtorch/libtorch_cuda, 再加载ixformer,这样ixformer::infer::*符号才能正确解析。 --- ex_engine/python/ix_unified.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/ex_engine/python/ix_unified.py b/ex_engine/python/ix_unified.py index 2be65462..e5c6364c 100644 --- a/ex_engine/python/ix_unified.py +++ b/ex_engine/python/ix_unified.py @@ -37,6 +37,21 @@ def _load_bridge(): try: import ctypes, glob as _glob + # Phase 0: Load torch core libs first — ixformer depends on libc10.so etc. + try: + import torch as _torch + _torch_lib = os.path.join(os.path.dirname(_torch.__file__), "lib") + for _name in ["libc10.so", "libtorch_cpu.so", "libtorch.so", + "libc10_cuda.so", "libtorch_cuda.so", "libtorch_python.so"]: + _p = os.path.join(_torch_lib, _name) + if os.path.isfile(_p): + try: + ctypes.CDLL(_p, mode=ctypes.RTLD_GLOBAL) + except Exception: + pass + except ImportError: + pass + for _base in ["/usr/local/corex/lib64/python3/dist-packages/ixformer", "/usr/local/corex/lib/python3/dist-packages/ixformer", "/usr/local/corex/lib64"]: