GPU backend: CUDA/cuDNN tensor operations and training for moonxi-net
Dependencies
| Dependency | Version | Purpose |
|---|---|---|
| MoonBit (CUDA fork) | latest | Compiler with CUDA compilation support |
| CUDA Toolkit | 12.8+ | nvcc, cuBLAS, CUDA Runtime |
| cuDNN | 9.21+ | Conv2d, BatchNorm, Pooling |
| NVIDIA GPU | Compute Capability 7.5+ | GPU training |
Note: The standard MoonBit toolchain does not support CUDA compilation. You must use the CUDA-patched fork.
moon add chnlkw/moonxi-net-gpu///|
fn main {
// Initialize CUDA context
@cuda.init()
// Use GpuTensor instead of NpArray
let params : Array[@gt.GpuTensor] = train_linear()
// ...same generic train_linear() function, no code changes needed
@cuda.shutdown()
}moon run moonxi-net-gpu/examples/linear --target native --release
# Learned: w=3.00, b=1.00{
"import": [
"chnlkw/moonxi-net" @tensor,
"chnlkw/moonxi-net-gpu/cuda" @cuda,
"chnlkw/moonxi-net-gpu/tensor" @gt,
"chnlkw/moonxi-net-gpu/train" @gpu_train,
"chnlkw/moonxi-net-gpu/event_tensor" @et
]
}| Package | Alias | Description |
|---|---|---|
| moonxi-net-gpu/cuda | @cuda | CUDA runtime: init(), shutdown(), device management |
| moonxi-net-gpu/tensor | @gt | GPU tensor backend (GpuTensor implements all tensor traits) |
| moonxi-net-gpu/train | @gpu_train | GPU training loop, run_gpu |
| moonxi-net-gpu/event_tensor | @et | Event-based tensor with profiling/timing support |
///|
fn main {
// Initialize CUDA
@cuda.init()
// Create tensors using GpuTensor (GPU backend)
let w = @grad.no_grad(@gt.GpuTensor::zeros([10, 10]))
let b = @grad.no_grad(@gt.GpuTensor::zeros([10]))
// Same autograd API as CPU
@grad.clear_tape()
let loss = /* ... your forward pass ... */
loss.backward()
// Access gradients
match w.grad {
Some(Some(g)) => w.value = w.value.sub(g.scale(0.01))
_ => ()
}
@cuda.shutdown()
}bash scripts/download_mnist.sh
moon run moonxi-net-gpu/examples/mnist --target native --release # CPU backend
moon run moonxi-net-gpu/examples/mnist --target native --release -- --gpu # GPU backend
moon run moonxi-net-gpu/examples/mnist --target native --release -- -e 20 -b 128 # Custom configbash scripts/download_cifar10.sh
moon run moonxi-net-gpu/examples/cifar10 --target native --release # 20 epochs, momentum SGD
moon run moonxi-net-gpu/examples/cifar10 --target native --release -- -e 10 # Custom epochs
moon run moonxi-net-gpu/examples/cifar10 --target native --release -- -o adam # Use Adam optimizer# Requires CUDA-patched MoonBit + CUDA toolkit
moon test --target native
moon build --target nativeGPU backend: CUDA/cuDNN tensor operations and training for moonxi-net
Dependencies