コース概要

紹介

  • CUDAとは何か?
  • CUDA vs OpenCL vs SYCL
  • CUDAの機能とアーキテクチャの概要
  • 開発環境の設定

開始方法

  • Visual Studio Codeを使用して新しいCUDAプロジェクトを作成する。
  • プロジェクト構造とファイルを探索する。
  • プログラムのコンパイルと実行。
  • printfとfprintfを使用して出力を表示する。

CUDA API

  • CUDA APIがホストプログラムで果たす役割の理解。
  • CUDA APIを使用してデバイス情報と機能を照会する。
  • CUDA APIを使用してデバイスマネージャの割り当てと解放を行う。
  • CUDA APIを使用してホストとデバイス間でデータをコピーする。
  • CUDA APIを使用してカーネルを起動し、スレッドを同期する。
  • CUDA APIを使用してエラーと例外を処理する。

CUDA C/C++

  • CUDA C/C++がデバイスプログラムで果たす役割の理解。
  • CUDA C/C++を使用してGPU上で実行され、データを操作するカーネルを記述する。
  • CUDA C/C++データ型、修飾子、演算子、および式の使用。
  • math、atomic、warpなどのCUDA C/C++組み込み関数の使用。
  • threadIdx、blockIdx、blockDimなどのCUDA C/C++組み込み変数の使用。
  • cuBLAS、cuFFT、cuRANDなどのCUDA C/C++ライブラリの使用。

CUDAメモリモデル

  • ホストとデバイスのメモリモデルの違いを理解する。
  • グローバル、共有、定数、およびローカルなどのCUDAメモリスペースを使用する。
  • ポインタ、配列、テクスチャ、サルフェースなどのCUDAメモリオブジェクトを使用する。
  • 読み取り専用、書き込み専用、読み書き両方などのCUDAメモリアクセスマードを使用する。
  • CUDAのメモリ一貫性モデルと同期機構の使用。

CUDA実行モデル

  • ホストとデバイスの実行モデルの違いを理解する。
  • CUDAスレッド、ブロック、グリッドを使用して並列性を定義する。
  • threadIdx、blockIdx、blockDimなどのCUDAスレッド関数の使用。
  • __syncthreads、__threadfence_blockなどのCUDAブロック関数の使用。
  • gridDim、gridSync、協調グループなど、CUDAグリッド関数の使用。

デバッグ

  • CUDAプログラムで一般的なエラーとバグを理解する。
  • 変数、ブレークポイント、コールスタックなどを検査するためにVisual Studio Codeデバッガを使用する。
  • CUDA-GDBを使用してLinux上のCUDAプログラムをデバッグする。
  • CUDA-MEMCHECKを使用してメモリエラーとリークを検出する。
  • NVIDIA Nsightを使用してWindows上のCUDAプログラムをデバッグおよび分析する。

最適化

  • CUDAプログラムのパフォーマンスに影響を与える要因を理解する。
  • メモリスループットを向上させるためのCUDAコールエシング技術の使用。
  • メモリレイテンシを低下させるためのCUDAキャッシュとプリフェッチ技術の使用。
  • CUDA共有メモリとローカルメモリ技術を使用してメモリアクセスと帯域幅を最適化する。
  • CUDAプロファイリングとプロファイリングツールを使用して実行時間とリソース利用量を測定し、改善する。

まとめと次回のステップ

要求

  • C/C++言語と並列プログラミング概念に関する理解。
  • コンピュータアーキテクチャとメモリ階層の基本的な知識。
  • コマンドラインツールとコードエディタの使用経験。

対象者

  • CUDAを使用してNVIDIA GPUをプログラミングし、その並列性を活用したい開発者。
  • 異なるCUDAデバイスで実行できる高性能で拡張可能なコードを記述したい開発者。
  • GPUプログラミングの低レベル側面を探索し、コードのパフォーマンスを最適化したいプログラマ。
 28 時間

参加者の人数


参加者1人当たりの料金

今後のコース

関連カテゴリー