お問い合わせを送信いただきありがとうございます!当社のスタッフがすぐにご連絡いたします。
予約を送信いただきありがとうございます!当社のスタッフがすぐにご連絡いたします。
コース概要
イントロダクション
- 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 時間