お問い合わせ

コース概要

はじめに

  • ROCmとは何か?
  • HIPとは何か?
  • ROCmとCUDAおよびOpenCLの違い
  • ROCmおよびHIPが持つ特徴やアーキテクチャの概要
  • 開発環境のセットアップ方法

はじめの一歩

  • Visual Studio Codeを利用して新規ROCmプロジェクトを作成する
  • プロジェクト構造および各ファイルの内容を確認する
  • プログラムのコンパイルと実行方法
  • printfやfprintfを用いて出力結果を表示させる

ROCm APIの活用

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

HIP言語について

  • デバイス側プログラムにおけるHIP言語の役割を把握する
  • HIP言語を用いてGPU上で実行可能なカーネルを記述し、データ操作を行う方法
  • HIPが提供するデータ型や修飾子、演算子、式の利用法
  • 一般的な処理に必要となるHIP組み込み関数や変数、ライブラリの使用方法

ROCmおよびHIPのメモリモデル

  • ホスト側メモリとデバイス側メモリの違いについて理解する
  • グローバル・共有・定数・ローカルといった各種メモリ領域の使い分け方
  • ポインタや配列、テクスチャ、サーフェースなどのメモリオブジェクト利用法
  • 読み取り専用・書き込み専用・読み書き可能といったアクセスモードの使い方
  • メモリ一貫性モデルや同期機構の適切な活用方法

ROCmおよびHIPの実行モデル

  • ホスト側とデバイス側における処理形態の相違点を把握する
  • スレッド・ブロック・グリッド構造を用いた並列処理の制御方法
  • hipThreadIdx_xやhipBlockIdx_x、hipBlockDim_xといったスレッド関連関数の使い方
  • __syncthreadsや__threadfence_blockなどのブロック関連機能の利用法
  • hipGridDim_xやhipGridSync、協調グループといったグリッド関連機能について理解する

デバッグ手法

  • ROCmおよびHIPプログラムで頻出するエラーや不具合の種類を把握する
  • Visual Studio Codeのデバッガを用いて変数内容やブレークポイント、呼び出し履歴などを確認する方法
  • AMD製デバイス上でROCmおよびHIPプログラムをデバッグするためのROCm Debuggerの使用法
  • AMD製デバイスにおいてROCmおよびHIPプログラムを解析するためのROCm Profilerの活用法

最適化手法

  • プログラム性能に影響を与える各種要因を理解する
  • メモリアクセス効率向上を目的としたコールシージング技術の活用方法
  • メモリ遅延削減のためのキャッシュ化・プリフェッチ手法の実践法
  • 共有メモリやローカルメモリを駆使したデータ転送および帯域幅の最適化方法
  • プロファイリング技術や各種ツールを用いて処理時間やリソース利用率を改善するための取り組み方

まとめと次のステップ

要求

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

受講対象者

  • ROCmおよびHIPを活用してAMD GPUプログラミングを行い、その並列処理能力を生かしたい開発者
  • さまざまなAMD製デバイス上で高パフォーマンスかつスケーラビリティの高いコードを作成したい開発者
  • GPUプログラミングの低レベルな仕組みを深く学び、自身のコードの最適化に努めたいプログラマー
 28 時間

参加者の人数


参加者1人あたりの価格

今後のコース

関連カテゴリー