コース概要

イントロダクション

  • OpenCLとは何か?
  • OpenCL vs CUDA vs SYCL
  • OpenCLの特徴とアーキテクチャの概要
  • 開発環境の設定

はじめに

  • Visual Studio Codeを使用して新しいOpenCLプロジェクトを作成する。
  • プロジェクトの構造とファイルを探索する。
  • プログラムのコンパイルと実行
  • printfやfprintfを使用して出力を表示する。

OpenCL API

  • ホストプログラムにおけるOpenCL APIの役割の理解
  • OpenCL APIを使用してデバイス情報と機能を問い合わせる。
  • OpenCL APIを使用してコンテキスト、コマンドキュー、バッファ、カーネル、イベントを作成する。
  • 読み込み、書き込み、コピー、マップ、アンマップ、実行、待機などのコマンドをエンキューするためのOpenCL APIの使用
  • エラーと例外を処理するためのOpenCL APIの使用

OpenCL C

  • デバイスプログラムにおけるOpenCL Cの役割の理解
  • OpenCL Cを使用してデバイス上で実行されデータを操作するカーネルを書く。
  • OpenCL Cのデータ型、修飾子、演算子、式の使用
  • 数学、幾何学、関係など、OpenCL Cの組み込み関数の使用
  • atomic、image、cl_khr_fp16などのOpenCL Cの拡張機能とライブラリの使用

OpenCLメモリモデル

  • ホストとデバイスのメモリモデルの違いの理解
  • global、local、constant、privateなどのOpenCLメモリアドレス空間の使用
  • バッファ、画像、パイプなどのOpenCLメモリオブジェクトの使用
  • 読み取り専用、書き込み専用、読み取り/書き込みなど、OpenCLメモリアクセスモードの使用
  • メモリの一貫性モデルと同期メカニズムの使用

OpenCL実行モデル

  • ホストとデバイスの実行モデルの違いの理解
  • 並列性を定義するためにOpenCLワークアイテム、ワークグループ、ND-rangeを使用する。
  • get_global_id、get_local_id、get_group_idなどのOpenCLワークアイテム関数の使用
  • barrier、work_group_reduce、work_group_scanなどのOpenCLワークグループ関数の使用
  • get_num_groups、get_global_size、get_local_sizeなどのOpenCLデバイス関数の使用

デバッグ

  • OpenCLプログラムで一般的なエラーとバグの理解
  • 変数、ブレークポイント、コールスタックなどを検査するためのVisual Studio Codeデバッガーの使用
  • AMDデバイスでOpenCLプログラムをデバッグおよび分析するためにCodeXLを使用する。
  • IntelデバイスでOpenCLプログラムをデバッグおよび分析するためにIntel VTuneを使用する。
  • NVIDIAデバイスでOpenCLプログラムをデバッグおよび分析するためにNVIDIA Nsightを使用する。

最適化

  • OpenCLプログラムのパフォーマンスに影響を与える要因の理解
  • 算術スループットを向上させるためのOpenCLベクタデータ型とベクタライズ技術の使用
  • コントロールオーバヘッドを削減し、局所性を向上させるためにOpenCLループアンローリングとループタイリング技術を使用する。
  • メモリアクセスと帯域幅を最適化するためにOpenCLのローカルメモリとローカルメモリ関数を使用する。
  • 実行時間とリソース利用率を測定および改善するためにOpenCLプロファイリングとプロファイリングツールの使用

まとめと次なるステップ

要求

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

対象者

  • OpenCLを使用して異種デバイスをプログラミングし、並列性を活用したい開発者
  • 異なるプラットフォームやデバイスで実行できる移植可能で拡張可能なコードを書きたいための開発者
  • 異種プログラミングの低レベル側面を探求し、コードのパフォーマンスを最適化したいプログラマ
 28 時間

参加者の人数


参加者1人当たりの料金

今後のコース

関連カテゴリー