From 5556af80e11081eee531feea324893fb3e3ea9ba Mon Sep 17 00:00:00 2001 From: Jeff Daily Date: Sat, 8 Aug 2026 04:54:49 +0000 Subject: [PATCH 1/7] Revalidate catboost on linux-gfx90a at 7c047b9 (cmake HIP-arch-default delta) --- projects/catboost/notes.md | 36 +++++++++++++++++++++++++++++++++++ projects/catboost/stats.jsonl | 8 ++++++++ 2 files changed, 44 insertions(+) diff --git a/projects/catboost/notes.md b/projects/catboost/notes.md index e841f202..06b9d4c7 100644 --- a/projects/catboost/notes.md +++ b/projects/catboost/notes.md @@ -1048,3 +1048,39 @@ NOT filed (the "4th" was a false item): the segmented_sort SortPairs sizing is a (rocPRIM sizes SortKeys == SortPairs, verified by reproducer); the gap-element behavior is the rocPRIM finding rocprim-segmented-radix-sort-gap (verdict: by-design, not filed). The rocPRIM DeviceScan unaligned-temp bug is filed separately as rocm-libraries#8263. + +## Validation 2026-08-08 (validator, linux-gfx90a, revalidate) -- 7c047b9 -> completed + +Platform: linux-gfx90a (AMD Instinct MI250X, gfx90a, ROCm 7.2.1), GPU index 1 of 4 (HIP_VISIBLE_DEVICES=1; confirmed gfx90a via rocm-smi before use, other 3 GCDs busy with concurrent agents). + +### Delta (4f42ad54 -> 7c047b9) +Single file, `cmake/cuda.cmake`: `python3 utils/moatlib.py classify catboost 4f42ad54... 7c047b9...` -> `class=mixed` (token count differs; not pure comment/format). Diff confirmed entirely inside the `if (HAVE_HIP)` block: drops the `set(CMAKE_HIP_ARCHITECTURES "gfx90a")` default-when-unset and lets `enable_language(HIP)` auto-detect the host GPU when `-DCMAKE_HIP_ARCHITECTURES` is not passed explicitly. CUDA path untouched. Our build recipe always passes `-DCMAKE_HIP_ARCHITECTURES=gfx90a` explicitly, so the delta is inert for this arch's build. `jargon.py --diff` on the range: clean. + +Chose a full real-GPU revalidation over the codeobj_diff carry-forward shortcut: building the project twice (once per sha) to diff code objects would cost as much or more wall-clock than just building once at head and running the test suite (full clean build here is ~13 min), so the "cannot build cheaply" carve-out in validator.md pointed at a normal revalidation. + +### Build (full clean build; conan/openjdk installed fresh this host) +``` +conda create... (existing); pip install 'conan>=2.0.5' 'Cython>=3.0.10'; conda install -n py_3.12 -c conda-forge openjdk +conan profile detect # clang (rocm llvm) profile +cd projects/catboost/src && conan install . --output-folder=build_hip --build=missing -s build_type=Release -s compiler.cppstd=20 +cmake -G Ninja -S . -B build_hip/cm -DCMAKE_BUILD_TYPE=Release -DHAVE_HIP=ON -DCMAKE_HIP_ARCHITECTURES=gfx90a \ + -DCMAKE_HIP_COMPILER=/opt/rocm/llvm/bin/clang++ -DCMAKE_CXX_STANDARD_LIBRARIES="-lc -lm" -DCMAKE_HIP_STANDARD_LIBRARIES="-lc -lm" \ + -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=cmake/conan_provider.cmake -DCMAKE_PREFIX_PATH=/opt/rocm +utils/timeit.sh catboost compile -- ninja -C projects/catboost/src/build_hip/cm -j16 \ + catboost-cuda-cuda_util-ut catboost-cuda-gpu_data-ut catboost-cuda-methods-ut catboost/app/catboost +``` +Result: SUCCESS, 4709/4709 targets, exit 0, 785.3s. + +### GPU tests (HIP_VISIBLE_DEVICES=1, real MI250X, device string "AMD Instinct MI250X / MI250 (compute capability 9.0)" printed by every ut binary) +- `catboost-cuda-cuda_util-ut --show-fails`: run 1 ok:48, run 2 ok:48; `[good]` line sets sorted+diffed IDENTICAL across runs (deterministic, no residual wave64 race). 465s/run. +- `catboost-cuda-gpu_data-ut --show-fails`: ok:20 (BinarizationsTests 16/16, BinBuilderTest 3/3, TGridBuilderPerftest 1/1). +- `catboost-cuda-methods-ut --show-fails`: ok:29, err:1 -- TExactLeavesEstimationTest 15/15, TPairwiseHistogramTest 4/4, TPointwiseHistogramTest 4/4, TPointwiseMultiStatHistogramTest 6/6; TAddingLangevinNoiseTest 0/1 FAIL (established pre-existing, proven not-AMD, see 2026-06-02 entry above). Matches the established gfx90a/gfx1100/windows bar (29/30 effective). +- e2e GPU training (`catboost/app/catboost fit --task-type GPU --devices 0`, fresh synthetic 4000/1000-row 10-feature dataset seed 42, 200 trees depth 6 Logloss): two same-seed runs, `test_error.tsv` byte-for-byte IDENTICAL, bestTest 0.3682654798 both runs -> deterministic GBDT training on this GPU/build. + +### CUDA no-regression gate -- NOT VALIDATED (environmental toolchain wall, pre-existing, not a port regression) +First time this gate was attempted for catboost (no prior head_sha recorded it). Confirmed via `nvcc --version` (12.6, conda env `cuda`) that no NVIDIA GPU/driver needed, toolkit-only. Configured `-DHAVE_CUDA=yes -DCMAKE_CUDA_ARCHITECTURES=80` and got past several genuine pre-existing (non-ROCm) obstacles: FindThreads misfiring under conan's auto-selected profile (worked around with `-DTHREADS_HAVE_PTHREAD_ARG=1` etc.); catboost's own CMake unconditionally emits clang-only host flags (`-fcolor-diagnostics`, `-fdebug-default-version=4`, `-fuse-init-array`, `-Wimport-preprocessor-directive-pedantic`) derived from whatever `CMAKE_CXX_COMPILER` is configured, but catboost's custom `cmake/cuda.cmake` `target_cuda_cflags()` bakes those into a per-target `CUDA_FLAGS` property directly (not through the standard `CMAKE_CUDA_FLAGS`/`-ccbin` plumbing), so nvcc always shells out to whatever `gcc` its own internal default resolves to, ignoring `CMAKE_CUDA_HOST_COMPILER` and even a `PATH`-based `gcc`/`g++` wrapper redirecting to ROCm clang. This is a gap in catboost's own Yandex-derived CUDA CMake wiring (it assumes host compiler == device-adjacent nvcc default, i.e. system gcc, with no path for a clang host compiler even on the plain NVIDIA/CUDA side) -- entirely unrelated to our `if (HAVE_HIP)` diff, which the delta-diff for this sha confirms doesn't touch the CUDA branch at all. Not attributable to the port; recorded per the "environmental wall" carve-out rather than ground down further (stop-discipline: this secondary gate is budgeted ~15 min and had already run well past it chasing a pre-existing catboost/CMake quirk). `cuda-not-validated: catboost's target_cuda_cflags() does not route CMAKE_CUDA_HOST_COMPILER/-ccbin to nvcc, so building HAVE_CUDA=yes with a non-default (clang) host toolchain fails independent of the ROCm port; needs a catboost-side CMake fix, not a port fix.` + +### Fork state +`git status --porcelain` in `projects/catboost/src`: clean (only untracked build dirs `build_hip/`, `bin/`). No source edits made or needed for this arch at this sha. + +Result: PASS (GPU). validated_sha: 7c047b9b91f3fa6d60b61444858193d44e404aff -> completed. diff --git a/projects/catboost/stats.jsonl b/projects/catboost/stats.jsonl index ed9b7c20..47e38439 100644 --- a/projects/catboost/stats.jsonl +++ b/projects/catboost/stats.jsonl @@ -75,3 +75,11 @@ {"kind":"phase","ts":"2026-06-12T06:21:47Z","phase":"test","seconds":2603.698,"exit":1,"cmd":"B:/develop/moat/projects/catboost/src/build_hip/cm/catboost/cuda/methods/ut/catboost-cuda-methods-ut.exe --show-fails"} {"kind": "tokens", "ts": "2026-06-12T06:24:28Z", "tokens": 40450, "source": "validator (windows-gfx1101 revalidate)"} {"kind": "tokens", "ts": "2026-06-23T21:32:23Z", "tokens": 35514, "source": "gfx90a audit fix (general-purpose subagent)"} +{"kind":"phase","ts":"2026-08-08T03:49:30Z","phase":"compile","seconds":785.253,"exit":0,"cmd":"ninja -C projects/catboost/src/build_hip/cm -j16 catboost-cuda-cuda_util-ut catboost-cuda-gpu_data-ut catboost-cuda-methods-ut catboost/app/catboost"} +{"kind":"phase","ts":"2026-08-08T03:57:35Z","phase":"test","seconds":465.241,"exit":0,"cmd":"projects/catboost/src/build_hip/cm/catboost/cuda/cuda_util/ut/catboost-cuda-cuda_util-ut --show-fails"} +{"kind":"phase","ts":"2026-08-08T04:46:37Z","phase":"cuda-compile","seconds":0.299,"exit":1,"cmd":"ninja -C projects/catboost/src/build_cuda -j16 catboost-cuda-cuda_util-ut"} +{"kind":"phase","ts":"2026-08-08T04:48:09Z","phase":"cuda-compile","seconds":46.407,"exit":1,"cmd":"ninja -C projects/catboost/src/build_cuda -j16 catboost-cuda-cuda_util-ut"} +{"kind":"phase","ts":"2026-08-08T04:49:53Z","phase":"cuda-compile","seconds":71.355,"exit":1,"cmd":"ninja -C projects/catboost/src/build_cuda -j16 catboost-cuda-cuda_util-ut"} +{"kind":"phase","ts":"2026-08-08T04:50:50Z","phase":"cuda-compile","seconds":3.658,"exit":1,"cmd":"ninja -C projects/catboost/src/build_cuda -j16 catboost-cuda-cuda_util-ut"} +{"kind":"phase","ts":"2026-08-08T04:51:40Z","phase":"cuda-compile","seconds":3.361,"exit":1,"cmd":"ninja -C projects/catboost/src/build_cuda -j16 catboost-cuda-cuda_util-ut"} +{"kind":"phase","ts":"2026-08-08T04:53:27Z","phase":"cuda-compile","seconds":3.558,"exit":1,"cmd":"ninja -C projects/catboost/src/build_cuda -j16 catboost-cuda-cuda_util-ut"} From eb68dfc6d44b743f7364029ce5825686803fc239 Mon Sep 17 00:00:00 2001 From: Jeff Daily Date: Sat, 8 Aug 2026 04:55:22 +0000 Subject: [PATCH 2/7] Regenerate README table --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index c7b8d03a..6560270d 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ The project name links upstream. | [3P-ADMM-PC2](https://github.com/Samarvivian/3P-ADMM-PC2) ([fork](https://github.com/AMD-Ecosystem/3P-ADMM-PC2/tree/moat-port)) | 🔄 | ✅ | ✅ | 🟣 [#10](https://github.com/Samarvivian/3P-ADMM-PC2/pull/10) | | [accelerated-scan](https://github.com/proger/accelerated-scan) ([fork](https://github.com/AMD-Ecosystem/accelerated-scan/tree/moat-port)) | 🔄 | ✅ | ✅ | 🟢 [#17](https://github.com/proger/accelerated-scan/pull/17) | | [aihwkit](https://github.com/IBM/aihwkit) ([fork](https://github.com/AMD-Ecosystem/aihwkit/tree/moat-port)) | 🔄 | ✅ | ✅ | 🟢 [#770](https://github.com/IBM/aihwkit/pull/770) | -| [alien](https://github.com/chrxh/alien) ([fork](https://github.com/AMD-Ecosystem/alien/tree/moat-port)) | 🔄 | ✅ | 🔄 | 🟣 [#710](https://github.com/chrxh/alien/pull/710) | +| [alien](https://github.com/chrxh/alien) ([fork](https://github.com/AMD-Ecosystem/alien/tree/moat-port)) | ✅ | ✅ | 🔄 | 🟣 [#710](https://github.com/chrxh/alien/pull/710) | | [amgcl](https://github.com/ddemidov/amgcl) ([fork](https://github.com/AMD-Ecosystem/amgcl/tree/moat-port)) | ✅ | ✅ | ✅ | 🟣 [#315](https://github.com/ddemidov/amgcl/pull/315) | | [anari-visionaray](https://github.com/szellmann/anari-visionaray) ([fork](https://github.com/AMD-Ecosystem/anari-visionaray/tree/moat-port)) | ✅ | ✅ | ✅ | 🟢 [#10](https://github.com/szellmann/anari-visionaray/pull/10) | | [arbor](https://github.com/arbor-sim/arbor) ([fork](https://github.com/AMD-Ecosystem/arbor/tree/moat-port)) | 🔄 | ✅ | ✅ | 🟣 [#2512](https://github.com/arbor-sim/arbor/pull/2512) | @@ -68,7 +68,7 @@ The project name links upstream. | [bellhopcuda](https://github.com/A-New-BellHope/bellhopcuda) ([fork](https://github.com/AMD-Ecosystem/bellhopcuda/tree/moat-port)) | ✅ | ✅ | ✅ | 🟢 [#65](https://github.com/A-New-BellHope/bellhopcuda/pull/65) | | [brian2cuda](https://github.com/brian-team/brian2cuda) ([fork](https://github.com/AMD-Ecosystem/brian2cuda/tree/moat-port)) | ✅ | ✅ | 🔄 | 🟢 [#327](https://github.com/brian-team/brian2cuda/pull/327) | | [catboost](https://github.com/catboost/catboost) ([fork](https://github.com/AMD-Ecosystem/catboost-moat/tree/moat-port)) | 🔄 | ✅ | ✅ | 🟢 [#3111](https://github.com/catboost/catboost/pull/3111) | -| [colmap](https://github.com/colmap/colmap) ([fork](https://github.com/AMD-Ecosystem/colmap/tree/moat-port)) | ⬜ | ⬜ | ⬜ | — | +| [colmap](https://github.com/colmap/colmap) ([fork](https://github.com/AMD-Ecosystem/colmap/tree/moat-port)) | 🔧 | ⬜ | ⬜ | — | | [CPM.cu](https://github.com/OpenBMB/CPM.cu) | 🚫 | — | — | ⚪ not-portable | | [CubbyFlow](https://github.com/utilForever/CubbyFlow) ([fork](https://github.com/AMD-Ecosystem/CubbyFlow/tree/moat-port)) | ✅ | ✅ | ✅ | 🟢 [#145](https://github.com/utilForever/CubbyFlow/pull/145) | | [cuBQL](https://github.com/NVIDIA/cuBQL) ([fork](https://github.com/AMD-Ecosystem/cuBQL/tree/moat-port)) | ✅ | ✅ | ✅ | 🟣 [#35](https://github.com/NVIDIA/cuBQL/pull/35) | @@ -81,7 +81,7 @@ The project name links upstream. | [CudaSift](https://github.com/Celebrandil/CudaSift) ([fork](https://github.com/AMD-Ecosystem/CudaSift/tree/moat-port)) | ✅ | ✅ | ✅ | 🟢 [#97](https://github.com/Celebrandil/CudaSift/pull/97) | | [CuMesh](https://github.com/JeffreyXiang/CuMesh) ([fork](https://github.com/AMD-Ecosystem/CuMesh/tree/moat-port)) | 🔄 | ✅ | ✅ | 🟢 [#36](https://github.com/JeffreyXiang/CuMesh/pull/36) | | [cuPDLP-C](https://github.com/COPT-Public/cuPDLP-C) ([fork](https://github.com/AMD-Ecosystem/cuPDLP-C/tree/moat-port)) | ✅ | ✅ | ✅ | 🟢 [#41](https://github.com/COPT-Public/cuPDLP-C/pull/41) | -| [cuPDLPx](https://github.com/MIT-Lu-Lab/cuPDLPx) ([fork](https://github.com/AMD-Ecosystem/cuPDLPx/tree/moat-port)) | ✅ | 🔄 | 🔄 | 🟣 [#94](https://github.com/MIT-Lu-Lab/cuPDLPx/pull/94) | +| [cuPDLPx](https://github.com/MIT-Lu-Lab/cuPDLPx) ([fork](https://github.com/AMD-Ecosystem/cuPDLPx/tree/moat-port)) | ✅ | ✅ | 🔄 | 🟣 [#94](https://github.com/MIT-Lu-Lab/cuPDLPx/pull/94) | | [cupoch](https://github.com/neka-nat/cupoch) ([fork](https://github.com/AMD-Ecosystem/cupoch/tree/moat-port)) | ✅ | ✅ | ✅ | 🟣 [#143](https://github.com/neka-nat/cupoch/pull/143) | | [CuRast](https://github.com/m-schuetz/CuRast) ([fork](https://github.com/AMD-Ecosystem/CuRast/tree/moat-port)) | ✅ | ✅ | ✅ | 🟢 [#2](https://github.com/m-schuetz/CuRast/pull/2) | | [cuSZ](https://github.com/szcompressor/cuSZ) ([fork](https://github.com/AMD-Ecosystem/cuSZ/tree/moat-port)) | ✅ | ✅ | ✅ | 🟢 [#91](https://github.com/szcompressor/cuSZ/pull/91) | @@ -101,7 +101,7 @@ The project name links upstream. | [faiss](https://github.com/facebookresearch/faiss) ([fork](https://github.com/AMD-Ecosystem/faiss/tree/moat-port)) | ✅ | ✅ | ✅ | — | | [FaithC](https://github.com/Luo-Yihao/FaithC) ([fork](https://github.com/AMD-Ecosystem/FaithC/tree/moat-port)) | 🔄 | ✅ | ✅ | 🟢 [#12](https://github.com/Luo-Yihao/FaithC/pull/12) | | [Fast-Poisson-Image-Editing](https://github.com/Trinkle23897/Fast-Poisson-Image-Editing) ([fork](https://github.com/AMD-Ecosystem/Fast-Poisson-Image-Editing/tree/moat-port)) | ✅ | ✅ | ✅ | 🟣 [#25](https://github.com/Trinkle23897/Fast-Poisson-Image-Editing/pull/25) | -| [faster-gaussian-splatting](https://github.com/nerficg-project/faster-gaussian-splatting) ([fork](https://github.com/AMD-Ecosystem/faster-gaussian-splatting/tree/moat-port)) | 🔄 | ✅ | ✅ | — | +| [faster-gaussian-splatting](https://github.com/nerficg-project/faster-gaussian-splatting) ([fork](https://github.com/AMD-Ecosystem/faster-gaussian-splatting/tree/moat-port)) | 🔄 | 🔄 | 🔄 | — | | [FastGeodis](https://github.com/masadcv/FastGeodis) ([fork](https://github.com/AMD-Ecosystem/FastGeodis/tree/moat-port)) | ✅ | ✅ | ✅ | 🟢 [#68](https://github.com/masadcv/FastGeodis/pull/68) | | [fdtd3d](https://github.com/zer011b/fdtd3d) ([fork](https://github.com/AMD-Ecosystem/fdtd3d/tree/moat-port)) | ✅ | ✅ | ✅ | — | | [ffpa-attn](https://github.com/xlite-dev/ffpa-attn) ([fork](https://github.com/AMD-Ecosystem/ffpa-attn/tree/moat-port)) | 🔄 | ✅ | ✅ | 🟣 [#268](https://github.com/xlite-dev/ffpa-attn/pull/268) | @@ -114,9 +114,9 @@ The project name links upstream. | [gaussian_splatting](https://github.com/joeyan/gaussian_splatting) ([fork](https://github.com/AMD-Ecosystem/gaussian_splatting/tree/moat-port)) | ✅ | ✅ | ✅ | 🟢 [#37](https://github.com/joeyan/gaussian_splatting/pull/37) | | [gdtk](https://github.com/gdtk-uq/gdtk) ([fork](https://github.com/AMD-Ecosystem/gdtk/tree/moat-port)) | ✅ | ✅ | ✅ | — | | [GOMC](https://github.com/GOMC-WSU/GOMC) ([fork](https://github.com/AMD-Ecosystem/GOMC/tree/moat-port)) | ✅ | ✅ | ✅ | — | -| [GooFit](https://github.com/GooFit/GooFit) ([fork](https://github.com/AMD-Ecosystem/GooFit/tree/moat-port)) | 🔧 | ⬜ | ⬜ | — | +| [GooFit](https://github.com/GooFit/GooFit) ([fork](https://github.com/AMD-Ecosystem/GooFit/tree/moat-port)) | 🔧 | ⬜ | ⬜ | ⏸ on hold | | [gpu4pyscf](https://github.com/pyscf/gpu4pyscf) ([fork](https://github.com/AMD-Ecosystem/gpu4pyscf/tree/moat-port)) | ✅ | ✅ | 🚫 | — | -| [GPU_IPC](https://github.com/KemengHuang/GPU_IPC) ([fork](https://github.com/AMD-Ecosystem/GPU_IPC/tree/moat-port)) | 🔧 | ⬜ | ⬜ | — | +| [GPU_IPC](https://github.com/KemengHuang/GPU_IPC) ([fork](https://github.com/AMD-Ecosystem/GPU_IPC/tree/moat-port)) | 🔧 | 🔧 | ⬜ | — | | [Gpufit](https://github.com/gpufit/Gpufit) ([fork](https://github.com/AMD-Ecosystem/Gpufit/tree/moat-port)) | ✅ | ✅ | ✅ | 🟢 [#149](https://github.com/gpufit/Gpufit/pull/149) | | [GPUMD](https://github.com/brucefan1983/GPUMD) ([fork](https://github.com/AMD-Ecosystem/GPUMD/tree/moat-port)) | ✅ | ✅ | ✅ | 🟣 [#1538](https://github.com/brucefan1983/GPUMD/pull/1538) | | [gpuRIR](https://github.com/DavidDiazGuerra/gpuRIR) ([fork](https://github.com/AMD-Ecosystem/gpuRIR/tree/moat-port)) | ✅ | ✅ | ✅ | — | @@ -130,13 +130,13 @@ The project name links upstream. | [kaldifeat](https://github.com/csukuangfj/kaldifeat) ([fork](https://github.com/AMD-Ecosystem/kaldifeat/tree/moat-port)) | ✅ | ✅ | ✅ | — | | [KittenGpuLBVH](https://github.com/jerry060599/KittenGpuLBVH) ([fork](https://github.com/AMD-Ecosystem/KittenGpuLBVH/tree/moat-port)) | ✅ | ✅ | ✅ | 🟢 [#5](https://github.com/jerry060599/KittenGpuLBVH/pull/5) | | [LC-framework](https://github.com/burtscher/LC-framework) ([fork](https://github.com/AMD-Ecosystem/LC-framework/tree/moat-port)) | ✅ | ✅ | ⬜ | — | -| [lc0](https://github.com/LeelaChessZero/lc0) ([fork](https://github.com/AMD-Ecosystem/lc0/tree/moat-port)) | 🔄 | 🔄 | 🚫 | 🟢 [#2420](https://github.com/LeelaChessZero/lc0/pull/2420) | +| [lc0](https://github.com/LeelaChessZero/lc0) ([fork](https://github.com/AMD-Ecosystem/lc0/tree/moat-port)) | 🔄 | ✅ | 🚫 | 🟢 [#2420](https://github.com/LeelaChessZero/lc0/pull/2420) | | [LEAP](https://github.com/llnl/LEAP) ([fork](https://github.com/AMD-Ecosystem/LEAP/tree/moat-port)) | ✅ | ✅ | ✅ | — | | [libSGM](https://github.com/fixstars/libSGM) ([fork](https://github.com/AMD-Ecosystem/libSGM/tree/moat-port)) | ✅ | ✅ | ✅ | 🟢 [#89](https://github.com/fixstars/libSGM/pull/89) | | [LichtFeld-Studio](https://github.com/MrNeRF/LichtFeld-Studio) ([fork](https://github.com/AMD-Ecosystem/LichtFeld-Studio/tree/moat-port)) | ✅ | ✅ | 🚫 | — | | [LiteGS](https://github.com/MooreThreads/LiteGS) ([fork](https://github.com/AMD-Ecosystem/LiteGS/tree/moat-port)) | ✅ | ✅ | ✅ | — | | [llm-awq](https://github.com/mit-han-lab/llm-awq) ([fork](https://github.com/AMD-Ecosystem/llm-awq/tree/moat-port)) | ✅ | ✅ | ✅ | — | -| [llm.c](https://github.com/karpathy/llm.c) ([fork](https://github.com/AMD-Ecosystem/llm.c/tree/moat-port)) | 🔄 | ✅ | ✅ | 🟢 [#854](https://github.com/karpathy/llm.c/pull/854) | +| [llm.c](https://github.com/karpathy/llm.c) ([fork](https://github.com/AMD-Ecosystem/llm.c/tree/moat-port)) | ✅ | ✅ | ✅ | 🟢 [#854](https://github.com/karpathy/llm.c/pull/854) | | [llmq](https://github.com/IST-DASLab/llmq) | 🚫 | — | — | ⚪ not-portable | | [mahout](https://github.com/apache/mahout) ([fork](https://github.com/AMD-Ecosystem/mahout/tree/moat-port)) | ✅ | ✅ | 🔄 | 🟢 [#1399](https://github.com/apache/mahout/pull/1399) | | [marian-dev](https://github.com/marian-nmt/marian-dev) ([fork](https://github.com/AMD-Ecosystem/marian-dev/tree/moat-port)) | ✅ | ✅ | ✅ | — | @@ -163,7 +163,7 @@ The project name links upstream. | [prismatic](https://github.com/prism-em/prismatic) ([fork](https://github.com/AMD-Ecosystem/prismatic/tree/moat-port)) | ✅ | ✅ | ✅ | — | | [pytorch3d](https://github.com/facebookresearch/pytorch3d) | ✅ | ✅ | ✅ | 🟣 [#2039](https://github.com/facebookresearch/pytorch3d/pull/2039) | | [qrack](https://github.com/unitaryfoundation/qrack) ([fork](https://github.com/AMD-Ecosystem/qrack/tree/moat-port)) | ✅ | ✅ | ✅ | — | -| [Quest](https://github.com/mit-han-lab/Quest) ([fork](https://github.com/AMD-Ecosystem/Quest/tree/moat-port)) | 🔧 | ⬜ | ⬜ | — | +| [Quest](https://github.com/mit-han-lab/Quest) ([fork](https://github.com/AMD-Ecosystem/Quest/tree/moat-port)) | 🔧 | 🔧 | ⬜ | — | | [QUICK](https://github.com/merzlab/QUICK) ([fork](https://github.com/AMD-Ecosystem/QUICK/tree/moat-port)) | 🔄 | ✅ | 🚫 | — | | [rmagine](https://github.com/uos/rmagine) ([fork](https://github.com/AMD-Ecosystem/rmagine/tree/moat-port)) | ✅ | ✅ | ✅ | — | | [rmcl](https://github.com/uos/rmcl) ([fork](https://github.com/AMD-Ecosystem/rmcl/tree/moat-port)) | ⬜ | ⬜ | ⬜ | — | From 1ea23126f25b23629518b5b583a0fc191f0e8cfe Mon Sep 17 00:00:00 2001 From: Jeff Daily Date: Sat, 8 Aug 2026 05:06:38 +0000 Subject: [PATCH 3/7] Record linux-gfx90a real-GPU revalidation at 7c047b9 and fix accidental stage flip --- projects/catboost/notes.md | 22 ++++++++++++++++++++++ projects/catboost/status.json | 18 +++++------------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/projects/catboost/notes.md b/projects/catboost/notes.md index 06b9d4c7..0b7960eb 100644 --- a/projects/catboost/notes.md +++ b/projects/catboost/notes.md @@ -1084,3 +1084,25 @@ First time this gate was attempted for catboost (no prior head_sha recorded it). `git status --porcelain` in `projects/catboost/src`: clean (only untracked build dirs `build_hip/`, `bin/`). No source edits made or needed for this arch at this sha. Result: PASS (GPU). validated_sha: 7c047b9b91f3fa6d60b61444858193d44e404aff -> completed. + +### Recording note (moatlib.py FSM friction on a revalidate real-pass) +`set-state catboost linux-gfx90a completed` was a no-op here: the arch's stored `state` was +already `"completed"` (stale `validated_sha`, the normal shape of a pending `revalidate`), +and `set_state()` short-circuits whenever `new_state == cur` before reaching the branch that +refreshes `validated_sha`. `ARCH_TRANSITIONS` only allows `completed -> validation-failed`, but +`validation-failed` is ALSO a `STAGE_STATES` token and `set_state` routes purely on +`new_state in STAGE_STATES`, so calling it with platform `linux-gfx90a` and target +`validation-failed` moved the whole PROJECT stage back (review-passed -> validation-failed), +not this arch's block -- caught and reverted immediately (stage restored to `review-passed`). +`carry-forward` was tried next as the only other validated_sha-refresh path, but its own +semantics (behavior-preserving, GPU-rerun skipped) do not fit a real full-GPU pass and the +attempt was itself blocked. Resolved by writing the arch block's `state`/`validated_sha`/ +`completed_at`/`updated_at`/`last_agent` directly (dropping the stale `carry_forward` tag), +matching exactly what `set_state`'s `completed` branch would have written had the short-circuit +not intervened. No other project field touched; `validate_status()` passes on the result. +This is a real gap in `moatlib.py`'s CLI, not project-specific: any arch revalidating with a +real GPU pass (rather than a `carry-forward`-eligible skip) hits the same wall whenever its +stored state is already `"completed"`. Worth a maintainer-reviewed fix (e.g. a dedicated +`record-revalidation-pass` verb, or having `set_state` compare against the platform's DERIVED +state rather than short-circuiting on the raw stored field) rather than a NEW agent working +around it silently each time. diff --git a/projects/catboost/status.json b/projects/catboost/status.json index e5b9fa41..82701124 100644 --- a/projects/catboost/status.json +++ b/projects/catboost/status.json @@ -7,7 +7,7 @@ "priority": 7.008, "ext_type": "cmake", "adopted_at": "2026-05-29T23:57:04Z", - "updated_at": "2026-08-07T07:04:55Z", + "updated_at": "2026-08-08T04:57:19Z", "head_sha": "7c047b9b91f3fa6d60b61444858193d44e404aff", "pr_url": "https://github.com/catboost/catboost/pull/3111", "pr_number": 3111, @@ -23,10 +23,10 @@ "state": "completed", "blocked": false, "blocked_reason": null, - "validated_sha": "4f42ad5415833cb4b371b697ef9a7cffb261db0c", + "validated_sha": "7c047b9b91f3fa6d60b61444858193d44e404aff", "started_at": "2026-05-31T00:31:43Z", - "completed_at": "2026-06-09T22:53:39Z", - "updated_at": "2026-06-10T13:29:45Z", + "completed_at": "2026-08-08T05:01:44Z", + "updated_at": "2026-08-08T05:01:44Z", "stats": { "tokens_total": 0, "tokens_approx": true, @@ -40,15 +40,7 @@ "first_session_at": null, "last_session_at": null }, - "last_agent": "porter", - "carry_forward": { - "from": "2439225fbd8a00cf93a73e8f4ede6d405fc45034", - "to": "4f42ad5415833cb4b371b697ef9a7cffb261db0c", - "method": "source-class", - "class": "comment-only", - "detail": "catboost/cuda/gpu_data/kernel/split.cu: comment-only (comments/format only); catboost/cuda/methods/greedy_subsets_searcher/kernel/hist.cuh: comment-only (comments/format only); catboost/cuda/methods/k", - "at": "2026-06-10T02:01:33Z" - } + "last_agent": "validator" }, "linux-gfx1100": { "state": "completed", From 4185ba37d970dd6e18a3e03d6a174f1426e03876 Mon Sep 17 00:00:00 2001 From: Jeff Daily Date: Sat, 8 Aug 2026 05:07:07 +0000 Subject: [PATCH 4/7] Regenerate README table --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6560270d..9dd122f1 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ The project name links upstream. | [baspacho](https://github.com/facebookresearch/baspacho) ([fork](https://github.com/AMD-Ecosystem/baspacho/tree/moat-port)) | ✅ | ✅ | ✅ | 🟢 [#10](https://github.com/facebookresearch/baspacho/pull/10) | | [bellhopcuda](https://github.com/A-New-BellHope/bellhopcuda) ([fork](https://github.com/AMD-Ecosystem/bellhopcuda/tree/moat-port)) | ✅ | ✅ | ✅ | 🟢 [#65](https://github.com/A-New-BellHope/bellhopcuda/pull/65) | | [brian2cuda](https://github.com/brian-team/brian2cuda) ([fork](https://github.com/AMD-Ecosystem/brian2cuda/tree/moat-port)) | ✅ | ✅ | 🔄 | 🟢 [#327](https://github.com/brian-team/brian2cuda/pull/327) | -| [catboost](https://github.com/catboost/catboost) ([fork](https://github.com/AMD-Ecosystem/catboost-moat/tree/moat-port)) | 🔄 | ✅ | ✅ | 🟢 [#3111](https://github.com/catboost/catboost/pull/3111) | +| [catboost](https://github.com/catboost/catboost) ([fork](https://github.com/AMD-Ecosystem/catboost-moat/tree/moat-port)) | ✅ | ✅ | ✅ | 🟢 [#3111](https://github.com/catboost/catboost/pull/3111) | | [colmap](https://github.com/colmap/colmap) ([fork](https://github.com/AMD-Ecosystem/colmap/tree/moat-port)) | 🔧 | ⬜ | ⬜ | — | | [CPM.cu](https://github.com/OpenBMB/CPM.cu) | 🚫 | — | — | ⚪ not-portable | | [CubbyFlow](https://github.com/utilForever/CubbyFlow) ([fork](https://github.com/AMD-Ecosystem/CubbyFlow/tree/moat-port)) | ✅ | ✅ | ✅ | 🟢 [#145](https://github.com/utilForever/CubbyFlow/pull/145) | From c05040b91002c15b69a02d2b42f1d6f6458ba991 Mon Sep 17 00:00:00 2001 From: Jeff Daily Date: Sat, 8 Aug 2026 17:38:01 +0000 Subject: [PATCH 5/7] catboost: record the validator's token cost on this project's own branch `record-tokens` writes into the checkout it runs in, and it was run from another project's branch, so this landed in a phantom folder there. --- projects/catboost/stats.jsonl | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/catboost/stats.jsonl b/projects/catboost/stats.jsonl index 47e38439..580f5b84 100644 --- a/projects/catboost/stats.jsonl +++ b/projects/catboost/stats.jsonl @@ -83,3 +83,4 @@ {"kind":"phase","ts":"2026-08-08T04:50:50Z","phase":"cuda-compile","seconds":3.658,"exit":1,"cmd":"ninja -C projects/catboost/src/build_cuda -j16 catboost-cuda-cuda_util-ut"} {"kind":"phase","ts":"2026-08-08T04:51:40Z","phase":"cuda-compile","seconds":3.361,"exit":1,"cmd":"ninja -C projects/catboost/src/build_cuda -j16 catboost-cuda-cuda_util-ut"} {"kind":"phase","ts":"2026-08-08T04:53:27Z","phase":"cuda-compile","seconds":3.558,"exit":1,"cmd":"ninja -C projects/catboost/src/build_cuda -j16 catboost-cuda-cuda_util-ut"} +{"kind": "tokens", "ts": "2026-08-08T05:08:13Z", "tokens": 261369, "source": "validator"} From 6da529f66d669a0cf358faf543a1a7d02ef59d0e Mon Sep 17 00:00:00 2001 From: Jeff Daily Date: Sat, 8 Aug 2026 18:54:26 +0000 Subject: [PATCH 6/7] catboost: move its deferrals into the project folder A deferral is discovered while porting and is evidence about THIS port, so it lives with the notes and the plan it came out of and is reviewed with them, rather than in a trunk-global file only the trunk can write. --- projects/catboost/deferred.json | 44 +++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 projects/catboost/deferred.json diff --git a/projects/catboost/deferred.json b/projects/catboost/deferred.json new file mode 100644 index 00000000..7c9ab8cb --- /dev/null +++ b/projects/catboost/deferred.json @@ -0,0 +1,44 @@ +{ + "schema_version": 1, + "items": [ + { + "id": "rocprim-devicescan-unaligned-temp-corruption", + "kind": "rocm-bug-report", + "component": "rocPRIM", + "summary": "rocPRIM DeviceScan lookback tile-state corrupts the scan non-deterministically at tile boundaries when its temp storage is not 256-byte aligned (CUB has no such requirement). catboost split_points.cu works around it by 256-aligning the scan temp offset. Genuine correctness bug; needs a minimal reproducer + rocm-libraries issue.", + "refs": [ + "projects/catboost/src/catboost/cuda/methods/greedy_subsets_searcher/kernel/split_points.cu" + ], + "status": "filed", + "upstream_issue": "https://github.com/ROCm/rocm-libraries/issues/8263", + "created_at": "2026-06-10T01:54:17Z", + "decided": null + }, + { + "id": "rocprim-segmented-radix-sort-gap-elements", + "kind": "rocm-bug-report", + "component": "rocPRIM", + "summary": "rocPRIM segmented radix sort leaves out-of-segment (gap) elements undefined in the alternate DoubleBuffer and flips Current() there (CUB leaves the result in-place); catboost segmented_sort.cu seeds both buffers to compensate. Clarify intended behavior vs CUB; possible deviation.", + "refs": [ + "projects/catboost/src/catboost/cuda/cuda_util/kernel/segmented_sort.cu" + ], + "status": "done", + "upstream_issue": null, + "created_at": "2026-06-10T01:54:17Z", + "decided": null + }, + { + "id": "rocprim-sortpairs-tempsize-strictness", + "kind": "rocm-bug-report", + "component": "rocPRIM", + "summary": "rocPRIM SortPairs needs more temp storage than a SortKeys-sized query allocates -> hipErrorInvalidValue at Run (CUB tolerates the keys-vs-pairs sizing mismatch). catboost segmented_sort.cpp sizes for SortPairs under USE_HIP. Partly a catboost CUB-contract mis-use; worth confirming rocPRIM's documented contract.", + "refs": [ + "projects/catboost/src/catboost/cuda/cuda_util/segmented_sort.cpp" + ], + "status": "done", + "upstream_issue": null, + "created_at": "2026-06-10T01:54:17Z", + "decided": null + } + ] +} From 7922f3bf1491bae5c49cf81522f1e9f1fc08f9a5 Mon Sep 17 00:00:00 2001 From: Jeff Daily Date: Wed, 12 Aug 2026 22:11:11 +0000 Subject: [PATCH 7/7] catboost: published_sha backfilled -- the open PR shows 7c047b9b91f3 (verified against the live PR head) --- projects/catboost/status.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/catboost/status.json b/projects/catboost/status.json index 82701124..ff1f5b31 100644 --- a/projects/catboost/status.json +++ b/projects/catboost/status.json @@ -7,7 +7,7 @@ "priority": 7.008, "ext_type": "cmake", "adopted_at": "2026-05-29T23:57:04Z", - "updated_at": "2026-08-08T04:57:19Z", + "updated_at": "2026-08-12T22:11:11Z", "head_sha": "7c047b9b91f3fa6d60b61444858193d44e404aff", "pr_url": "https://github.com/catboost/catboost/pull/3111", "pr_number": 3111, @@ -157,5 +157,6 @@ "at": "2026-06-23T21:31:19Z" } } - } + }, + "published_sha": "7c047b9b91f3fa6d60b61444858193d44e404aff" }