CUDA Toolkit には、GPU コンピューティングの開発を支援するためのさまざまなツール、ライブラリ、API、およびサンプルが含まれています。
以下は、CUDA Toolkitに含まれる主なコンポーネントの一覧です。
CUDA コンパイラとツール
NVCC(CUDA コンパイラ)
- CUDA C/C++ コードをコンパイルするためのコンパイラ
- CPUコード と GPU コードを同時に処理し、実行可能なバイナリを生成する
CUDA-GDB
- CUDA アプリケーションをデバッグするためのデバッガで、GDBを拡張したもの
CUDA-MEMCHECK
- CUDA アプリケーションでのメモリエラーの検出と診断を行うツール
NVIDIA Visual Profiler(nvprof)
- CUDA アプリケーションのパフォーマンスプロファイリングツール(後述の Nsight Compute に移行)
Nsight Compute
- CUDA カーネルの詳細なプロファイリングと解析を行うツール
- nvprof の後継ツールとして使用されている
Nsight Systems
- CUDA アプリケーション全体のパフォーマンスをプロファイルするためのツール
- システムレベルのプロファイリングも可能
CUDA ランタイムライブラリ
CUDA Runtime API
- GPU プログラミングに必要なランタイム API のセット
- メモリ管理、ストリーム操作、カーネル実行などの基本的な機能を提供する
CUDA Driver API
- ランタイム API より低レベルの API で、デバイス管理やメモリ操作、カーネルの実行制御などを細かく設定することができる
数学ライブラリ
cuBLAS
- BLAS(Basic Linear Algebra Subprograms)を実装したライブラリで、行列演算などの高速計算をサポート
cuFFT
- 高速フーリエ変換をサポートするライブラリ
- 1D、2D、3D の FFT を GPU で効率的に計算することができる
cuRAND
- 乱数生成のためのライブラリで、さまざまな確率分布に対応
cuSPARSE
- 疎行列操作をサポートするライブラリで、行列計算における性能を最適化
cuSOLVER
- 線形方程式や特異値分解などの数学的計算を支援するライブラリ
cuDNN
- ディープニューラルネットワークのためのライブラリ
- 特にディープラーニングのアプリケーションでよく使用される
NPP(NVIDIA Performance Primitives)
- 画像およびビデオ処理を最適化するためのライブラリ
- まざまな画像処理アルゴリズムが含まれている
グラフィックス相互運用ライブラリ
CUDA-GL, CUDA-D3D
- CUDA と OpenGL または Direct3D の間でデータを効率的に共有するための相互運用ライブラリ
サンプルコード
- CUDA Toolkit には、さまざまなサンプルコードが含まれている
- 基本的な CUDA プログラミングの実装方法やツールの使い方を学べる
CUDA Math API
- GPU 上での数学計算のために最適化された数学関数群を提供する API
統合開発環境(IDE)用プラグイン
- NVIDIA Nsight Eclipse Edition(Linux向け)や Nsight Visual Studio Edition(Windows 向け)など、統合開発環境(IDE)に対応したプラグインが含まれている
その他のツール
NVIDIA Systems Management Interface(nvidia-smi)
- GPU の状況を確認し、管理するためのコマンドラインツール
- GPU の使用率、温度、メモリ使用量などの情報を取得できる
Thrust
- C++ テンプレートライブラリで、STL ライクな高レベルの API を提供し、並列プログラミングを容易にする