2004/01/13 今週は、トピックスの話 来週は、9 月以後のまとめを行って、おしまい。 == トピック 並列処理 数式処理 ( 問題を解くのに... ) 1 次元、2 次元は、なんとかなる。 3 次元は、メッシュを細かくすると、途端に、計算量が増えてしまう.. 時定数の異る現象の場合も問題 時定数の異る現象 周期の速い現象と遅い現象が同時におきると.. シミュレーション時間 遅い現象を捉えるために必要なので、長く取る 刻み幅 速い現象を捉えるために必要なので、短じかく取る必要がある。 共に、結果的に、計算量を増大させる方向に.. # 核融合の例 # 通常は、ゆっくりした変化 # 熱 (プラズマ状態) を維持するため、電子ビームを入れる # 細かい変化がおきる。 計算の結果がでるまでの時間 ある一定の期間内に収まらなければならない 人間の思考と対応できない i.e. 一日 ( できれば、半日程度、つまり、朝の入力結果が夕方出る、夕方には、次の実験を初め、翌朝結果がでている.. のが望ましい.. ) # 期間が長過ると、人間の方が分けがわからなくなる。 計算を高速にするには.. ? 半導体の高速化が本質だが、これには限界 ( 光の速度.. ) がある。 現実には、並列化しかない。 一つの仕事を複数の CPU で分割して行う。 # 仕事が独立したものに分割できるか ? 教室にある みんなの Note-PC で並列処理するには.. ? それぞれの Note-PC には、独立した CPU と memory があり、 LAN で、接続されている。 それぞれが独立するのでなく、共通の計算を行うので.. Memory が互いに独立 (直接参照できない..) なので、情報 交換 ( Message Passinge ) が必要になる。 Memory が別々なので、分散メモリー方式 複数の CPU が、同じ Memory を共有するように PC を構成することもできる。 情報交換が不要 ( Mmoery に直接書き込めばよい.. ) 共有メモリー方式 使う上では、共有メモリー方式が楽 ( だが.. ) CPU が同時に同じ Memory を書き込むことをさける仕組が必要 ( Memory Access Control のための仕組があり.. ) 基本的に高価になりやすい。 # CPU 数を増やす事に限界がある。 Address 空間が uniform なので、Program が書き易い。 分散メモリー方式の方は、普通の PC を繋ぐだけなので、易いし、簡単に、CPU 数を増やすことができる。 分散メモリー方式の方では、自分の Memory ( 50 n sec ) と、他人の Memory ( 数 m sec ) では、Access 速度に違いがありすぎる # 分散メモリか共有メモリかによって、得失が色々とある。 # 人間は、得手して、良いとこ取りをしようとする.. 分散共有メモりー型 自分の memory は、50n, 他人の Memory は、その数倍程度 クラスター型 # ここまでは、汎用 CPU の並列化 専用系の並列マシン 実施する計算を特定化することによって、よりコストパフォーマンスの良い並列化が可能になる GRAPE : 天体の問題を解くための専用計算機 並列化が上手く行くための条件 計算量に比較して、 通信回数が少い 通信量が少い 天体の問題は、この典型的な例 天体の個数を n とすると.. 各々の CPU の計算量は n^3 通信量は n 並列計算機を上手く利用するには.. 並列計算機で高速化できるためには、既存の Program を変更して、 並列計算機用に書き換える必要がある ( そうしないと速くならない.. ) # 並列化のためのソフト a) 自動並列化コンパイラーを使う 実際は、あまり上手く行かない b) OpenMP ( 共有メモリ型計算機用.. ) 並列化のためのヒントを、プログラマが ( プログラムとは別に..) 指示する # 指示の部分は、普通のプログラムのコメントとなるので、普通の計算機でも、そのまま動く。 # コンパイラは、「この部分を並列化しても問題ないかどうか」という判断ができない ( ので、自動化できない.. )。 c) MPI ( PVM ) : 分散メモリ用 メッセージやり取りの部分を並列化サブルーチンの形で提供 # 共有メモリ方式の方は、遅い部分だけ、並列化すればよいので、段階的に、並列化できる。分散メモリ方式は、全体を一挙にプログラムを変換する必要があり、大変。 == 数式処理 数値計算での限界 テンソルの計算 ( テンソルそのものは数行だが、展開すると、数ページになる。これを人間がやるのは大変なので、数式処理で、自動化を行う ) 数式処理 v.s. 数値計算 変数名 数値計算 : どんなに長い名前でも、結局は一定の長さのメモリ 数式処理 : 文字処理を行うので、長い名前だと多くのメモリが必要 計算結果 数値計算 : 最終結果だけが必要なのでコンパクト 数式処理 : 結果の中に、元の式の情報を保持されているので、膨大になる。 # 数式処理は、メモリ量で破綻することが多い 計算精度 数値計算 : 最終結果分 ( 精度が悪い ) 数式処理 : (原理的に..) 無限精度 数式処理ソフト MACSYMA (MIT) # 普通の大学生ではかなわない.. REDUCE SMP ( 物理系 ) → Mathematica ( テーラ展開が多い : 原点から離れると精度が悪い、図が簡単なので良い。結果を無条件信頼してはいけない.. ) MAPLE == 試験は 01/27 日の朝 「山」をかけてください。 各単元で、覚えていて欲しい内容を単純に出します。 # 去年の結果を覚えないでください。 # ここに出ている人は大丈夫でしょう.. レポートも、まだ、出していない人は、出しましょう。 来週はまとめ...