moonxi-net-gpu

    GPU backend: CUDA/cuDNN tensor operations and training for moonxi-net

    deep-learning
    cuda
    cudnn
    resnet
    neural-network
    autograd
    gpu
    Download zip
    Author
    Version
    0.1.1
    License
    MIT
    Last updated
    4 months ago
    Downloads
    40

    #moonxi-net-gpu

    GPU backend for moonxi-net: CUDA/cuDNN-accelerated tensor operations and training. Implements the Tensor, BlasTensor, ImageTensor, and ImageBackwardOps traits via GpuTensor, so models written against moonxi-net traits run on GPU without code changes.

    #Prerequisites

    DependencyVersionPurpose
    MoonBit (CUDA fork)latestCompiler with CUDA compilation support
    CUDA Toolkit12.8+nvcc, cuBLAS, CUDA Runtime
    cuDNN9.21+Conv2d, BatchNorm, Pooling
    NVIDIA GPUCompute Capability 7.5+GPU training

    Note: The standard MoonBit toolchain does not support CUDA compilation. You must use the CUDA-patched fork.

    #Installation

    moon add chnlkw/moonxi-net-gpu

    This will also pull in moonxi-net (the CPU backend) as a transitive dependency.

    #Quick Example

    The same linear regression as the CPU version, running on 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

    #Usage

    #Import in moon.pkg

    { "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 ] }

    #Core Packages

    PackageAliasDescription
    moonxi-net-gpu/cuda@cudaCUDA runtime: init(), shutdown(), device management
    moonxi-net-gpu/tensor@gtGPU tensor backend (GpuTensor implements all tensor traits)
    moonxi-net-gpu/train@gpu_trainGPU training loop, run_gpu
    moonxi-net-gpu/event_tensor@etEvent-based tensor with profiling/timing support

    #GPU Training Workflow

    ///|
    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()
    }

    #MNIST Training

    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 config

    #CIFAR-10 ResNet-18 Training

    bash 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

    #Build & Test

    # Requires CUDA-patched MoonBit + CUDA toolkit moon test --target native moon build --target native

    #License

    Powered by MoonBit

    Site sourceReport issuePackagesBuild queueSkillsStatistics

    © 2026 mooncakes.io