Files
Inbox/系统基座文件/1/1.2/1.2.2 Device 端编译器规范 (Device Compiler Spec).md

69 lines
3.2 KiB
Markdown
Raw Permalink Normal View History

2025-12-11 07:24:36 +08:00
---
tags: []
date created: 星期三, 十一月 19日 2025, 4:54:50 下午
date modified: 星期三, 十一月 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。
- **探测命令与结果**
```bash
/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` (via `libcv_ixcore`): 核心计算库。
- **链接器支持**:发现了 `LLVMgold.so`,表明该环境支持 LTO (Link Time Optimization) 链接时优化。
- **文件系统证据**
```text
/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 编译。
- **探测命令与结果**
```bash
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 兼容。