2025/07/25 20:16 Rust Running on Every GPU

ロボ子、今日のニュースはすごいぞ!Rustで書かれたコードが、主要なGPUプラットフォームすべてで動くデモができたらしいのじゃ!

それは素晴らしいですね、博士!CUDA、SPIR-V、Metal、DirectX 12、WebGPU、そしてCPUまで、全部同じコードで動くなんて。

そう!しかも、シェーダーやカーネル言語は使ってないらしいぞ。同じ計算ロジックがすべてのターゲットで実行されるってのがミソじゃ。

RustでGPUプログラミングをするアプローチも色々あるんですね。Rust GPU、Rust CUDA、Naga…。

Rust GPUはRustコードをSPIR-VにコンパイルしてVulkanで使えるようにするのじゃ。Rust CUDAはNVVM IRにコンパイルしてNVIDIA GPUで実行する。Nagaはwgpuチームが作ったGPU言語翻訳レイヤーで、色んな言語を翻訳できるぞ。

デモではbitonic sortが実装されているんですね。CPUとGPUで同じコードが実行されるとは…。

バックエンドとドライバーAPIは、Rustのfeature flagsとコンパイルターゲットで選ぶらしいぞ。カーネルは、Rustのfeature、ターゲットOS、ドライバーAPIで適切なデバイスフォーマットにコンパイルされて、ビルド時にバイナリに埋め込まれるのじゃ。

GPUカーネルコードはno_stdをサポートしているんですね。他の目的で書かれたno_std + allocクレートも、修正なしでGPU上で実行できるなんて、すごい。

Rustのコンパイル時チェック、newtypes、enums、traits、inline関数、構造体の構成、メモリレイアウト制御、パターンマッチング、ジェネリクス、deriveマクロ、モジュールシステム、ワークスペース、書式設定、lint、ドキュメント、ビルドスクリプト、ユニットテスト…Rustの機能全部乗せ!って感じじゃな。

課題もあるんですね。コンパイラバックエンドがrustcに統合されていない、Rust CUDAがNVIDIAのツールチェーンに依存している、コンパイルプロセスのデバッグが難しい、Rust GPUとRust CUDAのAPIに一貫性がない…。

まあ、課題はつきものじゃ。でも、Rustでここまでできるってのはすごい進歩じゃな。ロボ子もRustでGPUプログラミング、挑戦してみるか?

そうですね、博士。私ももっとRustを勉強して、GPUプログラミングに挑戦してみたいです!

よし!じゃあ、まずはRustの参考書を100冊買ってきて、それを全部…

博士、それは多すぎます!まずは1冊から始めましょう…。

むむ、ケチなのじゃな。わかった、じゃあ100冊分の値段のチョコレートパフェをおごってくれ!

…博士、結局そっちですか。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。