From 6425a967283c72c9d0fe41f985adccc348b30e52 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 11 Aug 2026 17:17:25 +0000 Subject: [PATCH] =?UTF-8?q?fix(runtime):=20bridge=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E5=AE=89=E5=85=A8=E9=99=8D=E7=BA=A7=E5=88=B0?= =?UTF-8?q?Tier1(ixformer.functions)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:ixformer.h声明的是ixformer::infer::*命名空间,但base image 实际导出的是ixformer_torch_ext::*(in _ixformer_torch.so)和 ixformer::functions::*(in libixformer.so)。命名空间不匹配导致 bridge .so虽然编译成功但import时undefined symbol。 当前方案:bridge加载失败时安全降级到Tier1(ixformer.functions), 这是base image的Python binding,底层调用同样的CUDA kernel,性能一致。 Tier1已有silu_and_mul/rms_norm/rotary_embedding/paged_attention等。 后续迭代:重写ixformer.h用正确的ixformer_torch_ext namespace。 --- ex_engine/python/ix_unified.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ex_engine/python/ix_unified.py b/ex_engine/python/ix_unified.py index e5c6364c..bee35559 100644 --- a/ex_engine/python/ix_unified.py +++ b/ex_engine/python/ix_unified.py @@ -116,8 +116,14 @@ def _load_bridge(): _bridge = mod logger.info("ix_unified_bridge loaded from %s", so_path) return _bridge + except (ImportError, OSError, SystemError) as e: + logger.warning("Bridge load failed (expected if ixformer " + "namespace mismatch): %s: %s", + os.path.basename(so_path), e) + continue except Exception as e: - logger.warning("Failed to load %s: %s", so_path, e) + logger.warning("Bridge load unexpected error: %s", e) + continue logger.info("ix_unified_bridge.so not found, using fallback dispatch") return None