2005/12/20 数値解析学と演習 福井 先生 [トピックス] == 数式処理 これまでやってきたのは数値処理、これと異る手法としして、数式処理がある 数値処理 全ての数は、(それがどのような数であれ、範囲内であれば) 固定長 32 bit Integer 型 -2^{32} 〜 2^{32}-1 32 bit Float 型 10^{-38} 〜 10^{38} 例 a x^2 + b^x + c = 0 という「数式」を、三つの変数 a 1.0 b -2.0 c 1.0 で表現する ( 32 bit x 3 つ )。 具体的な「数値」が与えられないと処理できない 答も、具体的な「数値」になる。 数式処理 数式を、その表現のままに扱う a x^2 + b^x + c = 0 [a][*][x][^][2][+][b][^][x][+][c][=][0] 数値計算では、同じ意味を持つ aa xx^2 + bb^xx + cc = 0 # aa, bb, cc の三つの数に、それぞれ 32 bit だけ必要 も数式処理では、異るサイズになる。 [a][a][*][x][x][^][2][+][b][b][^][x][x][+][c][c][=][0] 「数式」を「数式」のままに扱うので、結果も「数式」にできる a * x^2 - 2 a x + a => a ( x - 1 )^2 数式処理の振舞い 数式のままに扱うので、途中の計算において、数式が複雑になる # 数値計算ではそのようなことはない # 入力と出力が同じ 数式処理言語 MACSYMA (MIT) # 一番よいが、高い ## 普通の大学生より、積分ができる ### パターン(公式集)を全て記憶している #### パターン認識の能力に優れている REDUCE (ユタ大) # free で入手可能 MAPLE (カナダ) SMP (カリフォルニア、物理系の先生) 高次元の項目を無視することにより計算を高速化 # 数学的には怪しい所がある Mathematica はこの系列 特殊な関数の計算を行うと原点の周りは速い テーラ展開しているので.. 数値計算と数式処理 数値計算では、誤差がさけられない / 速い 数式処理では、メモリが不足してしまう / 遲い # 互いに補える可能性がある 両方の良い所取りをする [例] テンソルの展開 テンソルを式に展開するときは、数式処理で 実際の計算をする場合は、数値処理で == 並列計算 理学系の人は、計算結果がでるのに半年かかっても我慢できる 工学系の人は、一日、長くても 1 week ないじゃないとだめ 結果が出ないと、製品が作れない !! => 計算を高速化するための仕組が必要 [速度の変化] 1975 年の super computer CRAY-1 80 M Hz 2005 年の Note-PC 1 G Hz # 今の方が 100 倍速い 高速化の原理 半導体の小型化 電子の速度で速度が決る 小ければ小さい程速い しかし、この方法では限界が.. # 「ムーアの法則」 18 〜 24 ヶ月で、集積度が 2 倍になる 集積度の向上 2 個以上のプロセッサを利用して並列化する # 荷物を運ぶのに、一人でやれば一日、二人でやれば半日 # ただし、仕事に独立性があれば.. だが.. # 独立性がなければ並列化はできない # A, B が独立 -> 別々に実行 # B が A に依存 -> 一度に一つしかできない ( プロセッサが二つあっても一方は仕事ができない.. ) # いかに独立性を探すかが鍵 ( 偏微分方程式などは、元々、独立性がある.. ) ## Microsoft も数値計算の並列化を行う 並列処理計算機の色々な設計 ( アーキテクチャ ) SMP ( 複数のプロセッサーが一つのメモリを共有している ) 共有メモリー型 扱いやすいが高価 +---+ +---+ +---+ +---+ | P | | P | | P | | P | +---+ +---+ +---+ +---+ | | | | +---------------------+ | M | +---------------------+ 複数の PC を Network で継ぐ ( PC クラスタ ) 個々の Processer は、自分の Memory だけを見ることができるが他の Memory は (直接には.. ) 見ることができない 分散メモリー型 安く作れる 他の Processer の情報を得るために通信が必要 扱いにくい 遲い 自分の Memory への Access 速度 100 n sec 他の Memory へのの Access 速度 1 m sec # 10^4 の隔差がある !! >---------------------< | | | | +---+ +---+ +---+ +---+ | P | | P | | P | | P | +---+ +---+ +---+ +---+ | | | | +---+ +---+ +---+ +---+ | M | | M | | M | | M | +---+ +---+ +---+ +---+ 分散共有メモリ型 ( 上記の二つの中間 ) 近いメモリは高速にアクセスできる 遠いメモリもそれほど遅くない +---+ +---+ +---+ +---+ | P | | P | | P | | P | +---+ +---+ +---+ +---+ | | | | >---------------------< | | | | +---+ +---+ +---+ +---+ | M | | M | | M | | M | +---+ +---+ +---+ +---+ == 重力計算を並列計算の例 ( ブラックホールの計算 ) ブラックホール 重力が強すぎて、光(最も速い..)も外に出られない星 密度が大きい / 量がおきい (普通の星とちがって..)光を出さないので、発見が難しい ( 闇夜のカラス ) 近くにガスがあると、それを引き込む # cf. 東京観測天文所のデータ 引き込まれる時に強い X 線を放出する この X 線を観測して、ブラックホールを発見する == 昔の計算機の写真 情報処理学会の記念展示