OpenCL応用
メニーコアCPU & GPGPU時代の並列処理
- 著者 北山 洋幸
- 判型 B5変型, 576頁
- 本体価格 5,800円
- ISBN 978-4-87783-187-5
2012年9月10日 初版第1刷発行
本書について
本書は、並列プログラミング規格の一つであるOpenCLを紹介する書籍です。対象読者のレベルは「入門者〜中級者」を考えています。初歩的なプログラムも示しますが、基本的にOpenCLの基礎は習得済みで、次のステップへ進みたいプログラマを対象にします。
OpenCLはプラットフォームや開発環境へ依存しない並列プログラミングの規格です。ヘテロジニアスな環境を前提にしているため、スレッドやOpenMPなどに比べ若干手続きが面倒です。そのため、一通りの手順を理解するまでは、少し退屈でしょう。
本書は、前半でOpenCLの概要、中盤で画像処理の基本や応用、後半でイメージオブジェクトを使った画像処理やOpenCLの同期処理、そしてワークグループなどを解説します。
スレッドやOpenMPを習得しているエンジニアにとって、OpenCLの習得は比較的容易と考えられます。ただ、OpenCLは従来の並列化と異なり、ヘテロジニアスな構成を対象としています。このため、いくつかOpenCL特有な学習が必要です。本書の先頭の方で、OpenCL特有な部分を解説します。まったく並列プログラミングに縁のなかったエンジニアにとっては、かえって素直に学べる可能性もあります。スレッドやOpenMPを経験済みのエンジニアは、手続きが煩雑に感じるでしょう。
これまでのOpenCL関連書籍は入門書が多く、リファレンスが充実したものも少なくありません。本書では、リファレンスはOpenCLの仕様書に譲って最低限の解説に留めます。代わりに、実際のアプリケーションに近い具体的な例を多く紹介し、それを説明することに重点を置きました。
目 次
- 第0章 概論
- 0-1 はじめに
- 0-2 並列化の副作用
- 0-3 並列化の詳細
- 0-4 並列化の分類
- 0-5 OpenCL概論
- 第1章 はじめてのプログラム
- 1-1 はじめてのプログラム(タスク並列で書く)
- 1-2 はじめてのプログラム(データ並列で書く)
- 1-3 カーネルプログラムを分離
- 第2章 開発環境とインストール
- 2-1 環境のカテゴライズ
- 2-2 AMD社開発環境の構築
- 2-3 Intel社開発環境の構築
- 2-4 NVIDIA社開発環境の構築
- 2-5 ソースの文字コードについて
- 2-6 ツール
- 2-7 動作チェック環境
- 2-8 VC++のx64設定
- 第3章 はじめてのOpenCLらしいプログラム
- 3-1 移動平均
- 3-2 C/C++言語で移動平均
- 3-3 OpenCLタスク並列による移動平均
- 3-4 データ並列による移動平均
- 3-5 ベクタ型を使用して移動平均
- 3-6 タスク並列による移動平均
- 3-7 データ並列による移動平均
- 第4章 はじめての画像処理プログラム
- 4-1 ビットマップファイルの構造
- 4-2 ビットマップファイル処理
- 4-3 画像のネガティブ処理
- 4-4 画像の上下を反転
- 第5章 フィルタ処理プログラム
- 5-1 クラスの開発
- 5-2 フィルタプログラム
- 5-3 グレイスケールに変換後フィルタ処理
- 5-4 二つのカーネル
- 第6章 座標変換
- 6-1 ミラー処理
- 6-2 拡大縮小処理
- 6-3 回転処理
- 第7章 応用
- 7-1 回転処理
- 7-2 画像をねじる
- 7-3 ベクタ型で画像処理
- 7-4 大きなオペレータで画像処理
- 第8章 画像検索と非同期
- 第9章 イメージオブジェクト
- 9-1 はじめに
- 9-2 イメージオブジェクトでフィルタ
- 9-3 二つのカーネル
- 9-4 イメージオブジェクトで座標変換
- 第10章 ワークグループ
- 10-1 ワークグループの基礎
- 10-2 ワークグループ分割
- 10-3 ワークグループとワークアイテムの関係
- 10-4 ローカルIDからグローバルIDを算出
- 第11章 同期
- 11-1 配列の総和を計算
- 11-2 配列から最小値と最大値を探す
- 11-3 配列から最小値と最大値を探す(タスク並列)
- 11-4 配列から最小値と最大値を探す(タスク並列+非同期コマンドキュー)
- 11-5 配列から最小値と最大値を探す(データ並列+非同期コマンドキュー)
- 11-6 配列から最大振幅を求める