Pythonで始めるOpenCLメニーコアCPU & GPGPU時代の並列処理
著者 | 北山 洋幸 |
---|---|
判型 | B5変型、336頁 |
ISBN | 978-4-87783-433-3 |
価格 | 本体 3,800円 |
発行日 | 2018年3月10日(初版 第1刷) |
備考 | ダウンロードサービス:学習に使えるサンプルファイル |
本書について
本書は、プログラミングの初級レベルを通過した方々を対象に、並列プログラミング規格の一つであるOpenCLをPythonから利用することを解説する書籍です。PyOpenCLの初歩、行列や画像処理の基本、イメージオブジェクト、ワークグループ、そして簡単にカーネルを生成できるテンプレートを解説します。
本書で利用するPyOpenCLは、プラットフォームや開発環境へ依存しない並列プログラミングの手法です。OpenCLは、ヘテロジニアスな環境を前提にしていますが、PyOpenCLを使用するかぎり、そこまで深くハードウェアを意識する必要はありません。C/C++言語からOpenCLを利用するときに比べ抽象化が進んでおり、比較的手軽に粒度の細かい並列プログラミングを行うことが可能です。
OpenCLのバージョン間の差異などについては、PyOpenCLの理解にそれほど重要と思われないので省略していますが、本書の内容を理解すれば、PyOpenCLのホームページなどの情報をもとに、新しい機能へ対応するのは容易でしょう。
目 次
- 第1章 はじめに
- 1-1 Pythonとは
- 1-2 OpenCL概論
- 1-3 PyOpenCLとは
- 第2章 開発環境とインストール
- 2-1 AnacondaをWindowsにインストール
- 2-2 Anaconda Navigator
- 2-3 PyOpenCLをインストール
- 2-4 PythonをWindowsにインストール
- 2-5 IDLE
- 第3章 Spyder入門
- 3-1 Spyder使用法の基礎
- 3-2 デバッグ機能
- 第4章 はじめてのプログラム
- 4-1 はじめてのPyOpenCLプログラム
- 4-2 行列の積
- 4-3 カーネルプログラムを分離
- 4-4 OpenCL情報の表示
- 第5章 画像と行列処理
- 5-1 単純な画像(行列)の生成
- 5-2 少し複雑な行列(画像)の生成
- 5-3 画像のネガティブ処理
- 5-4 画像の座標変換
- 第6章 カーネルプログラムを分離
- 6-1 左右反転処理
- 6-2 ネガティブ処理
- 6-3 上下反転処理
- 第7章 三次元配列で処理
- 第8章 フィルタプログラム
- 8-1 ホストプログラム
- 8-2 カーネルの説明
- 8-3 実行
- 第9章 ベクタで画像処理
- 9-1 uchar4で画像を扱う
- 9-2 ベクタのロード・ストア命令で画像処理
- 9-3 ベクタのロード・ストア命令とポインタ
- 9-4 RGB三成分の同時処理
- 第10章 大きなオペレータで画像処理
- 10-1 5×5のオペレータを使用して画像処理
- 10-2 オペレータを読み込む
- 10-3 オペレータを生成
- 第11章 座標変換
- 11-1 拡大縮小処理
- 11-2 回転処理
- 第12章 二つのカーネル
- 12-1 グレイスケール画像とフィルタ
- 12-2 二つの画像の合成
- 第13章 イメージオブジェクト
- 13-1 イメージオブジェクトとは
- 13-2 イメージオブジェクトでフィルタ
- 13-3 pyopenclの説明
- 13-4 OpenCL APIの説明
- 13-5 OpenCL C組み込み関数の説明
- 13-6 イメージオブジェクトで座標変換
- 第14章 ワークグループ
- 14-1 ワークグループの基礎
- 14-2 ワークグループ分割
- 14-3 ワークグループとワークアイテムの関係
- 14-4 ローカルIDからグローバルIDを算出
- 第15章 pyopencl.arrayとテンプレート
- 15-1 pyopencl.array
- 15-2 スカラ
- 15-3 数学関数
- 15-4 最大値、最小値
- 15-5 if_positive
- 15-6 リダクション
- 15-7 ReductionKernelテンプレート
- 15-8 subset
- 15-9 Elementwiseテンプレート