contents memorandum はてな

目次とメモを置いとく場

『数値処理プログラミング[岩波講座ソフトウェア科学 9]』(津田孝夫 岩波書店 1988)

著者:津田 孝夫[つだ・たかお](1932-) 情報工学(スーパーコンピューティング、オペレーティングシステム、自動ベクトル化/並列化コンパイラ)。
シリーズ編集委員:長尾 真、前川 守川合 慧所 眞理雄米澤 明憲
シリーズ:岩波講座 ソフトウェア科学;9
装幀:国東 照幸
NDC:007.63 コンピュータ システム.ソフトウェア


数値処理プログラミング - 岩波書店

 ソフトウェアの作成は人間的な作業で,信頼性や生産性の点でいまだに手工業の域にある.こうした現状をふまえ,ソフトウェア作成の方法を示すとともに,その理論と知識を整理し,新しい学問体系として提示する.
 数値処理のアルゴリズム、プログラミングと実践的なソフトウェア技術を、基礎から最先端までやさしく解説する。典型的な数値処理の手法について特に詳しく述べ、新しく書き下ろした高性能プログラムを性能評価つきで示した。全体としてスーパーコンピュータに重点をおいているが、掲載したプログラムは汎用機上で実行しても性能のよいものである。

【目次】
ソフトウェア科学を学ぶために(編集委員) [v-viii]
まえがき(1988年10月 津田孝夫) [ix-x]
  なぜ,数値処理プログラミングを学ぶのか
  背景としてのソフトウェア科学
  本書をどのように読めばよいか
  著者から読者へ
学習の手引き [xi-xiii]
目次 [xv-xx]


1 数値処理の環境
1.1 数体系としての浮動小数点数 002

1.2 桁落ちと情報埋没 005

1.3 数値不安定性 010
  (a)常微分方程式の例 11
  (b)偏微分方程式の例 13

1.4 入力データに対する敏感さ 023

1.5 計算結果は正しいか 026
  (a)誤差の種類 26
  (b)後退誤差解析のねらい 28
  (c)後退誤差解析の例 29

1.6 数値処理とプログラミング言語 033
  (a)プログラムのしやすさと読みやすさ 33
  (b)実行速度 34
  (c)プログラミング言語間の仕様上の違い 35
  (d)サブルーチンライブラリ 36

1.7 数値処理プログラムの満たすべき条件 042

第1章のまとめ 046
演習問題1 047


2 ベクトルスーパーコンピュータの構成と機能
2.1 ベクトルスーパーコンピュータ 050
  (a)パイプライン処理 50
  (b)並列多重パイプライン方式 53
  (c)ベクトルスーパーコンピュータの性能 55
  (d)主記憶からのデータ供給能力 58
  (e)ベクトル処理ユニットとスカラ処理ユニット 60
  (f)外部記憶と拡張記憶 65

2.2 ベクトルプログラミング 67
  (a)演算パイプ並列動作の最大化 68
  (b)主記憶アクセスの最適化 69
  (c)その他の注意 72
  (d)チューニングとその支援ソフトウェアツール 73

2.3 ベクトルアルゴリズム 74
  (a)行列積 74
  (b)回帰演算の回避 79

第2章のまとめ 85
演習問題2 86


3 連立1次方程式とLU分解
3.1 LU分解スカラアルゴリズム 88
  (a)ガウス消去法 88
  (b)ピボットの選択 90
  (c)スケーリング 91
  (d)LU分解 92
  (e)LU分解の理論的保証 94
  (f)解の反復改良 98
  (g)LU分解アルゴリズム 99
  (h)コレスキー分解 102
  (i)ガウス消去法の演算量 105

3.2 誤差とその推定 106

3.3 LU分解スカラプログラム 109

3.4 LU分解ベクトルアルゴリズム 118
  (a)内積形式および外積形式ガウス法 118
  (b)dクラウト法 123

3.5 LU分解ベクトルプログラム 126
  (a)LU分解ベクトルプログラム 126
  (b)プログラムの性能評価 130

