CUDAとは?読み方・仕組み・CUDAコア・バージョン13までNVIDIAのGPU並列計算を解説
CUDA(読み方は「クーダ」、Compute Unified Device Architecture)は、NVIDIAが2006年に発表したGPU向けの並列計算プラットフォームです。GPUに載った数千個のコアへ計算を割り振り、CPUだけでは何日もかかる処理を数時間に短縮します。生成AIの学習・推論、科学技術計算、動画編集などが主な用途で、最新のGPUサーバーやAI開発機(DGX Sparkとは?スペックと実測性能・OEM互換機との違い)もこのCUDAを前提に設計されています。この記事では、読み方や仕組みといった基礎から、CUDAコアとTensorコアの違い、バージョン13でのGPU対応、AMDでの可否、プログラミングの始め方までを2026年時点の最新情報で整理します。
まとめ:CUDAの要点(先に結論)
- CUDA=NVIDIA専用のGPU並列計算プラットフォーム。読み方は「クーダ」。C/C++をベースに書け、Toolkit自体は無償で使える。
- コアは役割で分かれる:汎用計算のCUDAコア、AI向け行列演算のTensorコア、レイトレーシングのRTコア。AIの高速化はTensorコアが担う。
- 最新はCUDA Toolkit 13.3(2026年5月)。13.0以降はTuring(Compute Capability 7.5)より前の世代(Maxwell/Pascal/Volta)を切り捨てたため、古いGPUでは12系を使う。
- AMD GPUでCUDAは動かない。代替はAMDのROCm/HIP。移植性を上げる仕組みはあるが、CUDA資産をそのままは使えない。
- PyTorchやTensorFlowを使うだけならCUDAコードを自分で書く必要はない。フレームワークが内部でCUDA/cuDNNを呼ぶ。自作カーネルで高速化したい人だけが直接触る。
CUDAとは何か——NVIDIAのGPU並列計算プラットフォーム
CUDAは、グラフィックス描画用に作られたGPUを「汎用の計算機」として使うための仕組みです。GPUは1個あたりの性能はCPUコアに劣りますが、数千個が同時に動くため、同じ計算を大量のデータへ一斉に適用する処理(行列演算やシミュレーション)で圧倒的に速くなります。NVIDIAは2006年にCUDA対応GPU「GeForce 8800 GTX」を発表し、翌2007年に開発キット(SDK)を一般公開しました。以降のNVIDIA製GPUはすべてCUDAに対応しています。
「CUDAで何ができるのか」を具体的に言えば、AIモデルの学習と推論、気象・分子動力学などの科学シミュレーション、医用画像処理、動画のエンコード、金融のリスク計算などです。これらはいずれも「同じ演算を膨大な回数繰り返す」タイプの処理で、GPU並列化が効く領域と一致します。AI・機械学習・深層学習の関係を整理したい場合はAI・ML・DLの違いとは?機械学習と深層学習の関係もあわせて確認してください。
CUDAの仕組み——スレッド・ブロック・グリッドとSM
CUDAの並列計算は、計算を細かい単位に分けてGPU上の多数の演算器へ配る、という発想で動きます。理解の要は「実行の階層」と「メモリの階層」の2つです。
スレッド・ブロック・グリッドの階層
計算の最小単位がスレッドで、1つのスレッドが1要素分の計算を担当します。スレッドを束ねたものがブロック、ブロックを束ねたものがグリッドです。開発者はカーネル(GPUで動く関数)を呼ぶときに「ブロック数」と「1ブロックあたりのスレッド数」を指定し、どれだけ並列に走らせるかを決めます。1ブロックあたりのスレッド数はWarp幅の32の倍数(実用上は128〜256)に揃えると演算器を無駄なく使えます。
SM(Streaming Multiprocessor)とWarp
GPU内部では、複数のCUDAコアをまとめたSM(Streaming Multiprocessor)が実際のスケジューリングを担います。SMはスレッドを32個単位のWarp(ワープ)にまとめ、Warp内の32スレッドは同じ命令を同時に実行します。ここで条件分岐が分かれると、片方の経路のスレッドが待たされて性能が落ちるため(分岐発散)、Warpがなるべく同じ経路を通るように書くのが高速化の基本です。「sm cuda」「cuda sm」で調べられるのはこの構造のことです。
メモリ階層(グローバル・シェアード・レジスタ)
速度と共有範囲の違うメモリを使い分けます。全スレッドから見える大容量のグローバルメモリは低速、SM内のスレッドで共有するシェアードメモリは高速、各スレッド専用のレジスタが最速です。頻繁に触るデータをシェアードメモリへ置き、グローバルメモリへのアクセス回数を減らすことが、実測でいちばん効く最適化になります。
CUDAコア・Tensorコア・RTコアの違い
NVIDIAのGPUには役割の異なる3種類の演算器が載っています。「cudaコア」と「tensor core」を混同しやすいので、用途で分けて押さえます。
| コア | 役割 | 得意な演算 | 主な用途 |
|---|---|---|---|
| CUDAコア | 汎用の並列計算 | 単精度/倍精度のスカラー演算 | 科学計算・物理演算・一般的な並列処理 |
| Tensorコア | AI向けの専用演算 | 行列の積和(MMA、FP16/INT8等) | ディープラーニングの学習・推論 |
| RTコア | レイトレーシング専用 | 光線と物体の交差判定 | リアルタイムの3Dレンダリング |
CUDAコアは何にでも使える汎用の演算器で、数の多さがそのまま並列性能につながります。TensorコアはVolta世代(2017年)から搭載された専用回路で、4×4といった小さな行列の積和を1度にまとめて処理します。AIの計算はほぼ行列演算なので、AI用途では少数のTensorコアが多数のCUDAコアを上回る速度を出します。RTコアはゲームや映像のレイトレーシング専用で、AI計算には使いません。つまり「AIを速くしているのは主にTensorコア、汎用計算はCUDAコア」と整理できます。
CUDAのバージョンとGPU対応——Toolkit 13とCompute Capability【2026年7月】
CUDAは「どのGPU世代まで動くか」がバージョンで変わるため、導入前に対応関係を確認しておく価値があります。2026年7月時点の最新はCUDA Toolkit 13.3(2026年5月リリース)です。
節目は2025年8月のCUDA Toolkit 13.0でした。ここでTuring(Compute Capability 7.5)より前の世代——Maxwell・Pascal・Volta——のオフラインコンパイル対応が削除されています。これらの古いGPUを使う環境では、13系ではなくCUDA 12系を使い続けるのが安全です。あわせて13.0では、従来のSIMTモデルに加えたタイルベースのプログラミングの基盤や、サーバー用と組み込み用のArmプラットフォーム統一が導入されました。
Compute Capabilityは、GPUが対応する機能レベルを示す番号です。手持ちのGPUがどの番号かで、使えるCUDAバージョンや機能が決まります。主な対応は次のとおりです。
| アーキテクチャ | Compute Capability | 代表的なGPU | CUDA 13対応 |
|---|---|---|---|
| Maxwell/Pascal/Volta | 5.x/6.x/7.0 | GTX 900/10シリーズ、V100 | 非対応(12系まで) |
| Turing | 7.5 | RTX 20シリーズ、T4 | 対応(下限) |
| Ampere | 8.0/8.6 | A100、RTX 30シリーズ | 対応 |
| Ada Lovelace | 8.9 | RTX 40シリーズ、L4 | 対応 |
| Hopper | 9.0 | H100/H200 | 対応 |
| Blackwell(データセンター) | 10.0 | B200、GB200 | 対応 |
| Blackwell(コンシューマ) | 12.0 | RTX 50シリーズ | 対応 |
数値やリリース状況は更新が速いため、実際に使う前にNVIDIA公式のリリースノートで最新を確認してください。自前でGPUサーバーを持たずクラウドで最新世代を借りる選択肢もあり、その形態はGPU特化で従来型と一線を画すネオクラウドの定義と3つの技術的優位性で整理しています。
CUDAプログラミングの基礎——カーネルと実行構成
CUDAプログラムは、CPU(ホスト)が全体を制御し、GPU(デバイス)が並列計算を担う分業で書きます。GPUで実行する関数をカーネルと呼び、__global__を付けて定義します。カーネルの中では、スレッド固有の番号から自分が担当するデータの位置を計算します。
__global__ void add(int *a, int *b, int *c, int N) {
int i = threadIdx.x + blockIdx.x * blockDim.x;
if (i < N) c[i] = a[i] + b[i];
}
呼び出し側では、<<<ブロック数, スレッド数>>>という専用の構文で並列度を指定します。データはCPUとGPUの間でコピーが必要で、この転送がボトルネックになりやすいため、転送回数を減らすのが定石です。
int threads = 256;
int blocks = (N + threads - 1) / threads;
cudaMemcpy(a, a_host, size, cudaMemcpyHostToDevice);
cudaMemcpy(b, b_host, size, cudaMemcpyHostToDevice);
add<<<blocks, threads>>>(a, b, c, N);
cudaMemcpy(c_host, c, size, cudaMemcpyDeviceToHost);
ここで重要な実務上の注意があります。PyTorchやTensorFlowでAIを動かすだけなら、こうしたカーネルを自分で書く必要はありません。フレームワークが内部でCUDAと最適化済みライブラリ(cuDNNなど)を呼び出すためです。CUDAを直接書くのは、既存フレームワークでは足りない独自処理を最速化したいエンジニアに限られます。まず動かすなら、対応バージョンのCUDA Toolkitを入れてPyTorch等から使うのが近道です。
CUDAとCPU・AMD・Vulkanの違い
「cuda cpu」「amd cuda」「vulkan cuda 違い」といった比較クエリは、CUDAの立ち位置を確かめたい人の疑問です。それぞれ性質が違います。
CUDAとCPUの違い
CPUは数個〜数十個のコアで、分岐や順序処理を含む複雑なタスクを速く片づけるのが得意です。GPUは数千コアで、同じ演算を大量データへ一斉適用するのが得意です。CUDAはこのGPUの並列性を引き出す層であり、CPUを置き換えるものではありません。実際のプログラムでも、制御はCPU、重い並列計算はGPU、という役割分担で使います。
AMD GPUでCUDAは動くか(ROCm/HIP)
CUDAはNVIDIA専用で、AMDのGPUでは動きません。AMD側の対応技術がROCm(2016年に登場したオープンな計算プラットフォーム)と、その上で使うC++向けのAPIHIPです。HIPはCUDAに近い書き方ができ、CUDAコードをHIPへ変換する移植ツールもありますが、cuDNNなどNVIDIA独自ライブラリに依存した資産はそのまま持ち込めません。「NVIDIAでもAMDでも動くコードを書きたい」なら最初からHIPやOpenCLを選ぶ、という判断になります。
VulkanやOpenCLとの違い
VulkanはグラフィックスとGPU計算を扱うクロスプラットフォームAPIで、複数ベンダーのGPUで動きます。OpenCLも同様にベンダー横断の汎用計算APIです。これらが「移植性」を重視するのに対し、CUDAは「NVIDIAに特化する代わりに、ライブラリと最適化の充実で開発しやすい」路線です。AI分野でCUDAが事実上の標準になっているのは、cuDNNをはじめとするエコシステムの厚みが理由です。
CUDA-Xライブラリと開発環境
CUDAの強みは言語仕様よりも、周辺のライブラリとツールにあります。数学・AI向けの最適化済みライブラリ群はCUDA-Xと総称され、代表例が行列計算のcuBLAS、ディープラーニングのcuDNN、高速フーリエ変換のcuFFTです。これらを呼ぶだけで、自分でカーネルを書かずに高速な計算が得られます。
開発にはCUDA Toolkitを入れます。コンパイラのnvcc、ランタイム、上記ライブラリ、サンプルが含まれ、Windows/Linuxに対応します(近年のToolkitはmacOSでの新規開発対象外)。性能の詰めには、カーネル単位で解析するNsight Compute、ホストとGPUの連携を俯瞰するNsight Systemsといったプロファイラを使い、ボトルネックを実測してから直すのが定石です。
よくある質問(FAQ)
CUDAの読み方は?
「クーダ」と読みます。Compute Unified Device Architecture(計算統合デバイスアーキテクチャ)の略です。
CUDAは無料で使えますか?
CUDA Toolkit自体はNVIDIAから無償で提供されています。ただし動かすにはCUDA対応のNVIDIA製GPUが必要です。
AMDやIntelのGPUでCUDAは使えますか?
使えません。CUDAはNVIDIA専用です。AMDはROCm/HIP、汎用にはOpenCLやVulkanが代替になります。
自分のGPUが最新CUDAに対応しているか、どう調べますか?
GPUのCompute Capabilityを確認します。7.5(Turing)以上ならCUDA 13系に対応し、それより前のMaxwell/Pascal/Volta世代はCUDA 12系までです。番号はNVIDIA公式の対応表で確認できます。
PyTorchを使うだけでもCUDAを学ぶ必要がありますか?
基本的に不要です。PyTorchやTensorFlowが内部でCUDAを呼ぶため、対応バージョンのToolkitを入れれば足ります。CUDAプログラミングは、独自処理を自前で高速化したい場合に学べば十分です。あわせて、cuda-oxideのDisjointSliceについても解説しています。