コンテンツにスキップ
PR

CUDA C/C++とは

CUDA C/C++は、NVIDIA GPU計算に分類されるプログラミング言語・DSL・記法です。利用場面の広さは「高」相当の項目として整理しています。このページでは、用途の見当をつけるための入口として分類と関連情報をまとめています。

項目内容
名称CUDA C/C++
分類NVIDIA GPU計算
カテゴリシステム・低レイヤー
主な用途NVIDIA GPU計算 / システム・低レイヤー
状態参考情報少なめ
  • どの製品、仕様、ツール、教材の文脈で登場する名前かを見る
  • 現在使うものか、古いコードや資料を読むためのものかを切り分ける
  • 公式サイト、仕様書、実装例、パッケージ情報がある場合はそこから読み始める

最終更新日:

追加調査で押さえる実務ポイント

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世代です。

基本情報

項目内容
platformNVIDIA CUDA
languageC/C++ extensions
compilernvcc / supported host compiler
runtimeCUDA Runtime / Driver API
executionhost + device
targetNVIDIA GPU
source.cu
current docsCUDA 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が必要です。

実行モデル

  1. host memoryを準備。
  2. device memoryを確保。
  3. data transfer。
  4. kernel launch。
  5. threadが並列実行。
  6. synchronize。
  7. result transfer。
  8. error確認。

Memory

Memory特徴
global大容量・高latency
sharedblock内共有
registerthread local
constantread-only cache
localthread privateだがglobal memory上の場合あり
unifiedmanaged 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不明

次に読む

参考リンク

CUDA C/C++とは の分類軸

このページ自身のcanonical taxonomyに記録された値を、対象を読み分けるための補助線として示します。

分類項目この対象の登録値
categoryシステム・低レイヤー
primary_usesnvidia gpu計算、システム・低レイヤー

この分類値はcanonical databaseの対象固有スナップショットです。現在の実装仕様、互換性、安全性、可用性、成果を保証するものではありません。