パート I. OpenCLアーキテクチャー

目次

1. OpenCLの概要
1.1. OpenCLバージョンについて
1.2. Javaバインディング
1.2.1. JOCL(jocl.org)
1.2.2. JOCL (jogamp.org)
1.2.3. Aparapi
1.2.4. JavaCL
1.2.5. LWJGL
1.2.6. まとめ
1.3. 最新動向
1.3.1. Altera FPGAの登場
1.4. 背景(ヘテロジニアス・マルチコア)
1.5. OpenCLの特徴
1.6. OpenCLフレームワークモデル
1.6.1. プラットフォームモデル
1.6.2. 実行モデル(Execution Model)
1.6.3. メモリーモデル
1.6.4. プログラミングモデル
1.7. OpenCLカーネルプログラミング
1.7.1. カーネル関数
1.7.2. 引数とバッファオブジェクト
1.7.3. カーネルカウンタ
2. APIとアーキテクチャ
2.1. プラットフォームAPI
2.2. ランタイムAPI
2.3. カーネルプログラミング言語
2.4. OpenCL SDK
2.4.1. Mac OS X
2.4.2. Installable Client Driver(ICD)
2.4.3. Windows
2.4.4. Linux
2.5. 検証環境
2.5.1. Mac Mini Late 2012の仕様
2.5.2. CPU/GPUデバイス
2.5.3. OpenCLデバイス情報
2.5.4. Intel第3・4世代CPU内蔵グラフィックボード
2.5.5. Intel Gen8/Gen9アーキテクチャ
2.6. Intel HD Graphics
2.7. Intel HD3000とHD4000の比較
2.8. Intel GPUとNVIDIA GPUのベンチマーク比較
2.9. SIMD
2.9.1. SSE/AVX
2.10. Autovectorization
2.10.1. 明示的ベクトル化
2.10.2. 暗黙的ベクトル化
2.11. Compute UnitとProcessing Element
2.11.1. なぜPEの理解は開発者にとって重要でないのか?
2.11.2. Execution Unit(Intel)
2.11.3. Streaming MultiProcessor(NVIDIA)
2.11.4. Compute Unit(AMD GCN)
2.12. サポートするプロセッサー
2.13. ワークグループ
2.13.1. CL_DEVICE_MAX_WORK_ITEM_SIZES
2.14. NDRange
2.14.1. NDRange:1次元
2.14.2. NDRange:2次元
2.14.3. NDRange:3次元
2.15. メモリー領域
2.15.1. privateメモリ
2.15.2. localメモリ
2.15.3. globalメモリ
2.15.4. constantメモリ
2.16. メモリレイテンシ
2.16.1. メモリ・キャッシュ帯域
2.17. 共有ローカルメモリ
2.17.1. Intel(第3~4世代以降のCPUアーキテクチャ)
2.17.2. NVIDIA
2.17.3. AMD
2.18. Stalls(ストール)
2.19. メモリストライド
2.19.1. キャッシュライン
2.19.2. バンク
2.20. 2次元アクセスパターン

Copyright 2018-2019, by Masaki Komatsu