24 ポイント 投稿者 GN⁺ 2025-04-05 | 3件のコメント | WhatsAppで共有
  • 長年にわたりC/C++中心だったNVIDIAのCUDAツールキットに、2024年のGTCでネイティブPythonサポートが正式に追加された
  • これにより、PythonだけでGPU上で直接、アルゴリズム中心の高速演算を実行できるようになった
  • CUDAアーキテクトのStephen Jones氏は、「Python CUDAは単にCコードをPython構文に移したものではなく、
    Python開発者にとって自然な形で新たに設計されたものだ」と説明した

ネイティブPythonサポートが開く新たな可能性

  • 従来のCUDA利用者はC++やFortranを知っている必要があったが、今ではPythonだけでも高性能なGPU演算が可能
  • 2024年のGitHubオープンソース調査によると、PythonはJavaScriptを抜いて最も人気のある言語に浮上
  • CUDA利用者数は2020年の200万人から2023年には400万人へ増加した一方、
    Python開発者は数千万人規模であり、特にインドやブラジルなどの新興国の開発者にとって大きな追い風
  • これにより、グローバルGPUインフラの拡大にも好影響が期待される

Pythonic CUDAの構成

  • CUDAはライブラリ、SDK、コンパイラ、ランタイム、ツール、アルゴリズムなどで構成される
  • Python統合は単にカーネルを提供するだけでなく、スタック全体をPythonフレンドリーに構成
  • 中核となる方式は、JIT(Just-In-Time)コンパイルベースで、コンパイラ依存を最小化

主な構成要素

  • cuPyNumeric: NumPyと同じAPIを提供しつつ、GPUアクセラレーションをサポートするPythonライブラリ
  • CUDA Core: CUDAランタイムをPython流に再設計した実行フローベースのシステム
  • NVMath Python: ホスト/デバイスライブラリ呼び出しのための統合インターフェースを提供
  • 高性能C++ライブラリと直接連携できるPython APIを構成
  • パフォーマンス分析およびコード解析ツールも併せて提供

「既存の高性能C++コードと直接つながっているため、性能低下はほとんどない」 — Stephen Jones

新しいプログラミングモデル: CuTile

  • Python開発者向けに設計された高水準の配列中心モデル
  • 従来のCUDAがスレッドベースの細かな制御を要求していたのに対し、CuTileはタイル単位の抽象化によって簡潔で理解しやすい構造を提供
  • CuTileは配列をGPUタイル単位にマッピングすることで、デバッグや最適化を容易にしつつ、性能はそのまま維持
  • 今後はC++ CUDAにも拡張予定

「コンパイラはGPU構造をよりよく理解できるため、性能最適化も自動的にうまく行われる」

まとめ

  • CUDAのネイティブPython統合は、GPUプログラミングの参入障壁を大きく下げる変化
  • 従来のような複雑な言語知識がなくても、PythonだけでGPU上のAI/科学計算が可能になる
  • Python中心のAIエコシステム拡大とNVIDIA GPU活用に向けた新時代を開く決定的な転換点

3件のコメント

 
aer0700 2025-04-06

