はじめてのCUDAプログラミング
サポート情報
最終更新2011年01月19日

■ 本書サポート情報

 ●2011年01月19日追加分
「第1版第4刷」の訂正箇所は、こちらをご覧ください。
「第1版第2刷」および「第1版第3刷」の訂正箇所は、こちらをご覧ください。
「初版(第1版第1刷)」の訂正箇所は、こちらをご覧ください。

■サンプル・プログラムのダウンロード(2009年11月19日)

 「はじめてのCUDAプログラミング」の中で解説しているサンプル・プログラムです。
 Linux/Windows/MacOSに対応してコンパイル、実行できるようになっています。

サンプル・プログラムを実際に動かしながら本書を読むことをお勧めします。


 Windows 版のサンプル・プログラムの利用ついては、以下の補足説明(PDF)を参照してください。
[Windows 版を利用する場合のインストールについての補足説明(pdf)]


 第8.1 節サンプル・プログラム1 …メモリへのアクセス
Windows Linux Mac(CUDA2.2用) Mac(CUDA2.3用)
 第11.2節〜第11.7節サンプル・プログラム2 …粒子計算1
Windows Linux Mac(CUDA2.2用) Mac(CUDA2.3用)
 第11.8節サンプル・プログラム3 …粒子計算2
Windows Linux Mac(CUDA2.2用) Mac(CUDA2.3用)
 第12.2節サンプル・プログラム4 …拡散方程式(シェアード・メモリの利用無)
Windows Linux Mac(CUDA2.2用) Mac(CUDA2.3用)
 第12.3節サンプル・プログラム5 …拡散方程式(シェアード・メモリの利用)
Windows Linux Mac(CUDA2.2用) Mac(CUDA2.3用)
 第12.4節サンプル・プログラム6 …拡散方程式(シェアード・メモリの節約)
Windows Linux Mac(CUDA2.2用) Mac(CUDA2.3用)
 第12.5節サンプル・プログラム7 …拡散方程式(レジスタの利用)
Windows Linux Mac(CUDA2.2用) Mac(CUDA2.3用)



■訂正(2011年01月19日)
「第1版第4刷」の訂正箇所は、下記の通りです。 

●正誤表


p.130 プログラム文 2行目
set CUDA_PROFILE=prof.conf
set CUDA_PROFILE_CONFIG=prof.conf


■訂正(2010年12月03日)
「第1版第2刷」および「第1版第3刷」の訂正箇所は、下記の通りです。

・p.4 解説図および解説文を以下のように変更いたします。
P.4

●正誤表

レイノルズ数が「3000」の計算を、「768×384×384」という…
レイノルズ数が「13000」の計算を、「2000×1000×1000」という…

・P.6 解説文
58GPUを使うと7.2TFlopsにも達する。スパコンの7000CPUで計算…
60GPUを使うと10TFlopsにも達する。東京工業大学・学術国際情報センターのスパコン、「TSUBAME1.2」のOpteron CPU 10000 Coreで計算…
消費電力を「1/100」以下に…
消費電力を「1/50」以下に…

・p.27 表部分
※2命令同時実行の場合
※※3命令同時実行の場合
※積和演算命令のみを実行の場合
※※積和演算命令 + 乗算命令を実行の場合

 p.37 上から1行目
配列「f_d[n]」
配列「f_h[n]」

 p.39 -maxrregcount<N> 説明文
このことにより、このことにより…
このことにより、…

 p.164 下から2行目
Elapsed Time= 2.956e+00 [sec]
Elapsed Time= 2.275e-01 [sec]

・p.165 上から3行目
Elapsed Time= 5.923e+02 [sec]
Elapsed Time= 3.716e+01 [sec]

・p.165 上から5行目
「CPU」より200倍も…
「CPU」より163倍も…

・p.165 下から1行目
何と1557倍も速く…
何と976倍も速く…

・p.180 プログラム部分10行目
int ny, /* grid number in the x-direction */
int ny, /* grid number in the y-direction */

・P193 図12.11

・P194 図12.12

・p.195 プログラム部分10行目
int ny, /* grid number in the x-direction */
int ny, /* grid number in the y-direction */

