お問い合わせ

コース概要

はじめに

  • GPUプログラミングとは?
  • なぜGPUプログラミングを利用するのか?
  • GPUプログラミングにおける課題やトレードオフとは?
  • GPUプログラミング用の主要フレームワーク・ツールは何か?
  • アプリケーションに最適なフレームワーク・ツールの選定方法

OpenCL

  • OpenCLとは?
  • OpenCLの利点と短所は?
  • OpenCL開発環境のセットアップ手順
  • 複数のフレームワーク・ツールを用いてベクトル加算処理を行う基本的なOpenCLプログラムを作成する方法
  • OpenCL APIを用いてデバイス情報の照会やメモリの確保・解放、ホストとデバイス間でのデータ転送、カーネルの実行、スレッド同期処理などを行う方法
  • OpenCL C言語を使用してデバイス上で実行されるカーネル内でデータ操作を行う方法
  • 組み込み関数や変数、ライブラリを活用して一般的なタスクの処理を行う手法
  • グローバル、ローカル、定数、プライベートといったメモリ空間を使いデータ転送とアクセスの最適化を行う方法
  • ワークアイテムやワークグループ、NDレンジを用いて並列処理の制御を行う仕組み
  • CodeXLなどのツールを活用してOpenCLプログラムのデバッグとテストを行う方法
  • データ結合化、キャッシュ活用、プリフェッチング、プロファイリングといった手法を用いて最適化を行う方法

CUDA

  • CUDAとは?
  • CUDAの利点と短所は?
  • CUDA開発環境のセットアップ手順
  • 複数のフレームワーク・ツールを用いてベクトル加算処理を行う基本的なCUDAプログラムを作成する方法
  • CUDA APIを用いてデバイス情報の照会やメモリの確保・解放、ホストとデバイス間でのデータ転送、カーネルの実行、スレッド同期処理などを行う方法
  • CUDA C/C++言語を使用してデバイス上で実行されるカーネル内でデータ操作を行う方法
  • 組み込み関数や変数、ライブラリを活用して一般的なタスクの処理を行う手法
  • グローバル、共有、定数、ローカルといったメモリ空間を使いデータ転送とアクセスの最適化を行う方法
  • スレッド、ブロック、グリッドを用いて並列処理の制御を行う仕組み
  • CUDA-GDB、CUDA-MEMCHECK、NVIDIA Nsightなどのツールを活用してCUDAプログラムのデバッグとテストを行う方法
  • データ結合化、キャッシュ活用、プリフェッチング、プロファイリングといった手法を用いて最適化を行う方法

ROCm

  • ROCmとは?
  • ROCmの利点と短所は?
  • ROCm開発環境のセットアップ手順
  • 複数のフレームワーク・ツールを用いてベクトル加算処理を行う基本的なROCmプログラムを作成する方法
  • ROCm APIを用いてデバイス情報の照会やメモリの確保・解放、ホストとデバイス間でのデータ転送、カーネルの実行、スレッド同期処理などを行う方法
  • ROCm C/C++言語を使用してデバイス上で実行されるカーネル内でデータ操作を行う方法
  • 組み込み関数や変数、ライブラリを活用して一般的なタスクの処理を行う手法
  • グローバル、ローカル、定数、プライベートといったメモリ空間を使いデータ転送とアクセスの最適化を行う方法
  • スレッド、ブロック、グリッドを用いて並列処理の制御を行う仕組み
  • ROCm DebuggerやROCm Profilerなどのツールを活用してROCmプログラムのデバッグとテストを行う方法
  • データ結合化、キャッシュ活用、プリフェッチング、プロファイリングといった手法を用いて最適化を行う方法

HIP

  • HIPとは?
  • HIPの利点と短所は?
  • HIP開発環境のセットアップ手順
  • 複数のフレームワーク・ツールを用いてベクトル加算処理を行う基本的なHIPプログラムを作成する方法
  • HIP言語を使用してデバイス上で実行されるカーネル内でデータ操作を行う方法
  • 組み込み関数や変数、ライブラリを活用して一般的なタスクの処理を行う手法
  • グローバル、共有、定数、ローカルといったメモリ空間を使いデータ転送とアクセスの最適化を行う方法
  • スレッド、ブロック、グリッドを用いて並列処理の制御を行う仕組み
  • ROCm DebuggerやROCm Profilerなどのツールを活用してHIPプログラムのデバッグとテストを行う方法
  • データ結合化、キャッシュ活用、プリフェッチング、プロファイリングといった手法を用いて最適化を行う方法

比較

  • OpenCL、CUDA、ROCm、HIPそれぞれの機能・性能・互換性を比較する
  • ベンチマークや指標を用いてGPUプログラムの評価を行う
  • GPUプログラミングにおけるベストプラクティスや有用なコツを学ぶ
  • 現在および今後のGPUプログラミング分野の動向と課題について考察する

まとめと次のステップ

要求

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

受講対象者

  • GPUプログラミングの基礎と主要フレームワーク・ツールを学びたい開発者
  • さまざまなプラットフォームやデバイスで動作可能な移植性・拡張性に優れたコードを書きたい開発者
  • GPUプログラミングの利点と課題、および最適化手法について深く学びたいプログラマー
 21 時間

参加者の人数


参加者1人あたりの価格

今後のコース

関連カテゴリー