Cupy や pytorch のような既存の Cuda ラッパーより、さらに速いんでしょうか。Cupy や torch の利点は、numpy と API がほぼまったく同じなので、numpy で書いていたテストコードをあまり手間をかけずに移せたことでしたが、これはどうなのか使ってみないとですね。

 
GN⁺ 2025-04-05
Hacker Newsの意見
  • 自分はGPUプログラマではないが、自分のような人でも簡単に使えそうだ。GPUとCPUを使う簡単なデモを作ってみた。結果は以下のとおり

    • CPUで5000x5000サイズのランダム行列を100個生成
    • CPUで行列を加算
    • CPUの行列加算完了時間: 0.6541秒
    • CPUの結果行列サイズ: (5000, 5000)
    • GPUで5000x5000サイズのランダム行列を100個生成
    • GPUで行列を加算
    • GPUの行列加算完了時間: 0.1480秒
    • GPUの結果行列サイズ: (5000, 5000)
    • APIが本当にシンプルなので、さらに深く掘り下げる価値がある。CUDAプログラミングは、このような高水準のものがなければ大仕事に見える
  • なぜPythonがこうしたものの対象になるのか気になる。多くのプロジェクトがPythonサポートを追加しているのを見てきた。Pythonのコードベースは、他のものよりもさまざまなターゲット向けにコンパイルしやすいのだろうか

  • Pytorchがこれより前に大きな勢いを得ていてよかった。これで並列計算のための、真にプラットフォーム非依存な半標準が手に入った。NVIDIAに限定されない

    • NVIDIAバックエンドに関係するPytorchの部分は、今ではPythonで直接実装できる
    • 重要なのは、エンドユーザーや開発者にとってそれが重要ではない、あるいは重要であるべきではないということだ
    • この新しいプラットフォームは、Pythonを通じてGPU計算という概念全体をゲームのようなより多くのドメインへ広げられるかもしれない
    • Pythonを通じて、主にGPU上でRust製ゲームを動かすことを想像してみてほしい
  • CuTileは多くの点で、OpenAIのTritonの後継のように感じられる。タイル/ブロックレベルのプリミティブ機能やTileIRだけでなく、CuPyにおいて適切なSIMTプログラミングモデルも得られている。今年のGTCでも多くの人は注目していなかったようだ。とてもクールだ

    • それでもCPU関連の発表やトークはほとんどなかった。Grace CPUが発表されてからかなり経つが、NvidiaのCPUとGPUの両方でシームレスに動作する汎用的な抽象化が近いうちに見られるとは思えない
    • 並列アルゴリズムに日々取り組む人にとって、これは問題だ。NSightやCUDA-GDBでのデバッグは、依然として素のGDBほどではなく、まずCPU上でアルゴリズムを設計してからGPUへ移植するほうがずっと簡単だ
    • コンパイラ分野のあらゆるチームの中でも、ModularはLLMブームに完全に飲み込まれることなく、複数プラットフォームにまたがる抽象化と言語を積極的に構築している数少ないチームの一つだ。この環境ではますます価値が高まっている。もっと多くの人にMojoを試してみてほしい。おそらくそれが、私たちが日々直面しているCPUとGPUの間のギャップをついに埋めてくれるかもしれない
  • JAXとどう比較されるのかとても気になる

    • JAXでは、Nvidiaだけでなく他社ブランドのGPUでも動作するPythonコードを書ける(サポート状況はさまざまだが)。同様に、NumPy関数のドロップイン置き換えも備えている
    • これはNvidiaしかサポートしていない。だが、JAXにはできないことができるのか? 使いやすいのか? 固定サイズ配列指向が弱いのか? 1つのGPUブランドに自分を縛り付ける価値はあるのか?
  • これはすごい。AI分野でNVIDIAの代替としてAMD + ROCmを検討していた人は、もういなくなるだろう

    • 自分はGPU実行向けに実用的なコードを書けるほどC++を学べていないし、たぶん学ばないタイプの人間だ。だがPythonを通じてGPUへ直接パイプラインを持てる。驚きだ
    • 効率性への意味合いは非常に大きい。PyTorchのようなPythonライブラリだけでなく、NVIDIA GPU上で動くあらゆるものに対してだ
    • 効率改善が進むのを見るのはうれしい。OpenAIやGoogleが、すべてのGPUを動かすためにどれだけの原子力発電所が必要になるのかという話を私たちは絶えず耳にしている
  • Rustサポートが次だろうか? 現在、自分はデータ構造をカーネルとの間でバイト配列に手動で[デ]シリアライズしている。CUDAがC++で提供しているような、本当に共有されたデータ構造があるといいのだが

  • Pythonは本当にプログラミング言語のリングワ・フランカとして定着しつつある。FOSSルネサンスの中で採用が急増しており、私たちが持つ中で最も近い万能ツールだと思う

    • PEPモデルは自己改善と標準化のための良い仕組みだ。uvやBeeWareのようなプロジェクトのおかげで、パッケージングと配布はまもなく解決される問題だ。性能改善も毎年続くと確信している
  • これはおそらく、より多くのものをより速く試し、その後より高速な言語に残すという、Pythonがこれまで一般に牽引してきた流れをさらに後押しするだろう。全体として素晴らしい動きだ。ぜひこれで遊んでみたい

  • CUDAはCとC++で生まれた。C++を拡張してCUDA Cと呼ぶ代わりに、実際にCUDAのC方言を実装してくれていたらよかったのに

 
iwi19 2025-04-06

最初の速度は本当ですか? あまりにも遅いのですが…