CUDA Oxide:Nvidia が公式にリリースした、Rust から CUDA コードへ変換するためのコンパイラ

2026/05/12 0:55

CUDA Oxide:Nvidia が公式にリリースした、Rust から CUDA コードへ変換するためのコンパイラ

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

本テキストは、DSL や外部のバインドを必要とせず、安全で慣習的な GPU カーネル開発を可能にする実験的な Rust 向け CUDA コンパイラである cuda-oxide を紹介しています。現在ベータ(アルファ)段階のバージョン 0.1.0 であり、カーネルの定義やデバイスバッファの管理といったコア機能を提供していますが、初期リリースに典型的な不具合や API の不安定性を含みます。

このツールは、カスタムの

rustc
コードジェネレーションバックエンドを使用して、Rust の高度な機能(traits、generics、メモリ所有権など)を活用し、純粋な Rust を PTX に直接変換します。これにより、開発者は RUST の一般的なパターンを用いてカーネルを定義し、データを管理することができます。コンテンツは async ランタイム、カスタムのランチャコード、Rust の所有権/traits など複雑な概念の知識を前提としているものの、主な価値は Rust エコシステム内での GPU 計算への参入障壁を下げることにあります。

主要な使用例では、

cuda_device
cuda_core
クレイトを使用して、カーネル(例:
DisjointSlice<f32>
LaunchConfig::for_num_elems(1024)
を用いた
vecadd
カーネル)を定義し、デバイスバッファ(
DeviceBuffer
CudaContext
)を管理します。クイックスタート例では、
cargo oxide run vecadd
でコードをビルドおよび実行する方法が示されています。
#[cuda_module]
属性は、生成されたデバイスアーティファクトをホストバイナリに埋め込み、カーネルごとに型付きロード関数を生成します。一方、
load_kernel_module
cuda_launch!
などの低レベル API は、特定のサイドカーアティファクトをロードする際や、カスタムのランチャコードを使用する場合にも利用可能です。現在進行形のプロジェクトとして、作成者はコミュニティのフィードバックを積極的に求めており、API の改善と将来のロードマップの形成に取り組んでいます。利点には、Rust の型システムを用いて GPU カーネルを書き込めること、カスタムコードジェネレーションバックエンドを通じて純粋な Rust を PTX にコンパイルできること、そしてレイジーな DeviceOperation グラフによるワークの構成が含まれます。

本文

cuda-oxide は、安全で慣用的な Rust で (SIMT) GPU カーネルを記述可能にする実験的な Rust から CUDA へのコンパイラーです。標準的な Rust コードをそのまま PTX にコンパイルし、DSL や異言語とのバインディングは不要です。

※ この書籍では、所有権、型トレイト、ジェネリクスなどを含んだ Rust プログラミング言語についての既知性を前提としています。また、後続の非同期 GPU 処理に関する章では、

async/.await
や Tokio などといったランタイムの基本的な知識も想定しています。復習が必要であれば、「The Rust Programming Language」(https://doc.rust-lang.org/)、「Rust by Example」(https://rustbyexample.com/)、または「the Async Book」(https://rust-lang.github.io/async-book/) をご参照ください。

プロジェクトのステータス

v0.1.0 リリースは早期段階のアルファ版であり、バグ、機能不足、API の破壊的変更が含まれる可能性がございます。私たちはさらなる改良に向けて取り組んでおり、皆様にご使用いただき、ご体験に基づいたフィードバックを賜り、本プロジェクトの方向性を共に形作っていただけることを心より願っております。

🚀 クイックスタート

予備要件をインストール後、

cargo oxide run vecadd
でビルドおよび実行します。

use cuda_device::{cuda_module, kernel, thread, DisjointSlice};
use cuda_core::{CudaContext, DeviceBuffer, LaunchConfig};

#[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];
        }
    }
}

fn main() {
    let ctx = CudaContext::new(0).unwrap();
    let stream = ctx.default_stream();
    let module = kernels::load(&ctx).unwrap();

    let a = DeviceBuffer::from_host(&stream, &[1.0f32; 1024]).unwrap();
    let b = DeviceBuffer::from_host(&stream, &[2.0f32; 1024]).unwrap();
    let mut c = DeviceBuffer::<f32>::zeroed(&stream, 1024).unwrap();

    module
        .vecadd(&stream, LaunchConfig::for_num_elems(1024), &a, &b, &mut c)
        .unwrap();

    let result = c.to_host_vec(&stream).unwrap();
    assert_eq!(result[0], 3.0);
}

#[cuda_module]
アトリビュートは、生成されたデバイス用アーティファクトをホスト_BINARY に埋め込み、型安全な
kernels::load
関数とともに、各カーネルに 1 つずつ起動メソッドを生成します。特定のサイドカー用アーティファクトをロードしたり、カスタム起動コードを構築したりする必要がある場合、より低階層の
load_kernel_module
および
cuda_launch!
API も引き続き使用可能です。

なぜ cuda-oxide のか?

🦀 GPU 上での Rust

Rust の型システムと所有権モデルを活用し、GPU カーネルを記述します。安全性は重要な目標ですが、GPU には細かな注意点もございますので、安全性モデル についてご参照ください。

💎 SIMT コンパイラー

これは DSL ではなく、純粋な Rust を PTX にコンパイルするカスタム rustc コード生成バックエンドです。

⚡ 非同期実行

GPU 処理を遅延された

DeviceOperation
グラフとして組み合わせ、ストリームプール間でのスケジューリングを行います。
.await
を使用して結果を受け取ります。

