お問い合わせ

コース概要

GPUアクセレーテッドコンピューティングの概要

  • 異種コンピューティングとCPU-GPUアーキテクチャ
  • CUDAの実行モデルとメモリ空間
  • nvccおよびCMakeを用いたCUDA C++のコンパイル
  • GPU開発環境の確認

ThrustおよびCUBによる並列アルゴリズム

  • GPU加速されたソート、リダクション、トランスフォーム
  • GPU実行向けSTLアルゴリズムのリファクタリング
  • Thrustデバイスベクターおよび実行ポリシー
  • カスタムパイプラインのためのCUBデバイスの広域プリミティブ

GPUメモリアーキテクチャと管理

  • グローバル、コンスタント、テクスチャメモリなどのメモリタイプ
  • 明示的なデバイスメモリのアロケーションと転送
  • データアクセスを簡素化するユニファイドメモリ
  • メモリのコアレスリングおよびアクセスパターン最適化

CUDAストリームを用いた非同期実行

  • CUDAストリームの作成と管理
  • カーネル実行とデータ転送のオーバーラップ
  • 依存関係管理のためのCUDAイベント
  • ストリーム優先度と同時実行数のチューニング

カスタムCUDAカーネルの記述

  • SIMTプログラミングモデルおよびワープの実行
  • カーネル起動設定およびグリッド・ストライドループ
  • スレッドインデックス付けおよび多次元グリッド
  • エラーハンドリングおよびCUDAランタイムAPIのチェック

スレッド階層と実行モデル

  • デバイスコードにおけるグリッド、ブロック、スレッド
  • ワープレベルプリミティブおよびボールト演算
  • ブロックレベルの同期とバリアー
  • occupancy(occupancy)およびリソース活用率の分析

協調グループによる柔軟な並列化

  • cooperative_groups APIおよびグループタイプ
  • スレッドブロックタイルおよびtiled_partition
  • グリッドレベルの協調的起動
  • マルチグリッド同期パターン

共有メモリ最適化テクニック

  • 共有メモリのバンクおよびバンク競合の回避
  • 行列演算のためのタイリング戦略
  • ユーザ管理キャッシュとしての共有メモリ
  • 多次元ビューのためのcuda::shared_memory_mdspan

カーネル融合と高度な並列パターン

  • 起動オーバーヘッド削減のための複数カーネルの融合
  • スキャン、キー別リダクション、セグメント化アルゴリズム
  • アトミック操作およびロックフリーデータ構造
  • スループット向上のためのワープ集約型アトミクス

Nsight Systemsによるプロファイリングと最適化

  • CPUおよびGPUアクティビティのタイムライン分析
  • メモリ転送のボトルネック特定
  • カーネルパフォーマンスおよびoccupancyのプロファイリング
  • Nsight Computeを用いた反復的な最適化

CUDAデバイスコードにおけるモダンC++機能

  • カーネル内でのラムダ式、constexpr、autoの活用
  • C++17並列アルゴリズムおよび実行ポリシー
  • デバイス上でのC++20コンセプトおよびレンジ
  • nvccおよびCCCL 3.xにおけるC++23サポート

CUDA Graphsと高度な非同期処理

  • CUDAグラフの定義および起動
  • ストリーム実行からのグラフキャプチャ
  • グラフ更新および条件付き実行ノード
  • 反復的ワークロードにおける起動レイテンシーの削減

既存アプリケーションへの統合パターン

  • C++インターフェース背後でのGPUコードのラッピング
  • マルチGPUおよびNUMAシステムの管理
  • CMakeおよびCUDAとのビルドシステム統合
  • cuda-gdbを用いたデバイスコードのデバッグ

まとめとベストプラクティス

  • Thrust、CUB、カスタムカーネルの選択基準
  • GPUアーキテクチャ間でのパフォーマンスポータビリティ
  • CUDAリソースにおけるRAIIを活用したコード構成
  • 次のステップおよびCUDA上級学習パス

要求

  • ラムダ式、テンプレート、STLを含む基礎的なC++の知識
  • 標準アルゴリズム、コンテナ、イテレータへの親しみ
  • ループ、条件分岐、関数に習熟していること
  • CUDAやGPUプログラミングの事前経験は不要です

対象者

  • GPUを用いて計算集約型アプリケーションを加速したいC++開発者
  • CPU専用の環境から異種並列プログラミングへの移行を検討するソフトウェアエンジニア
  • 大量のデータを扱うパフォーマンスエンジニアおよびクオンツデベロッパー
 8 時間

参加者の人数


参加者1人あたりの価格

お客様の声 (3)

今後のコース

関連カテゴリー