お問い合わせ
 期間 28 時間

コース概要

導入

  • 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の組み込み関数(数学、幾何、関係など)の使用
  • OpenCL Cの拡張機能とライブラリ(atomics、イメージ、cl_khr_fp16など)の使用

OpenCLメモリモデル

  • ホストとデバイスのメモリモデルの差分の理解
  • OpenCLのメモリスペース(グローバル、ローカル、定数、プライベート)の使用
  • OpenCLのメモリオブジェクト(バッファ、イメージ、パイプ)の使用
  • OpenCLのメモリアクセスモード(読み取り専用、書き込み専用、読み書き可能など)の使用
  • OpenCLのメモリ整合性モデルと同期メカニズムの使用

OpenCL実行モデル

  • ホストとデバイスの実行モデルの差分の理解
  • OpenCLのワークアイテム、ワークグループ、NDレンジを使用して並列性を定義する
  • OpenCLのワークアイテム関数(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プログラムにおける一般的なエラーとバグの理解
  • Visual Studio Codeのデバッガを使用して、変数、ブレークポイント、コールスタックなどを検査する
  • CodeXLを使用してAMDデバイスでのOpenCLプログラムのデバッグと分析を行う
  • Intel VTuneを使用してIntelデバイスでのOpenCLプログラムのデバッグと分析を行う
  • NVIDIA Nsightを使用してNVIDIAデバイスでのOpenCLプログラムのデバッグと分析を行う

最適化

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

要求

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

対象となる方

  • OpenCLを使用して異種処理デバイスへのプログラミングを行い、その並列性を利用したいと考えている開発者
  • 異なるプラットフォームやデバイス上で動作するポータブルかつスケーラブルなコードを書きたいと考えている開発者
  • 異種処理プログラミングの低レベルな側面を探索し、コードのパフォーマンスを最適化したいと考えているプログラマー

参加者の人数


参加者1人あたりの価格

今後のコース

関連カテゴリー