お問い合わせ

コース概要

はじめに

  • CUDAとは何か?
  • CUDAとOpenCL、SYCLとの違い
  • CUDAの特徴やアーキテクチャの概要説明
  • 開発環境の設定方法

はじめてのステップ

  • Visual Studio Codeを使った新規CUDAプロジェクトの作成法
  • プロジェクト構造や関連ファイルの確認方法
  • プログラムのコンパイルおよび実行手順
  • printfやfprintfを用いた出力結果の表示方法

CUDA API

  • ホスト側プログラムにおけるCUDA APIの役割の理解
  • デバイス情報や機能を照会するためのAPI活用法
  • メモリ確保・解放処理に用いるAPIの使い方
  • ホストとデバイスの間でのデータ転送方法
  • カーネル起動処理やスレッド同期機能の実施法
  • エラーおよび例外を取り扱うためのAPI活用法

CUDA C/C++

  • デバイス側プログラムにおけるCUDA C/C++言語の重要性
  • GPU上で実行されるカーネル記述とデータ操作に用いる言語機能
  • データ型、修飾子、演算子、式などを含む言語仕様の説明
  • 数学計算や排他制御、ワープ単位処理を行う組み込み関数の利用法
  • threadIdxやblockIdxといったスレッド構造情報用の組み込み変数の使い方
  • cuBLASやcuFFT、cuRANDなどの専門ライブラリ活用例

CUDAメモリモデル

  • ホスト側とデバイス側のメモリモデルの相違点の解説
  • グローバル、共有、定数、ローカルといった各種メモリ領域の利用法
  • ポインタや配列、テクスチャオブジェクトなど様々なメモリアクセス手段の活用方法
  • 読み取り専用/書き込み専用/両方可能といったメモリアクセス権限設定法
  • メモリ整合性維持や同期制御機構の基本的仕組み

CUDA実行モデル

  • ホスト側とデバイス側における実行管理方式の比較説明
  • スレッド・ブロック・グリッドを用いた並列処理定義法
  • threadIdxやblockIdxといったスレッド単位情報取得用機能の使い方
  • 複数スレッド間同期を行う__syncthreadsや__threadfence_blockなどの機能紹介
  • グリッド単位の実行制御に関するgridDimやgridSync、協調グループ構成法など

デバッグ手法

  • CUDAプログラムでよく見られるエラーや不具合事例
  • Visual Studio Codeのデバッガ機能を使った変数確認やブレークポイント設定法
  • Linux環境向けにCUDA-GDBを用いたデバッグ手順説明
  • メモリ関連問題検出用ツールCUDA-MEMCHECKの利用例
  • Windows上でNVIDIA Nsightを活用したデバッグおよび分析手法紹介

最適化技術

  • プログラムパフォーマンスに影響を与える主要要因の解説
  • メモリ帯域利用効率向上のためのデータ結合化処理の実施法
  • 遅延低減目的でのキャッシュ・プリフェッチ活用術
  • 共有メモリやローカルメモリを利用した転送頻度削減と帯域効率改善手法
  • パフォーマンスプロファイラーを活用して実行時間やリソース使用状況を測定する方法

まとめおよび次のステップ

要求

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

対象者

  • NVIDIA GPU上でCUDAを活用したプログラミング技術を習得したい開発者の方々
  • さまざまなCUDA対応デバイス上でも高速かつ拡張性の高いコードを作成したい開発者の方々
  • GPUプログラミングの詳細仕組みや低レベル制御方法を学び、自身のコード性能を最適化したいプログラマーの方々
 28 時間

参加者の人数


参加者1人あたりの価格

今後のコース

関連カテゴリー