お問い合わせを送信いただきありがとうございます!当社のスタッフがすぐにご連絡いたします。
予約を送信いただきありがとうございます!当社のスタッフがすぐにご連絡いたします。
期間 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を使用して異種処理デバイスへのプログラミングを行い、その並列性を利用したいと考えている開発者
- 異なるプラットフォームやデバイス上で動作するポータブルかつスケーラブルなコードを書きたいと考えている開発者
- 異種処理プログラミングの低レベルな側面を探索し、コードのパフォーマンスを最適化したいと考えているプログラマー