CUDA C/C++とは
CUDA C/C++は、NVIDIA GPU計算に分類されるプログラミング言語・DSL・記法です。利用場面の広さは「高」相当の項目として整理しています。このページでは、用途の見当をつけるための入口として分類と関連情報をまとめています。
| 項目 | 内容 |
|---|---|
| 名称 | CUDA C/C++ |
| 分類 | NVIDIA GPU計算 |
| カテゴリ | システム・低レイヤー |
| 主な用途 | NVIDIA GPU計算 / システム・低レイヤー |
| 状態 | 参考情報少なめ |
読むポイント
Section titled “読むポイント”- どの製品、仕様、ツール、教材の文脈で登場する名前かを見る
- 現在使うものか、古いコードや資料を読むためのものかを切り分ける
- 公式サイト、仕様書、実装例、パッケージ情報がある場合はそこから読み始める
公式・参照情報
Section titled “公式・参照情報”- 公式URL: 現行の公式サイトは確認できていません
- 参照: 一次資料候補(確認待ち)
追加調査で押さえる実務ポイント
CUDA C/C++は、NVIDIA GPU上で並列kernelを実行するためにC/C++へlanguage extension、runtime API、compiler toolchainを加えたprogramming modelです。CUDAは「クーダ」と読むのが一般的です。CPU側のhost codeとGPU側のdevice codeを分け、grid、block、thread、memory hierarchyを明示します。2026年8月2日時点の現行documentationはCUDA 13.3世代です。
基本情報
| 項目 | 内容 |
|---|---|
| platform | NVIDIA CUDA |
| language | C/C++ extensions |
| compiler | nvcc / supported host compiler |
| runtime | CUDA Runtime / Driver API |
| execution | host + device |
| target | NVIDIA GPU |
| source | .cu |
| current docs | CUDA 13.3 |
最小例
__global__ void add(const float* a, const float* b, float* c) {
int i = blockIdx.x * blockDim.x + threadIdx.x;
c[i] = a[i] + b[i];
}
add<<<grid, block>>>(a, b, c);
cudaDeviceSynchronize();
配列長を超えないboundary checkが必要です。
実行モデル
- host memoryを準備。
- device memoryを確保。
- data transfer。
- kernel launch。
- threadが並列実行。
- synchronize。
- result transfer。
- error確認。
Memory
| Memory | 特徴 |
|---|---|
| global | 大容量・高latency |
| shared | block内共有 |
| register | thread local |
| constant | read-only cache |
| local | thread privateだがglobal memory上の場合あり |
| unified | managed memory |
性能判断
- arithmetic intensity
- memory coalescing
- occupancy
- transfer cost
- branch divergence
- shared memory bank
- kernel launch overhead
- precision
CUDAを使う条件
- massively parallel workload
- NVIDIA GPU
- supported driver/toolkit
- data transferを上回る計算量
- profiling環境
慎重になる条件
- small sequential task
- vendor-neutral requirement
- irregular branch-heavy code
- tiny data
- deployment先GPU不明
次に読む
参考リンク
- developer.nvidia.com - CUDA
- docs.nvidia.com - Programming Guide
- docs.nvidia.com - Best Practices
- github.com - samples
CUDA C/C++とは の分類軸
このページ自身のcanonical taxonomyに記録された値を、対象を読み分けるための補助線として示します。
| 分類項目 | この対象の登録値 |
|---|---|
category | システム・低レイヤー |
primary_uses | nvidia gpu計算、システム・低レイヤー |
この分類値はcanonical databaseの対象固有スナップショットです。現在の実装仕様、互換性、安全性、可用性、成果を保証するものではありません。