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 gfx1151. 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; gfx1100 and gfx1151 reuse the resulting fork branch and re-validate, since the three AMD targets share one unified ROCm port.
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 legend: todo not started, planning / porting / review / validating in progress, done completed, gated waiting on the gfx90a port, revalidate the shared branch changed since this platform last passed, blocked needs input.
| Project | Upstream | Fork | gfx90a | gfx1100 | gfx1151 |
|---|---|---|---|---|---|
| Open3D | isl-org/Open3D | Open3D | done | done | validating (blocked) |
| pytorch3d | facebookresearch/pytorch3d | pytorch3d | done | done | done |
| catboost | catboost/catboost | catboost | revalidate | revalidate | validating (blocked) |
| cudf | rapidsai/cudf | cudf | done | revalidate | validating |
| LMCache | LMCache/LMCache | LMCache | done | done | validating (blocked) |
| gsplat | nerfstudio-project/gsplat | gsplat | done | done | done |
| llm.c | karpathy/llm.c | llm.c | done | done | done |
| kaldi | kaldi-asr/kaldi | kaldi | done | done | validating |
| cuml | rapidsai/cuml | - | planned | gated | gated |
| CTranslate2 | OpenNMT/CTranslate2 | CTranslate2 | done | done | validating |
| alien | chrxh/alien | alien | done | done | validating |
| mahout | apache/mahout | mahout | done | done | validating |
| LichtFeld-Studio | MrNeRF/LichtFeld-Studio | LichtFeld-Studio | done | done | validating |
| lc0 | LeelaChessZero/lc0 | lc0 | done | done | validating |
| oneflow | Oneflow-Inc/oneflow | oneflow | done | done | validating |
| arrayfire | arrayfire/arrayfire | arrayfire | done | done | validating |
| CV-CUDA | CVCUDA/CV-CUDA | CV-CUDA | done | done | validating |
| cugraph | rapidsai/cugraph | cugraph | planned (blocked) | gated | gated |
| mirage | mirage-project/mirage | - | todo (blocked) | gated | gated |
| k2 | k2-fsa/k2 | k2 | done | done | validating |
| raft | rapidsai/raft | raft | revalidate | revalidate | validating |
| heavydb | heavyai/heavydb | - | todo (blocked) | gated | gated |
| rmm | rapidsai/rmm | rmm | done | done | done |
| cuvs | rapidsai/cuvs | cuvs | porting | gated | gated |
| GPUMD | brucefan1983/GPUMD | GPUMD | done | done | done |
| cuCollections | NVIDIA/cuCollections | cuCollections | done | done | validating |
| amgcl | ddemidov/amgcl | amgcl | done | done | validating (blocked) |
| CudaSift | Celebrandil/CudaSift | CudaSift | done | done | done |
| cupoch | neka-nat/cupoch | cupoch | done | done | validating (blocked) |
| popsift | alicevision/popsift | popsift | done | done | done |
| NATTEN | SHI-Labs/NATTEN | - | planned | gated | gated |
| ElasticFusion | mp3guy/ElasticFusion | ElasticFusion | done | done | validating |
| cucim | rapidsai/cucim | cucim | done | done | validating |
| ZhiLight | zhihu/ZhiLight | ZhiLight | done | done | validating |
| SpargeAttn | thu-ml/SpargeAttn | - | todo (blocked) | gated | gated |
| 3DUNDERWORLD-SLS-GPU_CPU | theICTlab/3DUNDERWORLD-SLS-GPU_CPU | 3DUNDERWORLD-SLS-GPU_CPU | done | done | validating |
| STRUMPACK | pghysels/STRUMPACK | STRUMPACK | done | done | validating |
| AutoDock-GPU | ccsb-scripps/AutoDock-GPU | AutoDock-GPU | done | done | validating |
| FlashKDA | MoonshotAI/FlashKDA | - | planned | gated | gated |
| 3P-ADMM-PC2 | Samarvivian/3P-ADMM-PC2 | - | todo | gated | gated |
| unified-cache-management | ModelEngine-Group/unified-cache-management | - | todo | gated | gated |
| gtsam_points | koide3/gtsam_points | gtsam_points | done | done | validating |
| gpu4pyscf | pyscf/gpu4pyscf | - | planned | gated | gated |
| RXMesh | owensgroup/RXMesh | RXMesh | done | done | validating |
| MPPI-Generic | ACDSLab/MPPI-Generic | MPPI-Generic | done | done | validating |
| sppark | supranational/sppark | - | todo | gated | gated |
| Gpufit | gpufit/Gpufit | Gpufit | done | done | validating |
| FlashRT | LiangSu8899/FlashRT | - | todo | gated | gated |
| evogp | EMI-Group/evogp | evogp | done | done | validating |
| ffpa-attn | xlite-dev/ffpa-attn | - | todo | gated | gated |
| FlashMoE | osayamenja/FlashMoE | - | todo | gated | gated |
| LiteGS | MooreThreads/LiteGS | LiteGS | done | done | validating |
| CUDA-L2 | deepreinforce-ai/CUDA-L2 | - | todo | gated | gated |
| Fast-Poisson-Image-Editing | Trinkle23897/Fast-Poisson-Image-Editing | Fast-Poisson-Image-Editing | done | done | done |
| icicle | ingonyama-zk/icicle | - | revalidate | validating | validating |
| dietgpu | facebookresearch/dietgpu | dietgpu | done | done | validating |
| bam | ZaidQureshi/bam | - | todo | gated | gated |
| sparser-faster-llms | SakanaAI/sparser-faster-llms | - | todo | gated | gated |
| llmq | IST-DASLab/llmq | - | todo | gated | gated |
| LEAP | llnl/LEAP | - | todo | gated | gated |
| ntransformer | xaskasdf/ntransformer | - | todo | gated | gated |
| FaithC | Luo-Yihao/FaithC | - | todo | gated | gated |
| rmcl | uos/rmcl | rmcl | done | done | validating |
| fused-ssim | rahul-goel/fused-ssim | fused-ssim | done | done | validating (blocked) |
| gpuRIR | DavidDiazGuerra/gpuRIR | gpuRIR | done | done | validating |
| yalm | andrewkchan/yalm | yalm | done | done | validating |
| mHC.cu | AndreSlavescu/mHC.cu | - | todo | gated | gated |
| EnvGS | zju3dv/EnvGS | EnvGS | done | done | validating |
| egg.c | d0rc/egg.c | - | todo | gated | gated |
| DiffPhysDrone | HenryHuYu/DiffPhysDrone | DiffPhysDrone | done | done | validating |
| libSGM | fixstars/libSGM | libSGM | done | done | validating |
| CPM.cu | OpenBMB/CPM.cu | - | todo | gated | gated |
| marian-dev | marian-nmt/marian-dev | marian-dev | done | validating | blocked-needs-gfx1100 |
| RWKV-CUDA | BlinkDL/RWKV-CUDA | RWKV-CUDA | done | done | validating |
| splatad | carlinds/splatad | splatad | done | done | validating |
| cudaKDTree | ingowald/cudaKDTree | cudaKDTree | done | done | done |
| Quest | mit-han-lab/Quest | - | planned | gated | gated |
| PhoenixOS | SJTU-IPADS/PhoenixOS | - | todo | gated | gated |
| 3DGS-LM | lukasHoel/3DGS-LM | 3DGS-LM | done | done | validating |
| fp6_llm | usyd-fsalab/fp6_llm | - | todo | gated | gated |
| gaussian_splatting | joeyan/gaussian_splatting | gaussian_splatting | done | done | validating |
| DDN-SLAM | DrLi-Ming/DDN-SLAM | DDN-SLAM | porting (blocked) | gated | gated |
| op43dgs | LetianHuang/op43dgs | op43dgs | done | done | validating |
| faiss | facebookresearch/faiss | faiss | done | done | validating |
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.