MOAT (Moat Obliteration via Automated Translation) ports popular CUDA GitHub projects to ROCm/HIP, one repo at a time, across AMD targets: Linux gfx90a, Linux gfx1100, and Windows on gfx1101 and gfx1201. It is driven by Claude: a planner analyzes each project, a porter applies the change on a fork in the jeffdaily org, a reviewer checks it, and a validator builds and runs the real tests on AMD hardware. This repo is the control plane; it tracks progress and accumulates porting best practices in PORTING_GUIDE.md.
Each project gets a folder under projects/ holding its plan, notes, and a per-platform status file. A fresh Claude CLI run in this repo detects its AMD architecture, finds the next actionable project, and continues the pipeline. Linux gfx90a is the lead platform; the follower archs (Linux gfx1100, Windows gfx1101 and gfx1201) reuse the resulting fork branch and re-validate, since the AMD targets share one unified ROCm port. gfx1151 is a retired Windows host: its earlier validations are kept as records, and it is scheduled no new work.
The project list below is a best-effort ranked union of targeted GitHub searches, not a census of every CUDA repo (GitHub search caps results per query and misses repos whose dominant language is not Cuda). Ports aim to be minimally invasive: for pure CMake projects we prefer enable_language(HIP) plus a single cuda-to-hip compat header (the colmap model); for pytorch extensions we rely on torch's build-time hipify. A CPU-only build smoketest proves compilation only; correctness is gated on real-GPU test runs. See PORTING_GUIDE.md.
Projects we will not port (already ported, already supported, can't be ported, or not a real target) are recorded with reasons in data/dispositions.json and kept out of the actionable list; utils/triage.py manages those decisions.
Status: ✅ done · 🔧 in progress · 🟡 queued (gfx1201 follower; lead done) · 🔄 re-check (HEAD moved) · ⬜ todo/gated · 🚫 blocked/failed · — n/a or pending. Outcome: 🟣 PR merged · 🟢 PR open · 🔴 PR closed · 🔵 validated (existing ROCm confirmed on N archs) · 🍴 fork-only · ⚪ superseded · — pending. † The Windows archs (gfx1101 / gfx1201 / gfx1151) are a redundant tier -- any ONE completed (✅) satisfies the Windows requirement for PR-readiness; the two Linux archs (gfx90a then gfx1100) are each required. gfx1101 and gfx1151 are optional targets (validated results are recorded, but they are never scheduled and never gate anything). The project name links to upstream, (fork) to the port branch on our fork.
| Project | gfx90a Linux |
gfx1100 Linux |
gfx1101 † Windows |
gfx1201 † Windows |
gfx1151 † Windows |
Outcome |
|---|---|---|---|---|---|---|
| 3 (fork) | ✅ | ✅ | — | ✅ | — | 🟢 #400 |
| 3dgrut | 🚫 | ⬜ | — | ⬜ | — | — |
| 3DGS-LM (fork) | ✅ | ✅ | — | ✅ | — | 🟢 #15 |
| 3DUNDERWORLD-SLS-GPU_CPU (fork) | ✅ | ✅ | ✅ | ✅ | — | 🟢 #33 |
| 3P-ADMM-PC2 (fork) | ❓ | ✅ | ✅ | ✅ | ✅ | 🟣 #10 |
| accelerated-scan (fork) | ✅ | ✅ | — | ✅ | — | 🟢 #17 |
| aihwkit (fork) | ✅ | ✅ | — | ✅ | — | 🟢 #770 |
| alien (fork) | ✅ | ✅ | ✅ | ✅ | 🚫 | 🟢 #710 |
| amgcl (fork) | ❓ | ✅ | ✅ | ✅ | — | 🟣 #315 |
| arbor (fork) | ✅ | ✅ | — | ✅ | — | 🟢 #2512 |
| arrayfire (fork) | ✅ | ✅ | ✅ | ✅ | — | 🟢 #3708 |
| AutoDock-GPU (fork) | ✅ | ✅ | ✅ | ✅ | — | 🟢 #320 |
| bam (fork) | 🚫 | ⬜ | — | ⬜ | — | — |
| baspacho (fork) | ✅ | ✅ | — | ✅ | — | 🟢 #10 |
| bellhopcuda (fork) | ✅ | ✅ | — | ✅ | — | 🟢 #65 |
| brian2cuda (fork) | ✅ | ✅ | — | ✅ | — | 🟢 #327 |
| catboost (fork) | ✅ | ✅ | ✅ | ✅ | — | 🟢 #3111 |
| colmap (fork) | ✅ | 🚫 | 🚫 | 🚫 | — | 🟢 #4420 |
| colvars | 🚫 | 🚫 | 🚫 | 🚫 | — | — |
| CPM.cu | 🚫 | ⬜ | — | ⬜ | — | — |
| CTranslate2 (fork) | ✅ | ✅ | ✅ | ✅ | ✅ | 🔵 validated (5 arch) |
| CubbyFlow (fork) | ✅ | ✅ | — | ✅ | — | — |
| cucim (fork) | ✅ | ✅ | — | 🟡 | — | — |
| cuCollections (fork) | ✅ | ✅ | — | 🟡 | — | — |
| cuda-efficient-features (fork) | ✅ | ✅ | — | ✅ | — | 🟢 #3 |
| CUDA-L2 | 🚫 | ⬜ | — | ⬜ | — | — |
| CUDA-ScanMatcher-ICP (fork) | ✅ | ✅ | — | ✅ | — | 🟢 #10 |
| cudaKDTree (fork) | ✅ | ✅ | ✅ | ✅ | ✅ | 🟢 #40 |
| CudaSift (fork) | ✅ | ✅ | ✅ | ✅ | ✅ | 🟢 #97 |
| cudf (fork) | ✅ | ✅ | — | 🟡 | — | — |
| cuEquivariance | 🚫 | ⬜ | — | ⬜ | — | — |
| cugraph (fork) | ✅ | ✅ | — | 🟡 | — | — |
| CuMesh (fork) | ✅ | ✅ | — | ✅ | — | — |
| cuml (fork) | ✅ | ✅ | — | 🟡 | — | — |
| cuPDLP-C (fork) | ✅ | ✅ | — | ✅ | — | 🟢 #41 |
| cuPDLPx (fork) | ✅ | ✅ | — | ✅ | — | — |
| cupoch (fork) | ✅ | ✅ | ✅ | ✅ | — | — |
| CuRast (fork) | ✅ | ✅ | — | ✅ | — | 🟢 #2 |
| cuSZ (fork) | ✅ | ✅ | — | ✅ | — | — |
| cuvs (fork) | ✅ | ✅ | — | 🟡 | — | — |
| CV-CUDA (fork) | ✅ | ✅ | 🚫 | 🚫 | — | — |
| DDN-SLAM (fork) | ✅ | ✅ | — | ✅ | — | — |
| DEM-Engine (fork) | ✅ | ✅ | — | ✅ | — | — |
| dgSPARSE-Lib (fork) | ✅ | ✅ | — | ✅ | — | — |
| dietgpu (fork) | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| DiffPhysDrone (fork) | ✅ | ✅ | — | ✅ | — | — |
| DynOSAM | 🚫 | ⬜ | — | ⬜ | — | — |
| egg.c (fork) | ✅ | ✅ | — | ✅ | — | — |
| ElasticFusion (fork) | ✅ | ✅ | ✅ | ✅ | — | — |
| EnvGS (fork) | ✅ | ✅ | — | ✅ | — | — |
| espresso (fork) | ✅ | ✅ | — | 🚫 | — | — |
| evogp (fork) | ✅ | ✅ | ✅ | ✅ | — | — |
| faiss (fork) | ✅ | ✅ | — | ✅ | ✅ | — |
| FaithC (fork) | ✅ | ✅ | — | ✅ | — | — |
| Fast-Poisson-Image-Editing (fork) | ❓ | ✅ | ✅ | ✅ | ✅ | 🟣 #25 |
| faster-gaussian-splatting (fork) | ✅ | ✅ | — | ✅ | — | — |
| FastGeodis (fork) | ✅ | ✅ | — | ✅ | — | — |
| fdtd3d (fork) | ✅ | ✅ | — | ✅ | — | — |
| ffpa-attn (fork) | ✅ | 🚫 | ✅ | ✅ | — | — |
| FLAMEGPU2 (fork) | ✅ | ✅ | — | ✅ | — | — |
| FlashKDA | 🚫 | 🚫 | 🚫 | 🚫 | — | — |
| FlashMoE | 🚫 | ⬜ | — | ⬜ | — | — |
| FlashRT | 🚫 | ⬜ | — | ⬜ | — | — |
| foldmason (fork) | ✅ | ✅ | — | ✅ | — | — |
| foldseek (fork) | ✅ | ✅ | — | ✅ | — | — |
| fp6_llm | 🚫 | 🚫 | 🚫 | 🚫 | — | — |
| fused-ssim (fork) | ✅ | ✅ | — | ✅ | — | 🔵 validated (3 arch) |
| futhark | 🚫 | 🚫 | 🚫 | 🚫 | — | — |
| gaussian_splatting (fork) | ✅ | ✅ | — | ✅ | — | — |
| gdtk (fork) | ✅ | ✅ | — | ✅ | — | — |
| GOMC (fork) | ✅ | ✅ | — | ✅ | — | — |
| GooFit (fork) | 🚫 | ⬜ | — | ⬜ | — | — |
| gpu4pyscf (fork) | ✅ | ✅ | 🚫 | 🚫 | — | — |
| GPU_IPC (fork) | 🚫 | ⬜ | — | ⬜ | — | — |
| Gpufit (fork) | ✅ | ✅ | ✅ | ✅ | 🚫 | — |
| GPUMD (fork) | ❓ | ✅ | ✅ | ✅ | ✅ | 🟣 #1538 |
| gpuRIR (fork) | ✅ | ✅ | — | ✅ | ✅ | — |
| gRASPA (fork) | ✅ | ✅ | — | ✅ | — | — |
| gsplat (fork) | ✅ | ✅ | ✅ | ✅ | ✅ | 🟢 #970 |
| gtsam_points (fork) | ✅ | ✅ | ✅ | ✅ | — | 🟢 #99 |
| heavydb | 🚫 | ⬜ | — | ⬜ | — | — |
| HEonGPU (fork) | 🚫 | ⬜ | — | ⬜ | — | — |
| icicle (fork) | ✅ | ✅ | 🚫 | 🚫 | — | — |
| k2 (fork) | ✅ | ✅ | ✅ | ✅ | — | 🟢 #1353 |
| kaldi (fork) | ✅ | ✅ | 🚫 | 🚫 | — | 🔵 validated (2 arch) |
| kaldifeat (fork) | ✅ | ✅ | — | ✅ | — | — |
| lc0 (fork) | ✅ | ✅ | 🚫 | 🚫 | 🚫 | 🟢 #2420 |
| LEAP (fork) | ✅ | ✅ | — | ✅ | — | — |
| libCEED | 🚫 | 🚫 | 🚫 | 🚫 | — | — |
| libhipcxx (fork) | ✅ | ✅ | — | ✅ | — | 🟢 #23 |
| libSGM (fork) | ✅ | ✅ | — | ✅ | ✅ | 🟢 #89 |
| LichtFeld-Studio (fork) | ✅ | ✅ | 🚫 | 🚫 | — | — |
| LiteGS (fork) | ✅ | ✅ | — | ✅ | — | — |
| llm-awq (fork) | ✅ | ✅ | — | ✅ | — | — |
| llm.c (fork) | ✅ | ✅ | ✅ | ✅ | ✅ | 🟢 #854 |
| llmq | 🚫 | ⬜ | — | ⬜ | — | — |
| LMCache (fork) | ✅ | ✅ | 🚫 | 🚫 | — | 🔵 validated (2 arch) |
| mahout (fork) | ✅ | ✅ | ✅ | ✅ | — | 🟢 #1399 |
| marian-dev (fork) | ✅ | ✅ | — | ✅ | — | — |
| MASt3R-SLAM (fork) | ✅ | ✅ | — | ✅ | — | — |
| mcx (fork) | ✅ | ✅ | — | ✅ | — | — |
| metaeuk (fork) | ✅ | ✅ | — | ✅ | — | — |
| mHC.cu (fork) | ✅ | ✅ | — | ✅ | — | — |
| mirage | 🚫 | ⬜ | — | ⬜ | — | — |
| mmcv | 🚫 | ⬜ | — | ⬜ | — | — |
| MMseqs2 (fork) | ✅ | ✅ | — | ✅ | — | — |
| MPPI-Generic (fork) | ✅ | ✅ | ✅ | ✅ | — | — |
| mwa_hyperdrive | 🚫 | ⬜ | — | ⬜ | — | — |
| NATTEN | 🚫 | 🚫 | 🚫 | 🚫 | — | — |
| nerfacc (fork) | ✅ | ✅ | — | ✅ | — | — |
| ntransformer (fork) | ✅ | ✅ | — | ✅ | ✅ | — |
| nvdiffrast (fork) | ✅ | ✅ | — | ✅ | — | — |
| OCTproZ (fork) | ✅ | ✅ | — | ✅ | — | — |
| ohm (fork) | ✅ | ✅ | — | ✅ | — | — |
| oneflow (fork) | ✅ | ✅ | 🚫 | 🚫 | — | — |
| op43dgs (fork) | ✅ | ✅ | — | ✅ | — | — |
| Open3D (fork) | ✅ | ✅ | 🚫 | ✅ | — | 🟢 #7509 |
| opencv_contrib (fork) | ✅ | ✅ | — | ✅ | — | 🟢 #4147 |
| PhoenixOS | 🚫 | ⬜ | — | ⬜ | — | — |
| plumed2 (fork) | ✅ | ✅ | 🚫 | 🚫 | — | — |
| plvs (fork) | 🔄 | 🔄 | — | 🔧 | — | — |
| Pointcept (fork) | ✅ | 🟡 | — | 🟡 | — | — |
| popsift (fork) | ✅ | ✅ | ✅ | ✅ | ✅ | 🟢 #186 |
| prismatic (fork) | ✅ | ✅ | — | ✅ | — | — |
| pyslam | 🚫 | ⬜ | — | ⬜ | — | — |
| pytorch3d (fork) | ❓ | ✅ | ✅ | ✅ | ✅ | 🟣 #2039 |
| pytorch_cluster | 🚫 | ⬜ | — | ⬜ | — | — |
| pytorch_scatter | 🚫 | ⬜ | — | ⬜ | — | — |
| pytorch_sparse | ⬜ | ⬜ | — | ⬜ | — | — |
| qrack (fork) | ✅ | ✅ | — | ✅ | — | — |
| Quest (fork) | 🚫 | ⬜ | — | ⬜ | — | — |
| QUICK (fork) | ✅ | ✅ | 🚫 | 🚫 | — | — |
| raft (fork) | ✅ | ✅ | — | 🟡 | — | — |
| rmcl (fork) | ✅ | ✅ | — | ✅ | — | — |
| rmm (fork) | ✅ | ✅ | — | 🟡 | ✅ | — |
| RWKV-CUDA (fork) | ✅ | ✅ | — | ✅ | ✅ | — |
| RXMesh (fork) | ✅ | ✅ | ✅ | ✅ | — | 🟢 #73 |
| SCAMP (fork) | ✅ | ✅ | — | ✅ | — | — |
| SpargeAttn | 🚫 | ⬜ | — | ⬜ | — | — |
| sparser-faster-llms | 🚫 | 🚫 | 🚫 | 🚫 | — | — |
| spconv | 🚫 | ⬜ | — | ⬜ | — | — |
| splatad (fork) | ✅ | ✅ | — | ✅ | — | — |
| sppark (fork) | ✅ | ✅ | 🚫 | 🚫 | — | — |
| stdgpu (fork) | ✅ | ✅ | — | ✅ | 🚫 | — |
| STRUMPACK (fork) | ✅ | ✅ | 🚫 | 🚫 | — | 🔵 validated (2 arch) |
| symforce (fork) | ✅ | ✅ | — | ✅ | — | — |
| TIGRE (fork) | ✅ | ✅ | — | ✅ | — | — |
| tiny-vllm (fork) | ✅ | ✅ | — | ✅ | — | — |
| torch-linear-assignment (fork) | ✅ | ✅ | — | ✅ | — | — |
| trt-shim-rocm (fork) | 🔧 | ⬜ | 🚫 | 🚫 | — | — |
| TTT3R (fork) | ✅ | ✅ | — | ✅ | — | — |
| TurboFNO (fork) | ✅ | ✅ | — | ✅ | — | — |
| unified-cache-management (fork) | ✅ | ✅ | ✅ | ✅ | ✅ | 🟢 #1021 |
| Velvet (fork) | ✅ | ✅ | — | ✅ | — | — |
| visionaray (fork) | ✅ | ✅ | — | ✅ | — | — |
| yalm (fork) | ✅ | ✅ | — | ✅ | — | — |
| YarnBall (fork) | ✅ | ✅ | — | ✅ | — | — |
| ZhiLight (fork) | ✅ | ✅ | 🚫 | 🚫 | — | — |
See projects/README.md for the per-project files, PORTING_GUIDE.md for porting strategy and fault classes, and CLAUDE.md for how a Claude CLI drives the pipeline.