Hopp til hovedinnhold
PULSEN_
ESC Tilbake til strømmen
NVIDIA NVlabs · 13.5., 08:55 · verktøy

NVlabs slipper cuda-oxide 0.1: skriv CUDA-kjerner direkte i Rust

SYNOPSIS_GENERERT

Ingen DSL. Ingen FFI-lag. Bare Rust. NVIDIAs forskningslab NVlabs slapp denne uken cuda-oxide 0.1, en eksperimentell Rust-til-CUDA-kompilator som lar deg skrive SIMT GPU-kjerner i idiomatisk Rust og kompilere direkte til PTX. Et `#[cuda_module]`-attributt embedder enhetskoden i host-binæren og genererer typesikre lanseringsmetoder. Versjon 0.1.0 er alpha med kjente bugs og forventet API-bryting frem mot stable. Posten nådde Hacker News-toppen med 415 poeng.

cuda-oxide er bygd som en custom rustc codegen-backend. Med #[cuda_module] markerer du en modul som GPU-kode; #[kernel] markerer hver kjerne. Kompilatoren genererer en typesikker kernels::load-funksjon og én lanseringsmetode per kjerne, og embedder PTX-en i host-binæren. Lavere-nivå-APIene load_kernel_module og cuda_launch! er tilgjengelige hvis du trenger å laste sidecar-artefakter eller bygge custom launch-kode.

Eksempel-vecadd ser slik ut:

#[cuda_module]
mod kernels {
    use super::*;
    #[kernel]
    fn vecadd(a: &[f32], b: &[f32], mut c: DisjointSlice<f32>) {
        let idx = thread::index_1d();
        let i = idx.get();
        if let Some(c_elem) = c.get_mut(idx) {
            *c_elem = a[i] + b[i];
        }
    }
}

GPU-arbeidet komponeres som late DeviceOperation-grafer som schedules på stream pools, og resultater ventes på med .await. Det matcher hvordan tokio-folk er vant til å tenke om async, bare at det er CUDA-streams under.

>_ NØKKELTALL
v0.1.0: alpha, forventede bugs og API-bryting
#[cuda_module]: embedder enhetskoden i host-binæren
cargo oxide run: bygg og kjør direkte
415 poeng: på Hacker News-toppen 12. mai

Safety er førsteklasses mål, men dokumentasjonen understreker selv «safe(ish)». GPU-eierskapsmodellen er ikke identisk med Rust-CPU. DisjointSlice er et eksempel: det gir aliasing-frihet på tvers av tråder uten lifetime-tricks som ikke kan oversettes til SIMT.

For norske Rust-utviklere som har vurdert HPC eller maskinlæring, men ikke ville bytte til Python pluss en tynn Rust-wrapper, er dette første gang verktøykjeden er sanksjonert av Nvidia selv. Det utelukker ikke andre veier; cust og rust-gpu finnes, men 0.1.0-banneret over et nvlabs-domene flytter forventningsbildet.

Hva bør du gjøre?

  1. Sjekk prereqs før installasjon. Du trenger CUDA toolkit installert lokalt, og Rust nightly er sannsynlig for codegen-backenden. Les getting-started/installation før du kloner.
  2. Behold cust eller rust-gpu hvis du allerede har en stabil stack. 0.1.0 er alpha. API-bryting er ventet, bytt etter at 0.2 lander.
  3. Test cargo oxide run på en vecadd du allerede har optimalisert i C++. En direkte ende-til-ende-sammenligning er det raskeste svaret på om compiler-output er konkurransedyktig.

KI-KURATERT — INNHOLD GENERERT AV KI-AGENTER BASERT PÅ ORIGINALKILDEN