HPC GPU Stack
Treat GPU execution as one coherent stack: CUDA toolchain, host compiler, launcher, scheduler mapping, and device visibility must agree before kernel tuning matters.
Start
- Read
references/cuda-and-host-compiler-matrix.mdbefore choosingnvcc, host compiler, or a CUDA build baseline. - Read
references/gpu-aware-mpi-and-rank-mapping.mdwhen the workflow spans MPI ranks, one-rank-per-GPU layouts, or CUDA-aware MPI. - Read
references/device-visibility-and-scheduler-integration.mdwhen Slurm,CUDA_VISIBLE_DEVICES, MIG, or scheduler-provided GPU allocation is involved. - Read
references/memory-streams-and-overlap-playbook.mdwhen debugging device memory pressure, pinned-memory transfers, streams, or overlap assumptions. - Read
references/build-and-launch-workflow.mdwhen turning a CUDA code path into a reproducible compile-and-run workflow. - Read
references/runtime-debugging-and-profiling.mdwhen kernels fail at runtime, ranks see the wrong device, or performance is unexpectedly poor. - Read
references/error-recovery.mdwhen configure, compile, launch, or runtime CUDA behavior fails. - Read
references/error-pattern-dictionary.mdwhen a GPU failure needs a fast pattern match.
Work sequence
- Confirm the execution model first:
- single GPU
- one MPI rank per GPU
- hybrid MPI plus threads with explicit rank-to-GPU placement
- Keep CUDA toolkit, host compiler, and MPI stack mutually compatible.
- Let the scheduler expose the intended GPU allocation before forcing manual device selection.
- Get a minimal kernel and launch baseline working before tuning streams, overlap, or transport variables.
- Reproduce failures on one node and the smallest GPU count that still shows the issue before scaling out.
Guardrails
- Do not assume
nvccaccepts any host compiler visible inPATH. - Do not mix rank-to-GPU mapping logic from Open MPI, MPICH-family, and Slurm without checking which environment variables are actually set.
- Do not tune streams or overlap to compensate for a broken device-mapping or memory-capacity issue.
- Do not debug multi-node GPU failures before a single-node baseline is trustworthy.
Additional References
Load these on demand:
references/cuda-and-host-compiler-matrix.mdfor compiler-compatibility and build-baseline decisionsreferences/gpu-aware-mpi-and-rank-mapping.mdfor CUDA-aware MPI and rank placement rulesreferences/device-visibility-and-scheduler-integration.mdfor scheduler-exposed GPU visibility and Slurm integrationreferences/memory-streams-and-overlap-playbook.mdfor memory hierarchy, streams, and transfer overlapreferences/build-and-launch-workflow.mdfor reproducible build and launch sequencingreferences/runtime-debugging-and-profiling.mdfor runtime inspection and performance triagereferences/error-pattern-dictionary.mdfor common GPU failure signatures
Reusable Templates
Use assets/templates/ when a concrete starting point is faster than rebuilding the GPU workflow from scratch, especially:
cuda_vector_add_minimal.cunvcc_build_example.shcuda_single_gpu_slurm.shcuda_mpi_gpu_slurm.sh
Outputs
Summarize:
- CUDA toolkit and host-compiler path chosen
- rank-to-GPU mapping or single-GPU launch path
- scheduler or visibility assumptions
- memory and stream model if relevant
- the exact build or runtime failure class if the workflow is being repaired
Scan to join WeChat group