2005/01/18 解析学とコンピュータ # 今日と、次回の二回 トピック : 数式処理と、並列処理 # 数式処理は、現在、それほど話題になっていない。 ## 小林先生や、竹島先生は、数式処理仲間 数式処理の必要性 数値計算では、誤差が入ってしまう。 解析的に解ければよいのだが.. 数式処理と数値計算では、得意な分野が異る。 上手に協力して.. # 例 : テンソル ( 原子力 ) の計算 # 式で書くと簡単 / 計算するときには長い式になる # => 式の展開を ( 人間が間違えないように.. ) 数式処理で、行わせる ( 数式処理的には、本質的な話ではないが、実用上では重要.. )。 式の変形 ( 数式処理でできるところ ) 展開 ( エントロピーの増大 / ばらす ), 微分 人間でも、計算機でも簡単だし、数式処理的にも難しくない 因数分解 ( エントロピーの減少 / まとめる ), 積分 数式処理でも難しい部分で、人間の Know How を取り込む必要がある 数値計算との絡みでは、展開が役立つことが多い # おどるロボット例 # 腕の動きなどは、マトリックスの展開 # 式の展開の意味で役立っている # 工業ロボット ( 人間ににていないロボット ) # # 役立っている # やはり、マトリックスの計算 == 講義で行ってきた内容 => 計算 ( 固有値, 連立方程式の解法 ) 計算のみならず、その前後の処理が重要 現在の計算機はとても速い 大変の量の計算結果が得られる 計算結果を人間の目で視るのは非現実的な状態になっている 目的は計算ではなく、その結果を評価すること => 人間に ( 計算結果を ) 認識させる技術 => 可視化 # 単なる可視化だけでは不十分 モデル化 / 離散化 / アルゴリズム 等々の計算の前準備も重要 モデル化 どのような方程式 ( 偏微分方程式.. ) を解くか ? 方程式を作るという作業 ( 作れるという保証もないが.. ) # 結果をどこまで知りたいかによって、方程式が異る ## ヨーヨーのシミュレーション ## 単なる質点か ? ## 糸の巻き付きの影響は ? ## 空気抵抗は ? ## => ここでも数式処理が利用できる.. 離散化 差分方程式 アルゴリズム, 計算 : この講義で主に学んだこと == 全て、数式処理でできれば、嬉しいのだが.. 現実には、メモリーと速度の問題で、やってられない。 例 : ガウスの消去法 数値計算ならば N x N の領域で十分 => 計算の途中で、一つのデータの大きさが変らない 数式処理の場合は、一つの項目のサイズが変ってしまう # 一般には計算すればするほど、長くなる どんどん、サイズが大きくなる 項目のサイズが大きくなると計算も時間がかかる # Lisp ( reduce/maple/mathematica/Macsyma/etc .. ) ## 数式処理の途中でメモリがたりなくなって.. 数式処理は、大きな問題にむいていない # 筑波の佐々木先生 : 数値計算で結果を予想して、数式処理 Mathematica のグラフィック機能 計算結果の概要を知るには便利 # But: テーラー展開しかしていないので、原点から遠い所で誤差が沢山でる Macsyma : MIT ( 積分が得意 : 一番かしこい ) Reduce ( ユタ大学 / 後藤英一先生, 東大の金田先生 ) Source が公開されているので、変更ができるのが嬉しい SMP : 物理屋さん向け => Mathematica へ 高次の項目を捨てる処理がある 物理的には問題ないが、数学的にはちょっと.. == モデル化 離散化 アルゴリズム 計算 可視化 (結果の検証) == 結果の検証 普通は、実験と比較するのだが.. 実験そのものが難しい ( 地震をおこして、建物を壊すの ? ) 実験ができても、きちんと測定することも難しい => センサーを入れると、結果が異ってしまう。 # 作った途端に、壊れた橋 ( タコス ) の例がある # 安全係数をかければよいのだが.. # 過ぎると、動かなくなる ( 飛べない飛行機.. ) == 並列処理 ( 今日、明日と、東大で、HCP のシンポジュームが開かれている ) トランジスタが速くなれば、速い計算機が作れるようだが.. 既にのトランジスタを分離する絶縁体の厚さが原子数個の所まできている => 量子効果により、これ以上、薄くできない.. ( 物理的限界 ) 個々の速度は遅くても、多くの計算機で並列に計算行えば、高速化できる => 完全に分割できる仕事と分割できない仕事がある # 試験の採点は個々でよいが、平均の計算は分割できない 並列処理の問題 ( 処理の能力の向上が目的 ) 全ての計算が並列化できない所 並列処理の目的 大規模計算を解きたい cf. IBM ブルージーン/L http://hotwired.goo.ne.jp/news/news/technology/story/20040930302.html 地球シミュレータ http://www.es.jamstec.go.jp/esc/jp/ 気象の計算をしたかった ( リチャードソンの夢 ) 計算機がなかった時代 人間を円形に並べて、人間が Node になって並列計算 プロセッサーの熱問題 プロセッサーのクロックが上ると熱を出す 集積度が進むと、電気が漏れてしまう 共に熱量をふやす原因 高速化をするには... 電圧 (V) を上ればよい => 熱 ( W = AV = V^2/R ) スピードを 2 倍にすると、熱は 4 倍 逆に、電圧を 1/2 (熱 1/4) にして、プロセッサーを 2 倍にすれば、 処理能力は、ほぼ同じで、熱は 1/2 になる == みんなが、並列計算をするには ? どうやって、並列処理をするの ? PC を二台あれば.. 別々に計算して、後で合せる cf. πの計算 ( 級数の各々の項目を計算し、最後に和を求める ) 一つの問題で複数のパラーメータの場合計算をする 今の CPU は、元々並列の機能をもっている コンパイラの自動並列化にまかせれば、一応、並列計算にしてくれるが.. ただ、結果は、×か△ ( あまりかしこくない.. ) ディレクティブ ( コンパイラに並列固有の命令を指定する ) を入れる => OpenMP コンパイラが並列化するかどうかを判断できない場合 人間がコメントの形で、並列化を指示する MPI ( Message Passing Interface ) プロセッサーが何台かあること想定して、サブルーティンで、(他の CPU に.. ) メッセージを送る形に.. # プロセッサー間のメッセージ通信の規格 ( もともとは PVM から.. ) プログラムを作成するのは大変 # プログラマが、並列計算を意識する必要がある 並列化のためにプログラムの変更が必要 # 現実的には、最後の二つ ディレクティブ方式は、遲い所から、並列化の指示をすればよい インクリメンタルな並列化 ( もぐらたたき的 ) MPI は、全部を書き換える必要がある HPF ( Hight Performance Fortran ) データの定義を行うことによって、高速化の手がかりにする # 使い方が難しい == コンパイラの話 世界のコンパイラの系列 イリノイ大学 ( OpenMP, KAP ) クック先生 ( インテル ) ライス大学 ( HPF ) == 並列化の粒度 : 「大きな塊でやるか、小さな塊でやるか」という話 マクロタスキング ( 粗粒度 ) サブルーティン単位 ... MPI など プログラムの中身を知らなくてもできる # 構造が判れば、並列化はそれほど難しくない マイクロタスキング ( 細粒度 ) do ループ単位 ... OpenMP など プログラムの中身を知らないとできない == 並列計算機の歴史 計算機屋が作りたく作ったシステムは失敗している CM-2 : アプリケーションが先行したシステム => 成功 CM-5 : 兎に角、1 T Flops 出したかった => 失敗 ケン=ウィルソン ( コーネル大学 ) # ノーベル物理学賞をとった => この人が拘った計算機の会社はすべて潰れた # IBM も 3090 でかかわっていたが直になくなった == 来週の補講で、まとめをする == 最後の講義の内容は、世の中の計算の流れにそって変っている 計算機業界は、本当に良いものが残るとは限らない # お金の要素が大きい ( 経営的な問題で.. ) == 試験について 後期は、固有値から前期と同じような問題 山はかけられる 問題を先輩から聴く ( 答は聴くな !! ) 試験は、講義の復習が目的 # 内容的には、範囲が広く、大雑把 ( 全部利用することはない ) # 自分の専門で使う場合の導入になっていればよいかと 新しい本を買う場合 本人のやっている部分だけが読める 良い本 : 宇野先生 ( 浅倉書店.. ) 伊理先生 ( 浅倉書店.. ) 色々なことがかいてある本は、孫引なので、理解しづらい 戸川先生の本は、理解りやすい 来回は、まとめをする 講義を聞いている人は問題ないはず.. # 内容を聞いて、直に解るとは限らない ( 発酵する時間が必要 ) # 後から、理解を進めるために、もう一度まとめを行っている == 数値計算の表現形式 今は IEEE 昔は IBM Format ( 日立のミニコン ) 演習環境 : ミニコン => WS => PC 言語 : Fortran => C 言語 == 来年 : カリキュラムが変更される => 教科書を変更する