【Super Point】Bianbu 4.0.1:libspine_gemm_bridge.so 链接系统 Python 但 Python 版本依赖不正确导致初始化失败

系统版本 / 镜像

项目 信息
系统 Bianbu 4.0.1 (Resolute Raccoon)
内核 6.18.3-generic #1.0.2.4 SMP PREEMPT_DYNAMIC
架构 RISC-V 64 (rv64gc)
相关包 spacemit-tcm(含 libspine_gemm_bridge.so
Python 版本 3.14

使用场景或测试目标

使用 ONNX Runtime + SpacemiT EP 进行 AI 推理加速。libspine_gemm_bridge.sospacemit-tcm 包的一部分,为 A100 AI 核提供 GEMM(通用矩阵乘法)加速桥接。

当 AI 推理模块初始化时,libspine_gemm_bridge.so 通过 Python C API 进行初始化,预期场景为:

  1. ONNX Runtime 加载 SpacemiT EP
  2. EP 初始化时调用 libspine_gemm_bridge.so
  3. 桥接库初始化 Python 解释器环境

操作步骤

1. 环境确认

bash

确认 Python 版本 python3 --version # 输出:Python 3.14.0 # 确认 spacemit-tcm 包安装状态 dpkg -l | grep spacemit-tcm # 确认桥接库位置 find /usr -name “libspine_gemm_bridge.so” 2>/dev/null

2. 触发初始化

在 AI 推理模块初始化时,桥接库被加载并尝试初始化 Python 环境。

结果数据 / 截图 / 日志

错误日志

text

_ctypes undefined symbol: PyExc_SystemError

根因分析

bash

检查桥接库链接的 Python 版本 ldd /usr/lib/libspine_gemm_bridge.so | grep python # 输出:libpython3.14.so.1.0 => /usr/lib/riscv64-linux-gnu/libpython3.14.so.1.0 # 检查系统 Python 版本 python3 --version # 输出:Python 3.14.0 # 检查符号是否存在 nm -D /usr/lib/riscv64-linux-gnu/libpython3.14.so.1.0 | grep PyExc_SystemError # 输出:… PyExc_SystemError

关键发现

  • libspine_gemm_bridge.so 链接到 Python 3.14
  • 但桥接库在初始化时通过 _ctypes 查找 PyExc_SystemError 符号失败
  • 该符号在 Python 3.14 的 libpython3.14.so 中存在,但桥接库初始化时机或依赖顺序不正确

遇到的问题

核心问题libspine_gemm_bridge.sospacemit-tcm 包的一部分,它链接了系统 Python 但未正确处理 Python 版本依赖,导致在 Python 3.14 环境下初始化失败。

检查项 预期 实际
Python 版本兼容性 :white_check_mark: 兼容 :x: 初始化失败
PyExc_SystemError 符号 :white_check_mark: 存在 :white_check_mark: 存在
_ctypes 查找符号 :white_check_mark: 成功 :x: 失败

影响范围

  • AI 推理模块无法初始化
  • ONNX Runtime + SpacemiT EP 无法使用 A100 AI 核加速
  • 推理任务受阻塞

你的判断 / 改进建议

判断

  1. 版本依赖不完整libspine_gemm_bridge.so 链接了 Python 3.14 的库,但在 _ctypes 初始化阶段未能正确解析符号,说明桥接库的初始化逻辑依赖了未正确初始化的 Python 内部状态。
  2. 可能是初始化顺序问题_ctypes 模块本身需要在 Python 解释器完全初始化后才能使用。如果桥接库在 Python 解释器完全初始化之前就尝试调用 _ctypes ,会导致符号查找失败。
  3. 与 Python 3.14 的兼容性 :Python 3.14 较新,某些内部 API 可能有变化,桥接库未针对此版本进行充分测试。

libspine_gemm_bridge.so 似乎不是spacemit-tcm包内的库

我已经自己解决这个问题

1 个赞