ZeroLoom

CUDA Toolkit の役割と目的について

October 9, 2024
2 min read
Table of Contents

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 を提供し、並列プログラミングを容易にする