OpenCL入門 GPU&マルチコアCPU 並列プログラミング

概 要

眠れる演算パワーを引き出すマルチコアCPU・GPU並列計算の標準フレームワーク「OpenCL」の入門書です。OpenCL(Open Computing Language)は、GPUやマルチコアCPUなどの計算デバイスを使って、並列コンピューティングをおこなうための、標準化されたフレームワークです。本書は、既存のアルゴリズムやあなたの作成したアルゴリズムを、OpenCLフレームワークに実装するために必要な情報をやさしく詳細に解説しています。次世代の演算パワーをあなたのプログラミングに! MacOS、Windows、Linuxに対応した内容です。

著者 奥薗隆司
価格 本体3500円(税別)
ISBN 978-4-7980-2608-4
発売日 2010/5/12
判型 B5変
色数 1色
ページ数 432
CD/DVD
対象読者 中級
シリーズ
表紙イメージ
購入 アマゾンで購入する
楽天で購入する

※リンク先によっては、販売ページが用意されていないことがあります。あらかじめご了承ください。

新しいウィンドウで開く 書籍購入のご案内

サポート

サポート情報は以下からご参照下さい。

サポート情報へのリンク

目次

Chapter 01 OpenCL概論

1.1 並列コンピューティングとは

1.1.1 逐次実行と並列実行

1.1.2 データ並列性

1.1.3 フリンの分類

1.1.4 並列プログラミングモデル

1.2 OpenCLとは

1.2.1 OpenMP

1.2.2 GPGPU

1.2.3 OpenCL

Chapter 02 OpenCLアーキテクチャ

2.1 プラットフォームモデル

2.1.1 OpenCLデバイス

2.2 実行モデル

2.2.1 ホストプログラムとカーネル

2.2.2 インデックス空間

2.2.3 コンテキスト

2.2.4 コマンドキュー

2.3 メモリモデル

2.4 プログラミングモデル

2.4.1 同期

Chapter 03 はじめてのOpenCLプログラム

3.1 環境設定

3.1.1 Mac OS X

3.1.2 Windows

3.2 OpenCLプログラムの作成

3.2.1 はじめてのOpenCLプログラム(MacOS編)

3.2.2 はじめてのOpenCLプログラム(Windows編)

3.2.3 プログラムについて

Chapter 04 OpenCLプログラムの作成手順

4.1 サンプルプログラム

4.2 ループの並列化

4.3 カーネル関数

4.4 ホストプログラム

4.4.1 コンテキストの作成

4.4.2 デバイスの取得

4.4.3 コマンドキューの作成

4.4.4 プログラムオブジェクトの作成

4.4.5 プログラムのビルド

4.4.6 カーネルの作成

4.4.7 メモリオブジェクトの作成

4.4.8 カーネルに渡す引数の設定

4.4.9 カーネルの実行

4.4.10 結果の取得

4.4.11 リソースの解放

4.4.12 完全なソースコード

Chapter 05 OpenCLプログラム例

5.1 ビットマップクラス

5.1.1 ファイル

5.1.2 メソッド

5.1.3 制限

5.1.4 ソースコード

5.2 数値計算

5.2.1 アルゴリズム

5.2.2 画面へのマップ

5.2.3 プログラムの説明

5.2.4 OpenCLを使わない実装

5.2.5 OpenCLを使った実装

5.2.6 実行例

5.2.7 完全なソースコード

5.3 画像処理

5.3.1 OpenCLを使わない実装

5.3.2 OpenCLを使った実装

5.3.3 実行例

5.3.4 完全なソースコード

5.3.5 イメージメモリオブジェクトを使う

Chapter 06 デバッグと性能評価

6.1 カーネルのデバッグ

6.1.1 カーネル実行ログの記録

6.2 コマンドのプロファイリング

6.2.1 コマンドのステータス

6.2.2 プロファイル情報

6.2.3 ソースコード

6.3 時間計測クラス

6.3.1 クラスの仕様

6.3.2 使用例

6.3.3 クラスの実装

6.3.4 MacOS

6.3.5 Linux

6.3.6 Windows

Chapter 07 OpenCL API

7.1 プラットフォーム関連

7.1.1 clGetPlatformIDs

7.1.2 clGetPlatformInfo

7.1.3 clGetDeviceIDs

7.1.4 clGetDeviceInfo

7.2 コンテキスト関連

7.2.1 clCreateContext

7.2.2 clCreateContextFromType

7.2.3 clRetainContext

7.2.4 clReleaseContext

7.2.5 clGetContextInfo

7.3 コマンドキュー関連

7.3.1 clCreateCommandQueue

7.3.2 clRetainCommandQueue

7.3.3 clReleaseCommandQueue

7.3.4 clGetCommandQueueInfo

