【クーダ】

CUDA とは?

最終更新:
💡 CPUが段取りし、GPUに計算を分担してもらう仕組み

NVIDIAのGPUで汎用の計算を行うためのプラットフォームとプログラミングモデル。多数の計算を並列に進められる処理で、AIや科学計算などに使われる。

📌 このページのポイント
CUDA:CPUとGPUが分担して計算CPU段取りを進める処理・転送を指示NVIDIAのGPU多数の計算を並列に進めるCUDA結果並列に向く処理で活躍。速さは条件による
CPUがGPUへ処理を依頼するイメージ。小さな四角は並列計算の表現で、実際のコア数を示していません。
ひよこ ひよこ
CUDAってGPUそのものの名前?
ペンギン先生 ペンギン先生
GPUは計算する機械で、CUDAはNVIDIAのGPUを計算に使うための仕組みだよ。プログラムの書き方や実行環境、関連する道具を含むので、一つの言語だけを指す名前ではないんだ。
ひよこ ひよこ
CPUとGPUは、どう協力するの?
ペンギン先生 ペンギン先生
CPU側のプログラムが計算やデータ転送を指示し、GPUではカーネルと呼ばれる処理を多数のスレッドで進めるよ。CPUが段取りをして、GPUが分担して計算するイメージだね。
ひよこ ひよこ
使えば何でも速くなるの?
ペンギン先生 ペンギン先生
そうとは限らないよ。多数の計算を並列に進められる仕事で力を発揮するけれど、順番に進める必要のある処理や、小さな処理では効果が出にくいこともあるんだ。CPUとGPUの間でデータを移す時間も含めて比べよう。
ひよこ ひよこ
AIの開発で見かけるのはなぜ?
ペンギン先生 ペンギン先生
AIの計算には並列に進められる仕事が多いからだよ。CUDA向けの計算ライブラリや、それを利用するフレームワークが用意されているんだ。自分でGPU用の処理を一から書かずに利用できる場合もあるね。
ひよこ ひよこ
GPUがあるのに使えないときは?
ペンギン先生 ペンギン先生
まずCUDAに対応するNVIDIAのGPUかを確かめ、ドライバと使うソフトウェアの対応条件を調べよう。バージョンの数字を全部同じにすればよいわけではないよ。同じCUDAのメジャー系列内で互換性を持つ場合もあるけれど、必要なドライバや機能の条件があるんだ。
もっと詳しく知りたい人へ

PyTorchのempty_cache()でGPUのメモリ不足は必ず直る?

必ずは直らないよ。empty_cache()は、キャッシュされている未使用のメモリを解放する関数で、使用中のテンソルを消すものではないんだ。PyTorch自身が使えるメモリの量を増やす処理でもないよ。断片化を軽減する場合はあるけれど、必要な計算やデータの量に応じてメモリの使い方を見直す必要があるね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「CUDA」って出てきたら「NVIDIAのGPUに計算を任せるための仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Compute Unified Device Architecture」 = 統合デバイスアーキテクチャによる計算
💬 この名前の頭文字を取ったものだよ。NVIDIAが2006年に導入し、GPUをグラフィックス以外の計算に使う仕組みとして発展してきたんだ

参考資料

← 用語集にもどる