第28話で「ゲームがGPUの並列処理を育てた」と知った人が、CUDAによって何が変わったのかを理解する記事です。コードを書いた経験がなくても読めます。
CUDA(クーダ)は、NVIDIAが開発した並列コンピューティングのプラットフォームとプログラミングモデルです。GPUの計算能力を、画面描画だけでなく科学計算やデータ処理などへ使いやすくしました。CUDAはGPUそのものでも、AI専用の言語でもありません。
先に結論

CUDAで何が変わった?
GPUは、3Dグラフィックスの大量計算によって発達しました。しかし、計算能力が高いことと、研究者や開発者が自由な計算へ使いやすいことは別です。初期のGPUで画像以外の処理を行うには、計算を描画処理に見せるなど、グラフィックス固有の知識が必要でした。
NVIDIAは2006年にCUDAを発表しました。公式のCUDA Programming GuideはCUDAを「汎用並列コンピューティングのプラットフォームとプログラミングモデル」と説明しています。開発者は、CPU側で全体を進めながら、並列化しやすい計算をGPUへ渡せるようになりました。
CUDAが開いたのは、「画像を描くGPU」から「プログラムで計算へ使えるGPU」への入口です。
CPUとGPUはどう協力する?
CUDAのプログラムは、GPUだけで完結するとは限りません。公式ガイドでは、CPUとCPU側のメモリをホスト、GPUとGPU側のメモリをデバイスと呼びます。アプリはCPUから始まり、必要なデータをGPUへ渡し、GPUで動く処理を起動し、結果を受け取ります。

ここが誤解されやすい点
CUDAがCPUを不要にするわけではありません。実際の速さは、計算の分け方、CPUとGPUの間で運ぶデータ量、GPUメモリへのアクセスなどを含むシステム全体で決まります。
大量の仕事を「グリッド・ブロック・スレッド」へ分ける
CUDAでは、GPUで実行する関数をカーネルと呼びます。カーネルを起動すると、多数のスレッドが同じ処理の流れを並列に実行します。スレッドはブロックにまとめられ、ブロックはさらにグリッドとして並びます。

この階層は、GPU内部の部品名を覚えるためだけのものではありません。「大きな仕事を、互いに依存しすぎない小さな仕事へ分ける」という並列計算の設計を、プログラムから表すための仕組みです。
CUDAは「言語ひとつ」ではなく、道具のまとまり
CUDAは「CUDAというAI専用言語」ではありません。CUDA C++のような言語拡張だけでなく、GPUへ仕事を渡すランタイム、コンパイラ、数値計算ライブラリ、デバッグ・性能分析ツールなどを含む基盤です。公式ドキュメントでも、C++以外の言語やAPIから利用できることが説明されています。

| 名称 | 役割 | 誤解しないための一言 |
|---|---|---|
| GPU | 多数の処理を並列に実行するハードウェア | CUDAと同じものではない |
| CUDA | NVIDIA GPUを計算へ使うプラットフォームとプログラミングモデル | AIだけの仕組みではない |
| CUDA Toolkit | コンパイラ、ライブラリ、開発・分析ツールなどの集合 | GPUを購入しただけで自動的に処理が速くなるわけではない |
| Tensor Core | 行列の積和演算を効率よく進めるGPU内の演算器 | CUDAとは役割が違う。次回のテーマ |
なぜAIへつながったのか
AIの学習や推論では、行列を使った計算を大量に繰り返します。こうした処理には、GPUの並列計算を生かしやすい部分があります。CUDAとそのライブラリが整ったことで、研究者やフレームワーク開発者はGPUを計算基盤として利用しやすくなりました。
ただし、CUDAだけで現在のAIが生まれたわけではありません。アルゴリズム、データ、研究成果、GPUハードウェア、メモリ、ネットワーク、ライブラリが積み重なって現在のAI基盤になっています。普段PyTorchなどを使う人は、CUDAを直接書かなくても、その下でCUDA対応ライブラリの恩恵を受けることがあります。
CUDAなら何でも速くなる?
また、CUDAはNVIDIAのプラットフォームです。ほかのメーカーのGPUやアクセラレータには、別のプログラミング環境があります。用途、既存ソフトウェア、性能、電力、費用を含めて選ぶ必要があります。
CUDAを支える仕事
CUDAに関わる仕事は、カーネルを書く開発者だけではありません。GPUの回路設計、コンパイラやライブラリ開発、性能分析、データセンター運用、冷却、先端パッケージ、HBM、品質・検査まで多くの役割がつながります。
自分に近い仕事の入口を探す
ソフトウェア、設計、製造、装置、品質など、どの方向から学ぶか迷う方は、匿名・回答非保存の半導体10問仕事ナビ βで候補を整理できます。診断結果は仕事の適性を断定するものではなく、次に読むテーマを選ぶための目安です。
CUDAについてよくある質問
CUDAはプログラミング言語ですか?
CUDAは言語ひとつの名前ではなく、並列コンピューティングのプラットフォームとプログラミングモデルです。CUDA C++のほか、ライブラリやAPIを通じて複数の言語・開発環境から利用できます。
CUDAはAI専用ですか?
いいえ。科学技術計算、シミュレーション、画像処理、データ分析など幅広い計算に使われます。AIはCUDAが利用される重要な分野の一つです。
CUDAを使うにはNVIDIAのGPUが必要ですか?
CUDAコードをGPUで実行するには、対応するNVIDIA GPUとドライバなどの環境が必要です。別メーカーのGPUには別の開発基盤があります。
Tensor CoreとCUDA Coreは同じですか?
同じではありません。Tensor Coreは行列の積和演算を効率よく行う演算器です。CUDAは、それらを含むNVIDIA GPUの計算機能をソフトウェアから利用するための基盤です。Tensor Coreの仕組みは次回、行列計算との関係から説明します。
まとめ
- CUDAはGPUではなく、NVIDIAの並列コンピューティング基盤
- CPUとGPUを協力させ、計算を多数のスレッドへ分けて実行しやすくした
- 共通のプログラミングモデル、ライブラリ、ツールがGPUの用途を研究やAIへ広げた
- 次の進化を理解する鍵は、行列計算を効率化するTensor Core
参考資料
- NVIDIA CUDA Programming Guide: Programming Model
- NVIDIA CUDA C Programming Guide 12.5: Introduction and history
- NVIDIA CUDA Toolkit Documentation
- NVIDIA Technical Blog: Programming Tensor Cores in CUDA 9

