普通 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 |
cmake -S . -B build-rocm-plc -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_CUDA=OFF \
-DBUILD_ROCM=ON \
-DBUILD_APPS=OFF \
-DBUILD_PYTHON=OFF \
-DBUILD_TESTING=ON \
-DCMAKE_PREFIX_PATH=/opt/rocm \
-DCMAKE_HIP_ARCHITECTURES=gfx1150
cmake --build build-rocm-plc --target plc -j"$(nproc)"运行 smoke example:
./build-rocm-plc/bin/plc \
-fname ./example/afiro.mps \
-out /tmp/afiro_rocm_sum.json \
-nIterLim 200./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