
Switching away from CUDA isn't one migration: it's five separate porting problems, hidden revalidation costs, and an org chart that fights you the whole way.
A deep read: the full picture, with the receipts.
CUDA lock-in is the compounded result of a decade of legitimate engineering decisions, not a vendor conspiracy, and understanding it at that level of precision is the only way to make a defensible GPU infrastructure choice. The question isn't whether you're locked in; you are. The question is which layers of that lock-in are load-bearing for your workload, which escape routes are real, and what each one actually costs.
The Five Software Layers That Are Each a Separate Porting Problem#
Most teams think of CUDA lock-in as a single thing. It isn't. It's a stack of interdependencies that each require independent attention:
The compounding effect is the point: a training job that uses all five of these, which describes most production deep learning workloads, isn't facing one porting decision; it's facing five separate porting decisions with validation requirements that interact.
A Realistic Switching-Cost Taxonomy#
ROCm and HIP: Honest Capability Assessment#
ROCm and HIP are distinct things, and conflating them produces bad migration estimates.
Recent ROCm major releases have made genuine progress on MI300-series hardware support, improved the hipify tooling, and expanded the MIOpen operator set. For workloads that map cleanly to standard transformer training (large GEMM-heavy forward and backward passes, straightforward collective communications), ROCm on current AMD data-centre hardware is meaningfully competitive in practice, not just on paper.
The honest problem areas: CUDA features introduced after roughly Ampere's cooperative group extensions have uneven HIP support. Warp-level intrinsics that CUDA kernels use for custom attention or custom normalisation may translate syntactically but produce wrong results on certain AMD GPU generations due to warp-size differences (AMD's wavefront is 64 lanes, not 32), and this is a correctness problem, not a performance problem.
Custom CUDA kernels written with warp-size assumptions hardcoded are a frequent source of silent divergence after hipify. Any migration plan must include explicit wavefront-size audits.
Portability Frameworks: What Has Actually Shipped at Scale#
The Organisational Layer: Harder to Fix Than the Code#
CUDA expertise functions as an implicit hiring filter across the ML engineering market. Job descriptions, interview rubrics, and senior engineer mentorship pipelines are all calibrated around CUDA knowledge. A migration project doesn't just need code changes; it needs engineers who can reason about AMD's GCN/RDNA/CDNA architecture in the same detail that CUDA engineers reason about SM occupancy and shared memory bank conflicts. That expertise is thinner on the market and takes time to build internally.
Internal tooling debt compounds this. Many mature ML infrastructure teams have profiling dashboards, training monitoring tools and debugging workflows with NVIDIA-specific assumptions baked in: Nsight integration, NVML for hardware metrics, specific CUDA event timing patterns.
These tools don't break loudly when you switch hardware; they quietly provide less useful data, which degrades your ability to diagnose performance regressions.
Enterprise re-skilling typically happens in one of two ways.
Concrete Mitigation Strategies with Honest Trade-offs#
Key Takeaways#
- CUDA lock-in is five separate porting problems (runtime, cuDNN, cuBLAS, Thrust, NCCL), each with independent validation requirements.
- The largest underestimated cost is numerical revalidation, not code translation.
- ROCm/HIP has made real progress; the specific risk is warp-size-dependent correctness bugs post-hipify, not general incompetence.
- Triton is the most actionable portability investment for teams writing custom kernels today.
- Organisational lock-in (expertise, tooling assumptions, hiring filters) outlasts code migrations and needs an explicit plan.
- The practical path is workload segmentation and abstraction-layer discipline, not a single flag-day cutover.
- Vendor portability claims describe architectural intent; performance portability on production workloads requires target-specific work regardless of the framework.
Sources
- NVIDIA, CUDA C++ Programming Guidedocs.nvidia.com
- NVIDIA, CUDA platform for accelerated computingdeveloper.nvidia.com
- PyTorch, CUDA semanticsdocs.pytorch.org
- vLLM, documentationdocs.vllm.ai



Discussion