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

本書には、以下のサポートがあります。

この本の書籍紹介ページへ

ダウンロード

以下をクリックすると、ダウンロードが始まります。
サンプルファイルのダウンロード
Windows用サンプルファイル
Samples_SJIS_dos.zip (47.5KB)
ダウンロード
Mac OS X, Linux用サンプルファイル
Samples_UTF8_unix.zip (48.9KB)
ダウンロード
ダウンロードファイルの説明テキスト
README.txt (3.73KB)
ダウンロード

※クリックしてもダウンロードが始まらないときは、右クリックして「対象をファイルに保存」で実行してください。

※データは圧縮形式になっています。解凍ソフトをご利用下さい。

新しいウィンドウで開きます  解凍ソフトダウンロード方法

 

正誤表

場所 訂正内容
はじめに、1行目
2ページ、6行目
12ページ、10行目

誤 …  OpenCL (Open Computer Language)

正 …  OpenCL (Open Computing Language)

Ⅷページ 目次
200ページ 4行目
200ページ 6行目

誤 …  6.2.2 プロファイル情報

正 …  6.2.2 プロファイリング情報

14ページ
本文 6~7行目

【訂正】
6~7行目の文『OpenCLの仕様はオープン標準であり、~手数料が発生します。』を以下の文と差し替えます。

OpenCLはオープンな標準規格であり、通常はデバイスベンダーなどが、定義されている仕様を実装してフレームワークを作成します。仕様を実装して製品(フレームワーク)を作っても、規格の使用料は発生しませんが、実装されたフレームワークがOpenCL準拠であると表示したり、ロゴや商標を使用するためには、実装が仕様に準拠していることを確認するためのテストに合格する必要があり、テストをおこなうためには手数料が発生します。詳細は、下記のクロノス・グループのウェブページを参照してください。

43ページ 6行目

誤 …  作成さます。

正 …  作成さます。

123ページ 11行目

誤 …  カーネルプログラムのソースコード(リスト 5.19)

正 …  カーネルプログラムのソースコード(リスト 5.17)

153ページ
33-36行目

リスト5.17のカーネル関数のパラメータにおいて、__global constをconstに変更

<誤>
calcMandelBrot(__global const int max_calc,
__global const float start_x,
__global const float start_y,
__global const float step,
__global int *out)

<正>
calcMandelBrot(const int max_calc,
const float start_x,
const float start_y,
const float step,
__global int *out)

173ページ 15行目
178ページ 18行目

誤 …  uint4 dstValue = (uint4)0;

正 …  float4 dstValue = (float4)0;

173ページ 19行目
178ページ 22行目

誤 …  dstValue += read_imageui(src_image, MySampler, coord);

正 …  dstValue += read_imagef(src_image, MySampler, coord);

173ページ 22行目
178ページ 25行目

誤 …  dstValue /= 9;

正 …  dstValue /= 9.0f;

173ページ 24行目
178ページ 27行目

誤 …  write_imageui(dst_image, (int2)(x, y), dstValue);

正 …  write_imagef(dst_image, (int2)(x, y), dstValue);

176ページ
26行目

"//リソースの解放" 直前の行に以下のコードを追加

// 画像データの取得
const size_t origin[] = {0, 0, 0};
const size_t region[] = {width, height, 1};
status = clEnqueueReadImage(queue,
dst_mem,
CL_TRUE,
origin,
region,
0, 0,
dstData,
NULL, 0, NULL);

if (status != CL_SUCCESS) {
ClHelper::printError(status);
throw MyError("failed to read image buffer", __FUNCTION__);
}