3.2 KiB
3.2 KiB
tags, date created, date modified
| tags | date created | date modified |
|---|---|---|
| 星期三, 十一月 19日 2025, 4:54:50 下午 | 星期三, 十一月 19日 2025, 5:09:06 下午 |
1.2.2 Device 端编译器规范 (Device Compiler Spec)
1. Device 编译器身份与警告 (Compiler Identity & Warnings)
-
关键性:P0
-
信息解析:
-
编译器内核:Clang 18.1.8 (基于 LLVM 18)。这是一个非常激进的新版本,支持最新的 C++ 标准。
-
关键迁移警告:
clang++: warning: When compiling *.cu file for ivcore '-x cuda' need replace with '-x ivcore' …- 含义:目前的构建方式使用了
-x cuda标志,天数智芯编译器对此发出了废弃警告。 - 行动项:工程文件中应尽快将编译语言标志从
-x cuda迁移为-x ivcore,以防未来 SDK 更新导致构建中断。 - 强制约束: AI 生成的 CMakeLists.txt 中,所有 .cu 文件的编译命令必须使用 -x ivcore,严禁使用 -x cuda。
- 含义:目前的构建方式使用了
-
-
探测命令与结果:
/usr/local/corex-4.3.8/bin/clang++ --version clang version 18.1.8 (4.3.8 …)
2. 运行时库映射 (Runtime Library Mapping)
-
关键性:P0
-
信息解析:
- 库文件位置:
/usr/local/corex/lib(注意不是lib64)。 - CUDA 兼容层 (Shim Layers):
libcudart.so->libcudart.so.89:存在。这是运行时 API 的入口。libcuda.so:存在。这是驱动层 API 的入口。libcufft.so,libcublas.so,libcudnn.so:全套数学库均已存在同名替换文件。
- 智铠原生层 (Native Layers):
libixthunk.so:推测为内核态 Thunking 层,负责最终的 syscall 下发。libixcore.so(vialibcv_ixcore): 核心计算库。
- 链接器支持:发现了
LLVMgold.so,表明该环境支持 LTO (Link Time Optimization) 链接时优化。
- 库文件位置:
-
文件系统证据:
/usr/local/corex/lib/libcudart.so -> libcudart.so.89 /usr/local/corex/lib/libcuda.so /usr/local/corex/lib/libixthunk.so
3. 宏定义环境 (Macro Environment)
-
关键性:P1
-
信息解析:
- 平台标识:
__ILUVATAR__ = 1。代码中可以用#ifdef __ILUVATAR__编写专用优化。 - 兼容性标识:
__CUDA__ = 1,__CUDACC__已定义。这是为了欺骗现有的 CUDA 代码,使其认为自己正在被 NVCC 编译。
- 平台标识:
-
探测命令与结果:
clang++ -dM -E -x cuda /dev/null | grep "__ILUVATAR__" #define __ILUVATAR__ 1
4. 头文件搜索优先级 (Header Search Priority)
- 关键性:P0
- 信息解析:
- 劫持机制:编译器优先搜索
/usr/local/corex-4.3.8/lib/clang/18/include/cuda_wrappers。 - 原理:CoreX 在此目录下放置了与 CUDA 同名的头文件(如
cuda_runtime.h),拦截标准调用并映射到底层 Iluvatar Runtime。 - GCC 绑定:后续搜索路径正确回落到 Host 端的
/usr/lib/gcc/aarch64-linux-gnu/7.3.0/,保证了与 Host 代码的 ABI 兼容。
- 劫持机制:编译器优先搜索