並列計算と並列計算機

                   - 3 -


並博士:前回「(表3)計算速度を得るための現実的な方法」で書いたことは
    実は並列計算機を使った並列計算の一例なのじゃ。
    詳しくいうと専用並列計算機ということになるが・・・
    (表1)でみた、並列計算する理由の「(1)速度をあげる」の典型的な
    例ともいえるな。
    つまり、通常の計算機では一生かかっても出来ないような計算の速度を
    あげるために並列計算し、結果を早く手にすることができるということじゃ。

列くん:博士、本当にこれを実践している人に会えて話が聞けるのでしょうね。
    僕だけでなく読者も期待しているんですから、今更だめだったでは
    すみませんよ。

並博士:くどいな、そんなんだと女の子にもてないぞ!

列くん:・・・

並博士:さて、話を元に戻そう。並列計算する理由の一つを簡単に説明した
    わけじゃが皆さん現状を認識して納得していただけたかな?

列くん:パソコンではどうにもならない世界があることを教えていただきました。

並博士:そうじゃ、ただちょっと横道にそれてもうしわけないが君の言ったように
    最近のパソコンの性能には目を見張るものがあることも事実じゃ。
    ちょっと前にはスーパーコンピュータと呼ばれてもおかしくない位の
    性能を出していることは信じられない現実なのじゃ。
    まあ何事に置いても、昔の予想通りだとおもしろくないからの。
    さて、次に話題を変えて「(2)メモリ容量を増やす」について説明しよう。

列くん:これも当然のことを言っているとしか思えませんね。つまり、1台だと
    16メガバイトしか使えないから2台にして32メガバイト使おうとか
    いうんでしょうきっと。

並博士:さすがにものわかりが良くなってきたな。その通りじゃ。じゃが
    メモリについてはそれ以外に複雑にいろんな事柄と結び付いて来るという
    事情があるのじゃ。もちろんこれらについてはおいおい分かって来るが、
    簡単にいうと、解くべき問題の大きさを制限することはもちろんのこと、
    使用するアルゴリズムに制限を与えたり、計算速度に密接に絡んできたり、
    はたまた並列計算機ではネットワークの通信速度やアーキテクチャにも
    影響を及ぼすといった位じゃ。せっかくだからまとめておこう。

         (表4)メモリ(主記憶)の影響
    ----------------------------------------------------
          (1)解くべき問題のサイズ
        ・近似の精度をあげる
        ・ある程度のサイズがないと意味を持たない問題
     (2)作業領域の大きさ
        ・計算手法(アルゴリズム)の選択
        ・計算速度とのバランス
     (3)通信性能とのバランス
        ・バンド幅            - MByte/sec
        ・立ちあがり(latency) - microsec
    ----------------------------------------------------

列くん:重要な要素なのですね。でもまた疑問ですが、メモリこそ必要なだけ
    増設すればいいのではないですか?最近のメモリの価格低下と性能向上は
    目を見張るものがありますからね。パソコンやワークステーションだって
    不足したらすぐにメモリを増やしていますよ。今は1メガバイト1万円を
    きっていますからね。安いものです。

並博士:そうくると思った。では慣例により、最近の大規模数値計算で要求されて
    いるメモリ容量から話をはじめよう。前回例に出した新プロジェクト

      「専用並列計算機による「場の物理」の研究」

    の平成6年状況報告書によると、今度はメモリに関しては数十ギガバイト
    最低でも必要とのことじゃ。1メガのざっと1万倍じゃな。
    この報告書によると、ある程度物理的に意味のある結果を出すための
    最低限の数字ということじゃ。つまりメモリの容量が解くべき問題の
    大きさを制限し、その結果の学問的意義にまで影響を与えていると
    いうことができるな。計算速度のほうは30年待てばよかったが
    こちらはそもそも結果を出しても意味がない場合があることを示して
    おり、数値計算屋にとっては慎重になるところであるな。

列くん:問題の領域をメッシュに切り、数値計算するときなどはメモリが増えれば
    メッシュの幅を小さく出来るのでメモリが大きければそれだけ精密な
    数値計算ができるものだと思っていましたが・・・

並博士:原理的にはその通りなのじゃが、上で言ったことは問題によっては
    ある一定以上の精密さがないとそもそも物理的に意味がなくなると
    いっておる。

列くん:ややこしいですね。

並博士:しかしそれも小さいメモリで苦労してやってきたからこそ分かった事実
    だとも言える。そういう意味では小さいメモリもすてたもんじゃない!

列くん:・・・

並博士:さて、アルゴリズムとの関係じゃが、これは、実際にある程度
    大規模な数値計算をやったことのあるひとでないとピンとこないかも
    しれないがまあ聞いていただこう。数値計算の際には様々な計算手法を
    使うのじゃが、同じ計算をするのにもこれまたいろいろなアルゴリズムが
    あるものなのじゃ。全てを紹介することはここの目的ではないので
    やらないが、これらは概して、次の2つのタイプに大別できる。

     (1)効率重視・・・作業領域をふんだんに使う
     (2)メモリ重視・・・作業領域をできるだけ使わない

    メモリのことを意識しなくてもよい場合や問題の規模が小さい場合などでは
    (1)が使われることが多い。これらは作業効率を高めるために
    例えば良く使う変数は使うたびに計算して求めるのではなく、
    作業領域にいつでも置いておくなどするわけじゃ。
    ところが上にいったように、扱う問題の規模が大きすぎて、
    メモリ容量を気にしないといけない場合には、多少
    効率を犠牲にしても(2)を使わざるをえない、ということじゃ。
    これがメモリがアルゴリズムを制限するということなのじゃが、
    このことは何も並列計算に限ったことではない。しかし後でみるように
    並列計算に伴い、余分のメモリが必要になるために、並列計算しない
    場合に比べてこの問題がよりシビアになって来ることは注意する必要がある。