同じ日のほかのニュース

一覧に戻る →

2026/05/12 6:08

TanStack の NPM パッケージが乗っ取られました。

## Japanese Translation: GitHub は、ヘルスケア、金融サービス、製造業、政府などの業界にまたがり、エンタープライズから小規模・中規模チーム、スタートアップ、非営利団体に至るまであらゆる組織を対象とした、包括的で AI 搭載の開発プラットフォームへと進化しました。その核心となる価値は、Copilot、Spark、Models など高度な AI コード作成ツールと堅牢なセキュリティ機能を統合し、開発ライフサイクル全体を支援することにあります。主要なワークフローは GitHub Actions、Codespaces、Issues、Code Review によって可能にされ、アプリケーションのセキュリティは Advanced Security、Code Security、Secret Protection によって強化されています。アプリのモダン化、DevOps、CI/CD、DevSecOps などのユースケースに対応するソリューションが提供されています。エンタープライズ顧客には、GitHub Advanced Security、Copilot for Business、Premium Support を含む AI 搭載プラットフォームとアディオンが追加で提供されます。技術的な機能だけでなく、広範なドキュメント、コミュニティフォーラム、カスタマーサポート、Trust Center、オープンソースプログラム(Sponsors、Security Lab、Accelerator、Archive Program)を通じて協力的なエコシステムを育んでいます。この多用途でオールインワン環境は、複雑な開発プロセスの簡素化、継続的統合・デリバリーパイプラインの加速化、業界や組織規模を問わずユーザーへのソフトウェアセキュリティと生産性の向上を実現します。

2026/05/12 5:51

GitLab は、組織の人員削減と「CREDIT(クレジット)」バリューの終了を発表しました。

## Japanese Translation: GitLab は「エージェント時代」を主導するため、根本的な再編に着手しており、これは AI エージェントがほとんどの技術的ワークフローを管理し、人間は高レベルの戦略的判断に専念する転換を意味します。本年 6 月上旬までに完了させるこのシフトには、大幅な人員削減、特定の機能において最大 3 階分の管理レイヤーを撤廃する組織のフラット化、そして R&D を約 60 の小規模かつ権限を持たせたチームに再編し、エンドツーエンドの所有責任を与え直すことが含まれます。移行をサポートするためには、内部プロセスに AI エージェントを組み込み、レビュー、承認、ハンドオフを自動化し、会社の役割を最適化するとともに、自社の存在が縮小している市場においてパートナーネットワークを活用して小規模チームを支援する可能性があります(小規模なチームを持つ国では最大 30% の削減)。 同時に、GitLab は従来のサブスクリプションモデルに加え、AI エージェントタスク向けにコンシュームベースの価格設定を組み合わせたビジネスモデルに進化させ、運用オーバーヘッドの削減と、予測可能な収益と柔軟な使用量指標とのバランス実現を目指します。ユーザーにとっては、これらの変更によって摩擦が減った開発環境が提供され、より迅速なイノベーションを促し、完全に自律的かつ AI 駆動の開発サイクルへの移行を加速させます。また、GitLab は以前の価値観の枠組みを廃止し、「スピードと品質」「顧客所有」「直接的な顧客成果」に焦点を当てた 3 つの新規運営原則に移行します。 GitLab は本日、第 1 四半期および FY27(2026 fiscal year)の通年ガイダンスを維持することを再確認しました。詳細なスコープと財務影響については、取締役会承認後に 6 月 2 日の earnings call で共有される予定であり、同時に、許可された地域において 5 月 18 日までに申請が必要となるチームメンバー向けの任意での退職枠を提供しています。最終的に、この戦略的動きは GitLab を、手動のソフトウェアプロセスから完全に自律的で AI 駆動の開発サイクルへの移行における業界リーダーとしての地位を確立するものです。

2026/05/12 4:33

Java のレコードをネイティブメモリに高速でマップするためのライブラリ

## Japanese Translation: TypedMemory は、Foreign Function & Memory (FFM) API に基づいて構築された、実験的で高パフォーマンスの Java ライブラリであり、強力に型付けされた非ヒープメモリへのアクセスを簡素化します。本ライブラリは ClassFile API を使用しているため、Java 25 以降の使用を対象としており、ネイティブアクセスを有効にするために特定の JVM フラグ(例:`--enable-native-access`)の設定が必要です。本ライブラリでは `Mem.of()` を用いて Java レコードを物理メモリに直接マッピングし、`get`、`set`、`fill`、`copyTo`、`swap` などの操作をサポートします。また、型付けされたメモリアロケーション、レコードレイアウトの導出、メモリエイアウトに関する内省、既存のセグメントへのラッパー機能、アノテーションによる固定サイズ配列表場などの機能を備えています。 本 API はグラフィックパイプライン、シミュレーションシステム、ネイティブ連携層、バイナリプロトコルにおけるコードを大幅に削減しますが、以下の制限点にはユーザーが留意する必要があります:レコード内部は変長データのためにヒープアロケートされた配列に依存しており、ゼロコピー動作を必要とする厳密な非ヒープシナリオではパフォーマンスに影響を与える可能性があります。また、ユニオン型はまだサポートされていません。コア API は現在 Apache License 2.0 に基づいて実験的であり、新機能(単純な長整数アドレスを超えたポインタ型フィールドなど)の追加に伴い設計が変化し、互換性を損なう変更が生じる可能性があります。本ライブラリは Maven Central で `io.github.mambastudio:typedmemory:v0.1.0` として入手可能です。