2.6 KiB
2.6 KiB
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 库。
- [cite_start]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 的核心枢纽。它拦截了如
cuMemAlloc、cuLaunchKernel等标准驱动调用,并通过libixthunk将其转换为发往iluvatar.ko内核模块的指令。
- [cite_start]转发确认:
-
探测命令与结果:
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: 10020 和 Driver 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.so,libcudart可能设计得更为轻量,仅负责 API 的参数封装和管理,具体的硬件操作可能全部下沉到了驱动层库或通过动态加载实现。
- [cite_start]依赖链:
-
探测命令与结果:
ldd /usr/local/corex/lib/libcudart.so (无 libix* 显式依赖)