お問い合わせを送信いただきありがとうございます!当社のスタッフがすぐにご連絡いたします。
予約を送信いただきありがとうございます!当社のスタッフがすぐにご連絡いたします。
期間 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プログラミングの低レイヤ側を探究し、コードのパフォーマンスを最適化したいプログラマ