系统版本 / 镜像
| 项目 | 信息 |
|---|---|
| 系统 | 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.so 是 spacemit-tcm 包的一部分,为 A100 AI 核提供 GEMM(通用矩阵乘法)加速桥接。
当 AI 推理模块初始化时,libspine_gemm_bridge.so 通过 Python C API 进行初始化,预期场景为:
- ONNX Runtime 加载 SpacemiT EP
- EP 初始化时调用
libspine_gemm_bridge.so - 桥接库初始化 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.so 是 spacemit-tcm 包的一部分,它链接了系统 Python 但未正确处理 Python 版本依赖,导致在 Python 3.14 环境下初始化失败。
| 检查项 | 预期 | 实际 |
|---|---|---|
| Python 版本兼容性 | ||
PyExc_SystemError 符号 |
||
_ctypes 查找符号 |
影响范围
- AI 推理模块无法初始化
- ONNX Runtime + SpacemiT EP 无法使用 A100 AI 核加速
- 推理任务受阻塞
你的判断 / 改进建议
判断
- 版本依赖不完整 :
libspine_gemm_bridge.so链接了 Python 3.14 的库,但在_ctypes初始化阶段未能正确解析符号,说明桥接库的初始化逻辑依赖了未正确初始化的 Python 内部状态。 - 可能是初始化顺序问题 :
_ctypes模块本身需要在 Python 解释器完全初始化后才能使用。如果桥接库在 Python 解释器完全初始化之前就尝试调用_ctypes,会导致符号查找失败。 - 与 Python 3.14 的兼容性 :Python 3.14 较新,某些内部 API 可能有变化,桥接库未针对此版本进行充分测试。