3.6 大規模LU分解 131
  (a)大規模とは 131
  (b)データ転送量とアルゴリズムの選択 132
  (c)大規模LU分解ベクトルアルゴリズム 134

3.7 大規模LU分解ベクトルプログラム 137
  (a)大規模LU分解プログラム 137
  (b)プログラムの性能評価とまとめ 146

第3章のまとめ 149
演習問題3 149


4 補間と多次元データの平滑化
4.1 補間 152
  (a)補間とは 152
  (b)ラグランジュ多項式補間 152
  (c)ニュートン多項式補間 154

4.2 Bースプラインとその差分商表現 156

4.3 Bースプラインによる補間 160
  (a)補間のための節点の追加 160
  (b)二つの条件 163
  (c)Bースプラインによる補間の例 164
  (d)deBoorーCoxのアルゴリズム 166

4.4 多次元データの平滑化 168
  (a)スプラインを用いた多次元データの平滑化 168
  (b)最小二乗法による平滑化 171
  (c)平滑化の評価規準 176
  (d)分点の決定法 178

4.5 多次元データ平滑化のベクトレアルゴリズム 178

4.6 多次元データ平滑化のプログラム 185

第4章のまとめ 217
演習問題4 217


5 高速フーリエ変換
5.1 高速フーリエ変換FFT)とは 220

5.2 外部多次元FFT 226
  (a)計算の流れ 227
  (b)ページ構成とアルゴリズム 228

5.3 外部多次元FFTのベクトルプログラム 233

5.4 孤立系3次元ポテンシャル場の解法 242

第5章のまとめ 246
演習問題5 247


6 常微分方程式・数値積分と方程式の根
6.1 常微分方程式に対するルンゲ‐クッタの公式 250

6.2 数値積分におけるロンバーグの方法 254

6.3 方程式の根を求めるベルヌイとニュートンの方法 260

第6章のまとめ 263
演習問題6 264


7 ソーティング
7.1 内部ソーティング 266
7.2 内部ソーティングアルゴリズム 267
7.3 内部ソティング用ベクトルプログラム 272

7.4 外部キーソーティング 281
  (a)外部キーソーティングの概念 281
  (b)最適化の目標 284

7.5 d log_w d法 284
  (a)アルゴリズム設計の考え方 284
  (b)ページフェッチ数 286
  (c)dがwのべキ乗でない場合 287
  (d)d log_w d法のアルゴリズム 288
  (e)外部基底法との違い 289

7.6 外部キーソーティングのスカラプログラム 290

第7章のまとめ 305
演習問題7 305


8 乱数の発生とモンテカルロ・シミュレーション
8.1 乱数の発生 308
  (a)合同法 308
  (b)最大周期列(M系列)の利用 312
  (c)一様乱数発生のベクトルアルゴリズム 315

8.2 モンテカルロ・シミュレーション 316
  (a)モンテカルロ・シミュレーションとは 316
  (b)モンテカルロ・シミュレーションの手続きの分解 317
  (c)モンテカルロ計算の精度の向上 319
  (d)確率モデルの等価変換 320

8.3 モンテカルロ・シミュレーションのベクトル化 323

第8章のまとめ 327
演習問題8 328


9 自動ベクトル化コンパイラ
9.1 自動ベクトル化の現状 330
  (a)自動ベクトル化の対象となる演算 330
  (b)自動ベクトル化の対象となるループ 331
  (c)IF文のベクトル化 331
  (d)飛び出しのあるループのベグトル化 332
  (e)多重DOループの自動ベクトル化 332

9.2 どのように自動ベクトル化するか 334
  (a)データ参照関係解析 335
  (b)制御関係解析 340
  (c)D行列処理 341

9.3 自動ベクトル化機能の拡大 342
  (a)多重ループのベクトル化 342
  (b)FORTRAN以外の言語の自動ベクトル化 343
  (c)拡張記憶の仮想化 343
  (d)S/V並列化 344

9.4 自動ベクトル化コンパイラV-Pascalの構成 344


第9章のまとめ 348
演習問題9 349


演習問題の解答 [351-353]
参考書 [355-359]
索引 [361-366]