7.3.5 clSetCommandQueueProperty

7.4 メモリオブジェクト関連

7.4.1 clCreateBuffer

7.4.2 clCreateImage2D

7.4.3 clCreateImage3D

7.4.4 cl_image_format

7.4.5 clRetainMemObject

7.4.6 clReleaseMemObject

7.4.7 clGetSupportedImageFormats

7.4.8 clEnqueueReadBuffer

7.4.9 clEnqueueWriteBuffer

7.4.10 clEnqueueCopyBuffer

7.4.11 clEnqueueReadImage

7.4.12 clEnqueueWriteImage

7.4.13 clEnqueueCopyImage

7.4.14 clEnqueueCopyImageToBuffer

7.4.15 clEnqueueCopyBufferToImage

7.4.16 clEnqueueMapBuffer

7.4.17 clEnqueueMapImage

7.4.18 clEnqueueUnmapMemObject

7.4.19 clGetMemObjectInfo

7.4.20 clGetImageInfo

7.5 サンプラーオブジェクト関連

7.5.1 clCreateSampler

7.5.2 clRetainSampler

7.5.3 clReleaseSampler

7.5.4 clGetSamplerInfo

7.6 プログラムオブジェクト関連

7.6.1 clCreateProgramWithSource

7.6.2 clCreateProgramWithBinary

7.6.3 clRetainProgram

7.6.4 clReleaseProgram

7.6.5 clBuildProgram

7.6.6 clUnloadCompiler

7.6.7 clGetProgramInfo

7.6.8 clGetProgramBuildInfo

7.7 カーネル関連

7.7.1 clCreateKernel

7.7.2 clCreateKernelsInProgram

7.7.3 clRetainKernel

7.7.4 clReleaseKernel

7.7.5 clSetKernelArg

7.7.6 clGetKernelInfo

7.7.7 clGetKernelWorkGroupInfo

7.7.8 clEnqueueNDRangeKernel

7.7.9 clEnqueueTask

7.7.10 clEnqueueNativeKernel

7.8 イベントオブジェクト関連

7.8.1 clWaitForEvents

7.8.2 clRetainEvent

7.8.3 clReleaseEvent

7.8.4 clGetEventInfo

7.9 同期コマンド関連

7.9.1 clEnqueueMarker

7.9.2 clEnqueueWaitForEvents

7.9.3 clEnqueueBarrier

7.10 その他

7.10.1 clGetEventProfilingInfo

7.10.2 clFlush

7.10.3 clFinish

Chapter 08 OpenCL Cプログラミング言語

8.1 データ型

8.1.1 組み込みスカラーデータ型

8.1.2 組み込みベクターデータ型

8.1.3 その他の組み込み型

8.1.4 予約済みデータ型

8.2 ベクター型の使い方

8.2.1 ベクターデータの作成

8.2.2 要素へのアクセス

8.2.3 ベクターの演算

8.3 変換と型のキャスト

8.3.1 暗黙の型変換

8.3.2 型のキャスト

8.3.3 明示的な型変換

8.3.4 飽和演算修飾子

8.3.5 丸めモード修飾子

8.3.6 ビットパターンの再解釈

8.4 演算子

8.4.1 二項算術演算子 ( +, -, *, /, %)

8.4.2 増分および減分演算子 ( ++, -- )

8.4.3 関係演算子 ( > , <, >=, <= ) と等価演算子 ( ==, != )

8.4.4 ビット単位の演算子 ( &, |, ^, ~ )

8.4.5 論理演算子 (&&, ||, !)

8.4.6 三項演算子 ( ? : )

8.4.7 ビット単位のシフト演算子 ( >>, << )

8.4.8 sizeof演算子

8.4.9 代入演算子 (=)

8.5 修飾子

8.5.1 アドレス空間修飾子

8.5.2 イメージアクセス修飾子

8.5.3 関数修飾子

8.5.4 アトリビュート修飾子

8.6 プリプロセッサディレクティブとマクロ

8.6.1 定義済みマクロ

8.7 制限

8.7.1 ヘッダ

8.7.2 アドレス空間に関する制限

8.7.3 __kernel関数に関する制限

8.7.4 イメージメモリオブジェクトおよびサンプラーに関する制限

8.7.5 組み込み変数

8.7.6 記憶クラス指定子

8.7.7 サポートされない機能

8.8 組み込み関数

8.8.1 ワークアイテム関数

8.8.2 数学関数

8.8.3 整数関数

8.8.4 共通関数

8.8.5 幾何関数

8.8.6 関係関数

8.8.7 ベクターデータのロード・ストア関数

8.8.8 イメージ関数

8.8.9 同期関数

8.8.10 メモリフェンス関数

8.8.11 非同期メモリコピー関数

PR

秀和システム