お問い合わせ

コース概要

はじめに

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

始め方

  • Visual Studio Codeを用いた新規OpenCLプロジェクトの作成手順
  • プロジェクト内の構成や各ファイルの役割についての説明
  • コンパイルおよびプログラム実行方法
  • printfやfprintfを用いた出力結果の確認手法

OpenCL API

  • ホスト側プログラムにおけるOpenCL APIの役割について理解する
  • OpenCL APIを用いたデバイス情報および機能特性の取得方法
  • OpenCL APIを活用したコンテキスト・コマンドキュー・バッファ・カーネル・イベントの生成手法
  • 読み取り・書き込み・コピー・マッピングなど、各種コマンド登録方法と例外処理への対応手順
  • OpenCL APIを用いたエラーハンドリング手法の習得

OpenCL C言語

  • デバイス側プログラムにおけるOpenCL C言語の重要性と役割について理解する
  • OpenCL Cを用いたカーネルプログラム作成およびデータ処理手法
  • データ型や修飾子・演算子・式の扱い方について習得する
  • 数学計算や幾何処理・比較判定などを実現可能な組み込み関数の利用方法
  • atomic機能や画像操作用モジュール、cl_khr_fp16などの拡張機能やライブラリ活用法についても習得する

OpenCLメモリモデル

  • ホスト側およびデバイス側それぞれのメモリモデルの相違点について理解する
  • globalやlocal、constant、privateといった各種メモリスペースの使い方を習得する
  • バッファ・画像・パイプなどOpenCL特有のメモリオブジェクト活用方法について学ぶ
  • 読み取り専用・書き込み専用といったアクセス属性やメモリ利用規則を理解する
  • メモリ整合性の維持および同期処理手法についても習得する

OpenCL実行モデル

  • ホスト側・デバイス側それぞれの並列実行制御仕様について理解する
  • ワークアイテム・ワークグループ・ND範囲といった構造を用いた並列処理定義方法を習得する
  • 各種ID取得用関数の利用により、現在のワークアイテム位置情報を参照可能になる
  • barrierやwork_group_reduceなどグループ内同期・演算処理関連機能の使い方について学ぶ
  • デバイス側グループ数やサイズなどの各種情報を取得するための関数活用手法を習得する

デバッグ技法

  • OpenCLプログラムにおいて一般的に見られるエラーや不具合の種類について把握する
  • Visual Studio Code内蔵デバッガを活用した変数確認・ブレークポイント設定など実践手法
  • AMD系デバイス向けにCodeXLを用いたプログラム分析と不具合特定方法の習得
  • Intel製デバイス上ではIntel VTuneを活用した性能診断手法について学ぶ
  • NVIDIA系環境向けにはNVIDIA Nsightを用いた不具合解析および改善策の検討方法も習得する

最適化手法

  • OpenCLプログラムにおける性能に影響を与える要因について理解する
  • ベクタデータ型活用やベクタリゼーション技法による計算処理の効率向上手法を習得する
  • ループアンローリング・ループタイリングを用いた制御オーバーヘッド低減およびデータ局所性向上方法について学ぶ
  • ローカルメモリ活用やその関連操作関数を利用したアクセス効率改善技法を習得する
  • プロファイラを用いた実行時間・リソース利用率計測とそれに基づく最適化策立案方法も身につける

まとめおよび今後の学習指針

要求

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

対象者

  • OpenCLを活用してさまざまなデバイス上の並列処理プログラミングを行いたい開発者の方々
  • 複数プラットフォームや異なるハードウェアで動作可能な可搬性・拡張性の高いコードを作成したい開発者
  • OpenCLプログラミングの低レベル側面に興味があり、自らのコード性能向上を目指すプログラマーの方々
 28 時間

参加者の人数


参加者1人あたりの価格

今後のコース

関連カテゴリー