56 lines
2.7 KiB
Markdown
56 lines
2.7 KiB
Markdown
---
|
||
tags:
|
||
aliases:
|
||
- 1.4.3 编译选项与性能开关 (Compilation Flags & Performance Switches)
|
||
date created: 星期三, 十一月 19日 2025, 7:30:01 晚上
|
||
date modified: 星期三, 十一月 19日 2025, 7:42:46 晚上
|
||
---
|
||
|
||
# 1.4.3 编译选项与性能开关 (Compilation Flags & Performance Switches)
|
||
|
||
**审计综述**:
|
||
当前构建系统在功能层面已适配智铠 SDK(正确使用了 `-x ivcore`),但在性能调优层面尚处于“默认状态”,缺失针对飞腾 CPU 的特定优化标志。
|
||
|
||
**1. Host 端编译标志策略 (Host Compilation Strategy)**
|
||
|
||
- **关键性**:**P1**
|
||
- **策略解析**:
|
||
- **构建类型管理**:正确区分了 `Release` (`-O3 -DNDEBUG`) 和 `Debug` (`-g`) 模式。CMake 默认的 Release 配置已开启最高等级的循环向量化优化。
|
||
- **架构优化 (缺失)**:未检测到 `-march=armv8-a` 或 `-mtune=phytium`。
|
||
- **改进建议**:建议显式添加 `-march=armv8-a` 以启用 ARMv8 指令集特性。鉴于 1.2.4 审计显示编译器未启用 LSE 原子指令,暂不建议添加 `+lse`,以免引入兼容性问题。
|
||
- **警告等级 (缺失)**:主业务代码 (`signal_lib`) 未开启 `-Wall`,建议补全。
|
||
- **探测依据**:
|
||
|
||
```bash
|
||
grep "CMAKE_CXX_FLAGS_RELEASE" …/CMakeCache.txt
|
||
CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
|
||
```
|
||
|
||
**2. Device 端方言与架构标志 (Device Dialect & Arch Flags)**
|
||
|
||
- **关键性**:**P0**
|
||
- **策略解析**:
|
||
- **核心方言标志**:检测到关键标志 **`-x ivcore`**。
|
||
- **深度解读**:这是智铠编译器(Clang-based)识别 `.cu` 文件的“暗号”。不同于 NVCC 自动处理后缀,Clang 需要显式告知语言类型。该标志的存在证明构建脚本已针对 CoreX SDK v4.x 进行了正确适配。
|
||
- **包含路径**:正确注入了 `-I/usr/local/corex/include`,确保 `cuda_runtime.h` 等头文件可见。
|
||
- **位置无关代码**:虽然未显式 grep 到 `-fPIC`,但通常 CMake 处理动态库时会自动添加。若构建静态库(当前情况),此选项非必须。
|
||
- **探测依据**:
|
||
|
||
```bash
|
||
grep -r "clang++" …
|
||
/bin/clang++ -x ivcore …
|
||
```
|
||
|
||
**3. 宏定义管理 (Macro Management)**
|
||
|
||
- **关键性**:**P2**
|
||
- **策略解析**:
|
||
- **调试宏**:`NDEBUG` 在 Release 模式下正确定义,禁用了 `assert()` 检查,减少运行时开销。
|
||
- **平台宏**:未在 CMake 中显式定义 `__ILUVATAR__`。这不是问题,因为 1.2.2 审计已确认 Device 编译器会在预处理阶段自动注入该宏。
|
||
- **探测依据**:
|
||
|
||
```bash
|
||
grep "CMAKE_CXX_FLAGS_RELEASE" …
|
||
… -DNDEBUG
|
||
```
|