C#によるOpenCL並列プログラミング
- 著者 北山 洋幸
- 判型 B5変型, 336頁
- 本体価格 3,200円
- ISBN 978-4-87783-297-1
2012年11月10日 初版第1刷発行
本書について
本書は並列プログラミング規格のひとつであるOpenCLをC#から利用する方法を紹介する書籍です。対象読者のレベルは「入門者~中級者」を考えています。初歩的なプログラムも示しますが、基本的にOpenCLの基礎は習得済みのプログラマを対象にします。
OpemCLはプラットフォームや開発環境に依存しない並列プログラミングの規格です。ヘテロジニアスな環境を前提にしているため、スレッドやOpenMPなどに比べ若干手続きが面倒です。
巷には、いくつかの便利なOpenCLラッパーが存在します。単にC#からOpenCLを利用したい人は、そのようなラッパーを使うのもよいでしょう。ただし、そのようなラッパーを使用すると、開発を途中でストップした(する)もの、メンテナンスを頻繁に行わないもの、あるいは情報を十分に提供しないものなどが少なくありません。OpenCL APIをラップするのは、それほど難しいことではなく、APIの数も多くはありません。ですので、自身でラッパーを作った方がメンテナンスやラッパーの拡張へ柔軟に対応できます。
本書では、APIラッパー関数作成まで解説しますが、クラスにまとめる部分は割愛しました。なぜかというと、本書で紹介したAPIラッパー関数を参考に、OpenCL用のクラスを開発するのは難しくないと判断したからです。また、クラスを開発すると、OpenCLの説明以前にクラスの説明を行わなければならず、書籍としてのフォーカスが不明瞭になります。
本書の対象読者は、
● C#からOpenCLを利用したい人
● OpenCLプログラミング入門書を読み終え、高速プログラミングに挑戦したい人
● 並列プログラミングの初級者〜中級者
です。
目 次
- 第1章 はじめてのプログラム
- 1-1 ソリューションの作成
- 1-2 プラットフォーム数を表示するプログラム
- 1-3 プロフィールを表示するプログラム
- 第2章 開発環境とインストール
- 2-1 AMD社開発環境の構築
- 2-2 Intel社開発環境の構築
- 2-3 NVIDIA社開発環境の構築
- 第3章 はじめての実用的なプログラム
- 3-1 配列の乗算プログラム
- 3-2 カーネルプログラムを分離
- 3-3 データ並列
- 3-4 カーネルの引数にコンスタント
- 第4章 C#とDLL間のデータ交換
- 4-1 マネージプログラムとアンマネージプログラム間のデータ交換
- 4-2 マネージからアンマネージへデータを渡す
- 4-3 アンマネージからマネージへデータを返す
- 4-4 文字列の受け渡し
- 4-5 構造体の受け渡し
- 4-6 配列の受け渡し
- 第5章 OpenCL APIラッパー
- 5-1 APIをラップ
- 5-2 カーネルの引数にコンスタント
- 5-3 二次元配列
- 第6章 移動平均
- 6-1 移動平均とは
- 6-2 C#で移動平均
- 6-3 タスク並列による移動平均
- 6-4 データ並列による移動平均
- 6-5 ベクタ型・タスク並列による移動平均
- 6-6 ベクタ型・データ並列による移動平均
- 第7章 二次元データ処理と画像処理
- 7-1 画像ファイル処理
- 7-2 簡単な画像処理プログラム
- 7-3 簡単なフィルタプログラム
- 7-4 イメージオブジェクトで画像処理
- 7-5 複数のカーネル
- 7-6 座標変換
- 第8章 ワークグループの基礎
- 8-1 通常のプログラムとの比較
- 8-2 ワークグループ分割
- 8-3 ワークグループとワークアイテムの関係
- 8-4 ローカルIDからグローバルIDを算出