Python 3.13 だと PyCUDA がインストールできなかった話¶
PyCUDA とは¶
PyCUDA は、Python から Nvidia の CUDA 並列計算 API にアクセスするためのライブラリ。既存の CUDA API ラッパーと比較して、PyCUDA はいくつかの優れた特徴を持っている。
主な特徴は次の通り。
- 自動的なオブジェクトクリーンアップ (RAII): C++の RAII(Resource Acquisition Is Initialization)と同様の仕組みにより、メモリリークやクラッシュのない、より安全なコード記述を容易にする。PyCUDA はオブジェクト間の依存関係も認識するため、コンテキストから切り離される前に、そのコンテキスト内で割り当てられた全てのメモリが解放される。
- 簡便性:
pycuda.driver.SourceModule
やpycuda.gpuarray.GPUArray
といった抽象化により、Nvidia の C ベースランタイムよりもさらに便利な CUDA プログラミングを実現。 - 完全性: 必要に応じて、CUDA ドライバ API の全機能を利用できる。OpenGL との相互運用機能も備えている。
- 自動エラーチェック: 全ての CUDA エラーが Python 例外として自動的に変換されるため、エラーの検出が容易。
- 高速性: C++で記述された基盤層により、上記の特徴がほとんどオーバーヘッドなしで実現される。
要約すると、PyCUDA は安全で、使いやすく、高速で完全な CUDA アクセスを提供する Python ライブラリと言える。
PyCUDA のインストール¶
この記事を執筆している 2024/12/19 時点で、Python の安定版リリースの最新は 3.13 である。3.13 の環境で PyCUDA をインストールを試みると、エラーが発生した。関連の issue(1, 2)が報告されており、修正パッチが 10 月に取り込まれているがまだリリースされていない。次のリリースを待たずに PyCUDA を利用するのであれば、Python のバージョンを 3.12 以下にしてインストールを行う必要がある。
uv を使ってインストールには次のコマンドを実行する。
インストール後に問題なく実行できるか確認したい場合は、レポジトリ内にサンプルコードがあるのでそれを利用すると良い。