・p.203 プログラム部分13行目
int ny, /* grid number in the x-direction */
int ny, /* grid number in the y-direction */

・p.204 プログラム部分12行目
blockIdx.y == gridDim.y - 1
blockDim_y*blockIdx.y+jy == ny - 1
または、
blockIdx.y == gridDim.y - 1 && jy == blockDim_y - 1

・p.204 プログラム部分(下部)
__syncthreads();

fn[j-nx] = c0*(fs[j1][js - 1] + fs[j1][js + 1])
  + c1*(fs[j0][js] + fs[j2][js])
  + c2*fs[j1][js];

j += nx;
__syncthreads();

fn[j-nx] = c0*(fs[j1][js - 1] + fs[j1][js + 1])
  + c1*(fs[j0][js] + fs[j2][js])
  + c2*fs[j1][js];

__syncthreads();

j += nx;

・p.205 1〜2行目
 また、「シェアード・メモリ」に書き込みを行なったら、読み出す前に必ず「__syncthreads( );」を入れる鉄則も忘れてはいけません。
 「シェアード・メモリ」を介してのスレッド間でデータのやり取りを確実に行なうためには、スレッド間の同期をとることが大切です。
 「__syncthreads();」を入れることで、すべてのスレッドが「シェアード・メモリ」にデータを書き込み終わっていることを確認します。
 また、すべてのスレッドが「シェアード・メモリ」からデータを読み終わってから、次に「シェアード・メモリ」に書き込みを行なうまでの間にも、「__ syncthreads();」が必要です。
 ここで同期をとらないと、「シェアード・メモリ」のデータを読み終わる前に、次のデータで書き換えられてしまう可能性があるからです。

・p.209 プログラム部分12行目
int ny, /* grid number in the x-direction */
int ny, /* grid number in the y-direction */

・p.209 プログラム部分下から4行目
blockIdx.y == gridDim.y - 1
blockDim_y*blockIdx.y+jy == ny - 1
または、
blockIdx.y == gridDim.y - 1 && jy == blockDim_y - 1

■訂正(2009年11月20日)
「初版(第1版第1刷)」の訂正箇所は、下記の通りです。

●正誤表


・p.47 プログラム部分
a.y = 10:
b.y = 8:
a.y = 10;
b.y = 8;

・p.48 プログラム部分(上から2つ目)
a.y = 1:
b.y = 1:
a.y = 1;
b.y = 1;

・p.48 プログラム部分(上から3つ目)
a.y = 10:
b.y = 8:
a.y = 10;
b.y = 8;

・p.48 プログラム部分(上から5つ目)
a.y = 10:
b.y = 8:
a.y = 10;
b.y = 8;

・p.58 下段プログラム部分
「 __shared__ 」のアンダーライン( _ )は、2回入力しています。

・p.59 上段プログラム部分
「 __shared__ 」のアンダーライン( _ )は、2回入力しています。

・p.72 表 「SFUの関数」部分
各関数のアンダーライン( _ )は、2回入力しています。

・p.81 プログラム部分
Db(16, 16)
Db(16, 16);

・p.123 下段
CUDA Visual Profile
CUDA Visual Profiler

・p.124 図の説明文
CUDA Visual Profile
CUDA Visual Profiler

・p.187 プログラム部分
f[j-1] f[j+nx]…
f[j-1], f[j+nx]…

・p.187 プログラム部分
f[j] f[j+nx+1]…
f[j], f[j+nx+1]…

・p.205 上から2行目
「__syncthreads();」のアンダーライン( _ )は、2回入力しています。

(株)工学社 第二I/O編集部


本書の内容に関するご質問/お問い合わせは、次の方法で工学社編集部宛にお願いします。

  1. 返信用の切手を同封した手紙
  2. 往復はがき
  3. FAX 03-5269-6031
  4. E-mail 問い合わせフォーム

なお、電話によるお問い合わせはご遠慮ください。

※ご質問/お問い合わせの際、お客様の使用・動作環境などに添えて、具体的な症状をできるだけ詳しくお知らせください。
※FAXでのご質問/お問い合わせの場合は、必ずお客様のFAX番号を明記してください。


戻る