Files
Inbox/系统基座文件/1/1.3/1.3.2 运行时环境与兼容层 (Runtime Environment & Shim Layer).md
2025-12-11 07:24:36 +08:00

2.6 KiB
Raw Blame History

tags, date created, date modified
tags date created date modified
星期三, 十一月 19日 2025, 5:29:54 下午 星期三, 十一月 19日 2025, 5:30:07 下午

1.3.2 运行时环境与兼容层 (Runtime Environment & Shim Layer)

1. 环境变量配置 (Environment Configuration)

  • 关键性P1

  • 信息解析

    • [cite_start]SDK 根路径COREX_HOME 被正确设置为 /usr/local/corex [cite: 1]。这是许多第三方构建脚本查找头文件和库的依据。
    • [cite_start]库搜索路径LD_LIBRARY_PATH 包含 /usr/local/corex/lib [cite: 1],确保了在未设置 RPATH 的情况下也能找到 SDK 库。
  • 探测命令与结果

    env | grep "COREX"
    COREX_HOME=/usr/local/corex
    

2. 驱动层转发机制 (Driver Shim Mechanism)

  • 关键性P0

  • 信息解析

    • [cite_start]转发确认libcuda.so (即 NVIDIA Driver API 的替代品) 显式依赖于 libixthunk.so [cite: 1]。
    • 架构意义:这是智铠 SDK 兼容 CUDA 的核心枢纽。它拦截了如 cuMemAlloccuLaunchKernel 等标准驱动调用,并通过 libixthunk 将其转换为发往 iluvatar.ko 内核模块的指令。
  • 探测命令与结果

    ldd /usr/local/corex/lib/libcuda.so
    libixthunk.so => /usr/local/corex/lib/libixthunk.so
    

3. 运行时版本伪装 (Runtime Version Masquerading)

  • 关键性P0

  • 信息解析

    • 金丝雀测试:一个标准的 CUDA Runtime API 程序成功编译并运行。
    • [cite_start]版本欺骗:系统返回 Runtime Version: 10020Driver Version: 10020 [cite: 1]。
    • 结论SDK 成功将自己伪装成了 CUDA 10.2 环境。这对于雷达信号处理算法库(如某些开源的 FFT 实现)至关重要,因为它们往往会对 CUDA 版本进行硬编码检查。
  • 探测命令与结果

    ./test_runtime
    Detected CUDA Runtime Version: 10020
    Detected CUDA Driver Version:  10020
    

4. 运行时库依赖策略 (Runtime Library Strategy)

  • 关键性P2

  • 信息解析

    • [cite_start]依赖链libcudart.so 仅依赖标准系统库 (libc, libstdc++ 等) [cite: 1]。
    • 推论:不同于 libcuda.solibcudart 可能设计得更为轻量,仅负责 API 的参数封装和管理,具体的硬件操作可能全部下沉到了驱动层库或通过动态加载实现。
  • 探测命令与结果

    ldd /usr/local/corex/lib/libcudart.so
    (无 libix* 显式依赖)