お問い合わせ
 期間 28 時間

コース概要

はじめに

  • CUDAとは何か?
  • CUDAとOpenCL、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++の役割の理解
  • GPU上で実行されデータを操作するカーネルの記述にCUDA C/C++を使用する
  • CUDA C/C++のデータ型、修飾子、演算子、式の使い方
  • 数学演算、原子操作、ワープなどのCUDA C/C++組み込み関数の使い方
  • threadId、blockId、blockDimなどのCUDA C/C++組み込み変数の使い方
  • cuBLAS、cuFFT、cuRANDなどのCUDA C/C++ライブラリの使い方

CUDAメモリモデル

  • ホストメモリモデルとデバイスメモリモデルの違いの理解
  • グローバル、共有、定数、ローカルなどのCUDAメモリ空間の使い方
  • ポインタ、配列、テクスチャ、サーフェスなどのCUDAメモリオブジェクトの使い方
  • 読み取り専用、書き込み専用、読み書き可能などのCUDAメモリアクセスモードの使い方
  • CUDAメモリ整合性モデルと同期メカニズムの使い方

CUDA実行モデル

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

デバッグ

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

最適化

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

要求

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

対象となる方

  • CUDAを使用してNVIDIA GPUをプログラムし、その並列性を活用したい開発者
  • 異なるCUDAデバイス上で実行可能で、高パフォーマンスかつスケーラブルなコードを記述したい開発者
  • GPUプログラミングの低レイヤ側を探究し、コードのパフォーマンスを最適化したいプログラマ

参加者の人数


参加者1人あたりの価格

今後のコース

関連カテゴリー