普通 GitHub 读者:请从本 README 和 文档地图 开始。 AMD ROCm/Radeon 赛题评委:请查看 docs/COMPETITION_README.md / docs/COMPETITION_README.zh-CN.md。
| 入口 | 链接 |
|---|---|
| English homepage | README.en.md |
| ROCm/gfx1150 快速入口 | README_ROCM_gfx1150.zh-CN.md |
| 文档地图 | docs/README.md |
| 验证数据索引 | validation/README.zh-CN.md |
| Benchmark 索引 | docs/benchmarks/README.md |
cuPDLP-C-ROCm 是基于上游 cuPDLP-C 的 ROCm/HIP 移植与验证分支。项目保留 CPU 路径和上游兼容 CUDA 路径,并新增面向 AMD Radeon 平台的 ROCm/HIP 后端。
| 项目 | 当前值 |
|---|---|
| 主要 ROCm 目标 | AMD Radeon 890M |
| ROCm 架构 | gfx1150 |
| 本地验证 ROCm 版本 | 7.2.1 |
| 已完成验证与调优的额外 ROCm 目标 | AMD Radeon PRO W7900 / gfx1100 |
| CUDA baseline 设备 | RTX 3090, RTX 4090D, H100 |
状态:实验性但可构建。当前 ROCm/HIP 后端已经通过 smoke validation、Netlib 验证、跨设备 benchmark、large-MPS baseline,以及 Radeon 890M /
gfx1150与 Radeon PRO W7900 /gfx1100上的验证与调优记录。W7900 阶段已经完成 P10 targeted profiling 和 P11 SpMV tuning;当前默认 SpMV algorithm 为HIPSPARSE_SPMV_CSR_ALG1,旧默认可用CUPDLP_HIP_SPMV_ALG=csr_alg2回退。它仍不是生产级、广泛认证的 ROCm solver release,但当前项目阶段已经完成。
| 需求 | English | 中文 |
|---|---|---|
| ROCm/gfx1150 快速入口 | README_ROCM_gfx1150.md | README_ROCM_gfx1150.zh-CN.md |
| 完整文档地图 | docs/README.md | docs/README.md |
| 验证数据索引 | validation/README.md | validation/README.zh-CN.md |
| Benchmark 索引 | docs/benchmarks/README.md | docs/benchmarks/README.md |
README_UPSTREAM.md 是上游 README 备份,故意作为原始参考快照保留,不翻译、不重写。
原始 .mps 大文件不提交到 Git。仓库只提交整理后的 CSV 结果和解释文档。
| 主题 | English | 中文 | 原始结果 CSV |
|---|---|---|---|
| Large MPS CUDA/ROCm baseline | summary | 中文版 | platform summary, per-case timing |
| cuPDLPx vs cuPDLP-C short13 | comparison | 中文版 | comparison CSV |
- CPU-only cuPDLP-C 构建路径。
- 上游兼容 CUDA 构建路径,用于 NVIDIA baseline。
- 由 CUDA backend 迁移而来的 ROCm/HIP backend。
- 链接 ROCm/HIP backend 的
plc可执行文件。 - CPU-vs-ROCm smoke validation 脚本。
- W7900 /
gfx1100build、smoke validation、Netlib validation、large-MPS baseline、P10 profiling、P11 SpMV tuning 和 P12 rejected experiment 记录。 - 扩展 Netlib 验证 case。
- RTX 3090、RTX 4090D、H100、Radeon 890M 的跨设备 benchmark 工作流与结果文档。
- large MPS benchmark 文档和整理后的 CSV 汇总。
rocprofv3profiling 工作流与 ROCm tuning 笔记。- 面向 CUDA 到 ROCm/HIP 科学计算项目迁移的案例文档。
| 模式 | CMake 选项 | 作用 |
|---|---|---|
| CPU | BUILD_CUDA=OFF, BUILD_ROCM=OFF |
正确性与可移植性 baseline |
| CUDA | BUILD_CUDA=ON, BUILD_ROCM=OFF |
上游兼容 NVIDIA 后端与 benchmark baseline |
| ROCm/HIP | BUILD_CUDA=OFF, BUILD_ROCM=ON |
AMD Radeon ROCm/HIP 目标后端 |
BUILD_CUDA 和 BUILD_ROCM 不能同时开启。不同后端建议使用不同 build 目录,例如 build-cpu、build-cuda、build-rocm-plc。
Large MPS baseline 状态:
| 平台 | 后端 | 结果 |
|---|---|---|
| RTX 3090 | CUDA upstream | 25/26 OPTIMAL, 1/26 TIMELIMIT |
| Radeon 890M | ROCm/HIP baseline | 24/26 OPTIMAL, 2/26 TIMELIMIT |
| RTX 4090D | CUDA upstream | 26/26 OPTIMAL |
| H100 | CUDA upstream | 26/26 OPTIMAL |
| Radeon PRO W7900 | ROCm/HIP W7900 当前调优终点 | non-hard large-MPS 23/23 OPTIMAL;P10 profiling、P11 SpMV tuning、P12 rejected experiment 已归档 |
cuPDLPx short13 对比状态:
| Solver | 平台 | 结果 |
|---|---|---|
| cuPDLP-C upstream | RTX 4090D CUDA | 选定 13 个短/中等 case 上 13/13 OPTIMAL |
| cuPDLPx v0.2.9 | RTX 4090D CUDA | 同一批 case 上 13/13 OPTIMAL |
本节给出 W7900 / gfx1100 版本从拉取仓库到完成一个最小样例运行的路径。更完整的环境恢复、数据准备、批量验证和结果复现说明见 docs/REPRODUCIBILITY.zh-CN.md。
git clone -b rocm-w7900-gfx1100 https://github.com/UTZZTU/cuPDLP-C-ROCm.git
cd cuPDLP-C-ROCm如需同步子模块,可执行:
git submodule update --init --recursiveW7900 测试环境按“非持久化机器”处理,建议优先使用仓库提供的恢复脚本重建基础依赖、HiGHS、构建目录和运行环境。脚本的详细说明、前置条件和可选参数见复现文档。
bash scripts/bootstrap_w7900_workspace.sh如果本机 ROCm SDK 或 HiGHS 安装路径与脚本默认值不同,请按照 docs/REPRODUCIBILITY.zh-CN.md 中的说明调整 ROCM_PATH、HIP_HIPCC_EXECUTABLE 和 HIGHS_HOME。
W7900 对应 AMD gfx1100 架构。典型构建命令如下:
cmake -S . -B build-w7900-rocm -G Ninja \
-DBUILD_ROCM=ON \
-DROCM_PATH=/opt/python \
-DHIP_HIPCC_EXECUTABLE=/opt/python/bin/hipcc \
-DCMAKE_HIP_ARCHITECTURES=gfx1100 \
-DHIGHS_HOME=/root/cupdlp_w7900/deps/install/highs-1.6.0
cmake --build build-w7900-rocm -j"$(nproc)"构建完成后,可先使用 afiro.mps 做 smoke test,确认 ROCm/HIP 后端可以正常读取 MPS 并完成一次小规模求解。
find . -iname "afiro.mps" -o -iname "afiro.mps.gz"
find build-w7900-rocm -maxdepth 4 -type f -executable | sort | grep -Ei "cupdlp|pdlp|mps|solver"根据上面找到的可执行文件和 afiro.mps 路径运行,例如:
./build-w7900-rocm/bin/cupdlp ./example/afiro.mps若仓库中提供了封装好的单样例运行脚本,也可以优先使用脚本入口;批量数据准备、non-hard23 验证、8 卡 independent-MPS 吞吐实验和 profiling/tuning 复现流程请继续阅读 docs/REPRODUCIBILITY.zh-CN.md。
./scripts/check_rocm_port.sh
ctest --test-dir build-rocm-plc --output-on-failure扩展验证:
RESULT_ROOT=validation/results/extended_netlib \
./scripts/run_validation.sh validation/cases_extended_netlib.txt整理后的验证结果和 CSV 见 validation/README.zh-CN.md。
RESULT_ROOT=profiling/results/current ./scripts/profile_rocm_smoke.sh
python3 scripts/summarize_rocm_profile.py \
--input profiling/results/current \
--output profiling/results/current/profile_summary.md详见 docs/ROCM_PROFILING_NOTES.zh-CN.md、docs/ROCM_TUNING_HISTORY.zh-CN.md、docs/TUNING_GUIDE_ROCM.zh-CN.md。
先识别 GPU 架构:
rocminfo | grep -E "Name:|Marketing Name|gfx"
rocm_agent_enumerator然后设置对应架构,例如 W7900/gfx1100:
-DCMAKE_HIP_ARCHITECTURES=gfx1100实际支持取决于 ROCm 版本、Linux 发行版、内核和 AMD GPU/APU 支持状态。
当前仓库范围内,W7900 / gfx1100 阶段已经完成。该分支已经不再停留在
first-port 或 baseline 文档阶段:
- W7900 ROCm build、smoke validation、Netlib validation、large-MPS baseline、 targeted profiling 和 P11 SpMV tuning 均已完成。
- P10 targeted profiling 确认 rocSPARSE/hipSPARSE CSR SpMV 是所选 W7900 case 上的主要 GPU kernel 热点。
- P11 增加 opt-in HIP SpMV algorithm switch,并验证了
csr_alg2、default、csr_alg1三种模式。 - 当前 W7900 默认 SpMV algorithm 已设为
HIPSPARSE_SPMV_CSR_ALG1。 - 旧默认仍可通过
CUPDLP_HIP_SPMV_ALG=csr_alg2显式恢复。 - 这是 W7900-specific 当前默认调优策略,不是最终跨平台峰值性能结论。
W7900 当前权威入口见:
docs/W7900_CURRENT_STATUS.zh-CN.mdvalidation/w7900_p11_spmv_tuning_summary_20260617.zh-CN.md
当前仓库范围内,W7900 / gfx1100 阶段已经完成。它不应再被描述为未来目标、
baseline-only 目标或 pre-tuning 目标。
当前已接受终点:
- W7900 build、smoke validation、Netlib validation 和 large-MPS baseline 文档已完成。
- P10 targeted rocprof profiling 已完成。
- P11 SpMV tuning 已完成。
- 当前 W7900 默认 SpMV algorithm:
HIPSPARSE_SPMV_CSR_ALG1。 - 回退旧默认:
CUPDLP_HIP_SPMV_ALG=csr_alg2。 - P12 记录了一次被拒绝的 SpMV buffer-algorithm consistency 实验;该实验导致 迭代数变化,因此未接受该 patch。
权威入口:
docs/W7900_CURRENT_STATUS.zh-CN.mdvalidation/w7900_p11_spmv_tuning_summary_20260617.zh-CN.mdvalidation/w7900_p12_spmv_buffer_alg_consistency_negative_20260617.zh-CN.md
W7900 已补充 P14-A1 quick6 current-vs-pre_tuning repeated validation。结果显示
current 在 quick6 的 6/6 个 case 上快于 pre_tuning,几何平均 speedup 为
1.18889,中位数 speedup 为 1.19502,且 pre/current 迭代数保持一致。
这作为 quick-set tuning-transfer evidence,与 non-hard23 large-MPS baseline 分开表述。当前项目收尾不再需要额外 W7900 实验;P14-B 仅保留为未来可选稳健性检查。