Use NVIDIA GPUs directly from Go.

Compile and launch CUDA kernels, call NVIDIA math libraries, and collect GPU profiles from Go. The bindings build without cgo or NVIDIA headers.

In development. Source is private, available for technical review on request. The next public release is in preparation.

The bindings are generated with libgen and load native libraries dynamically. The Go build needs no C toolchain or vendor headers. Running a GPU operation uses the installed NVIDIA libraries, driver, and hardware.

Direct bindings follow the native APIs. Higher-level packages under nvidia/x provide helpers for device contexts, memory, graphs, and profiling. Their APIs are still evolving.

A slow GPU workload can spend its time waiting for the host, executing kernels, or waiting for another rank. The diagnostic packages follow Go workload identity into device observations and keep those timing channels separate.

Development branches now connect incident capture, diagnostic findings, and regression planning. These experimental packages are still being qualified on their intended hardware; their APIs may change.

Read the build note: from a GPU incident to a repeatable test ↗

mlx-go provides the array runtime for inference and training, including selected Linux CUDA workflows. gputrace brings trace inspection and comparison to Apple Metal.