# RCCL Auto-Tuning

自动化 RCCL 性能调优工具，通过测试不同算法和协议组合，自动选择最优配置并修改 RCCL 源码。

## 简介

RCCL (ROCm Communication Collectives Library) 是 AMD 为 GPU 提供的标准集合通信库，实现了 all-reduce、all-gather、reduce、broadcast、reduce-scatter、gather、scatter 和 all-to-all 等通信原语。本项目通过自动化测试和性能分析，为特定硬件配置和通信模式找到最优的算法和协议组合，并自动修改 RCCL 源码以应用这些优化。

## 参考链接

- [RCCL-DTK-25.04 官方仓库](http://112.11.119.99:10068/dcutoolkit/deeplearing/rccl)
- [RCCL-Tests 官方仓库](https://github.com/ROCm/rccl-tests)
- [RCCL 官方文档](https://rocm.docs.amd.com/projects/rccl/en/latest/)

## 项目结构

```
rccl-auto-tuning/
├── rccl-dtk-25.04/          # RCCL 通信库源代码
├── rccl-test/               # RCCL 性能测试程序
└── scripts/                 # 自动化调优脚本
    ├── run.sh               # 主运行脚本
    ├── single_process.sh    # 单进程执行脚本
    ├── panduan.py           # 性能分析脚本
    ├── parse_qz_and_modify_tuning.py  # 自动修改 tuning.cc
    ├── hosts                # 主机列表配置
    └── topo-input.xml       # 拓扑配置文件
    └── shuju.txt            # 测试数据集结果
    └── qz.txt               # 记录可优化数据
```
## 环境要求

### 硬件要求
- ROCm 支持的 AMD GPU
- 支持 PCIe、xGMI 或 InfiniBand 互连的多 GPU 系统

### 软件要求
- ROCm 软件栈 (包含 HIP runtime 和 HIP-Clang)
## 快速开始

### 1. 克隆仓库

```bash
git clone http://developer.sourcefind.cn/codes/wh1225/rccl-auto-tuning.git
cd rccl-auto-tuning
```

### 2. 编译 RCCL

```bash
cd rccl-dtk-25.04
rm -rf build
mkdir build
cd build
CXX=hipcc cmake ..
make -j
```

### 3. 编译 RCCL-Test

```bash
cd rccl-test
make MPI=1
```

编译完成后，测试程序会生成在 `rccl-test/build/` 目录下。

## 使用方法

### 1. 配置主机列表

编辑 `scripts/hosts` 文件，添加你的计算节点：

```
node1
node2
node3
```

### 2. 运行自动调优

```bash
cd scripts
./run.sh hosts 1
```

## 输出文件

- `shuju.txt`: 原始性能测试数据
- `qz.txt`: 性能分析结果和优化建议

