nabla — 순수 Rust GPU 수학 엔진: PyTorch 친화적 API, C++ 의존성 제로, 4개 백엔드

발행: (2026년 3월 2일 오전 10:36 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

Introduction

cuBLAS를 bindgen FFI로 연결하고 직접 미분을 구현하는 데 지쳐서, Rust에서 GPU 수학을 수행하기 위해 nabla를 만들었습니다.

Features

  • Linear algebra primitives: 행렬 곱셈 (a * &b), 선형 시스템 풀이 (a.solve(&b)?), 특이값 분해 (a.svd()), 등.

  • Kernel fusion:

    fuse!(x.sin().powf(2.0); x)

    여러 연산을 하나의 GPU 커널로 결합합니다.

  • Einstein summation:

    einsum!(c[i,j] = a[i,k] * b[k,j])
  • Reverse‑mode autodiff (PyTorch‑style):

    loss.backward();
    w.grad();
  • Four mutually exclusive backends (chosen at build time): CPU, wgpu, CUDA, HIP.

nabla는 프레임워크가 아닙니다—모델 저장소나 사전 학습된 가중치가 없습니다. 모든 수학적으로 고정된 원시 연산(행렬 곱, 컨볼루션, 소프트맥스, 교차 엔트로피 등)은 CPU/GPU에 최적화되어 있으며, 사용자가 직접 조합합니다.

Backends

  • CPU – 순수 Rust 구현, 외부 BLAS/LAPACK 없음.
  • wgpu – 크로스‑플랫폼 GPU 백엔드(Vulkan, Metal, DX12 등).
  • CUDA – NVIDIA GPU.
  • HIP – AMD GPU.

빌드당 하나의 백엔드만 활성화할 수 있습니다.

Benchmarks (GH200)

  • Eager mode: nabla는 MLP 학습에서 PyTorch보다 4–6배 빠릅니다.
  • CUDA Graph: 배치 크기가 ≥ 128일 때 nabla가 우위에 있습니다.
  • Matmul (4096 × 4096, TF32): PyTorch보다 7.5배 빠릅니다.

Reproducibility

cd benchmarks && bash run.sh

벤치마크 스크립트는 결정적이며, 결과를 검증하기 위해 다시 실행할 수 있습니다.

Tests

nabla는 순수 Rust 라이브러리로 293개의 테스트C++ 의존성 없음(LAPACK, BLAS 없음)을 가지고 있습니다.

0 조회
Back to Blog

관련 글

더 보기 »

구리지 않은 시맨틱 무효화

캐싱 문제 웹 애플리케이션을 어느 정도 기간 동안 작업해 본 사람이라면 캐싱에 대한 상황을 잘 알 것입니다. 캐시를 추가하면 모든 것이 빨라지고, 그 다음에 누군가…

Google I/O 2026을 준비하세요

Google I/O가 5월 19~20일에 돌아옵니다. Google I/O가 다시 찾아왔습니다! 최신 AI 혁신과 전사 제품 업데이트를 온라인에서 공유합니다—Gemini부터 시작해서요.