並列計算と並列計算機

                   - 1 -

並博士:突然じゃが、本日から「並列計算と並列計算機」というテーマで
    話をすすめていこうと思うのだがいかがかな?

列くん:本当に突然ですね、その理由は後で聞くことにしても、話題の選択が
    ちょっと強引すぎるような気がしますが、、、
    「はじめての電子メール」とか、
    「HiNETの以外な活用法〜テクニカル編〜」なんかのほうが
    読者には受けるのではないですか?

並博士:なるほど、それは面白そうだな、私が聞きたいくらいじゃ。
    しかし今更話題を変えるわけにはいかない事情があってな、
    それらの話題に関しては他の人達の出現に期待しよう。

列くん:はい、でも突然「並列・・・」と言われても一体なんのことやら
    分からないのですが

並博士:そうじゃろうそうじゃろう、しかしそのうちお前さんを含め
    皆が並列計算について知らなければいけない時代が来ることは
    確実なのじゃ、従って今、この話題について議論することは実は
    非常に意味があることで、それはおいおい分かるじゃろう。

列くん:うーん、うまく言い含められてしまったようですが、
    唯一分ったことは、つまりこの連載を最後まで読め、ということですね。

並博士:よく分かったな、まだ何にも言っていないのに、、、

列くん:・・・

並博士:さて、これからこのテーマについて話していくわけだがまず
    ここでいう「並列計算」とは何かをきちんと押さえておく必要が
    ある。なぜなら状況に応じてその意味する範囲が
    広くなったり、狭くなったりするからじゃ。

列くん:なるほど

並博士:ここでは、「計算したい量があったときに何らかの並列性を
    利用することによって計算機を使って計算し、求めること」
    だとしよう。

列くん:分かったような、分からないような、、、
    でも疑問なのですが何故わざわざ難しそうな並列計算などを
    やるのでしょうか?聞くところによると最近のパソコンも以前とは
    比べものにならないくらい高性能になったと聞きます。これを使って
    計算すれば何も難しくないのではないですか?

並博士:それですむのならばその通りなのじゃが、、、実はそれではすまない
    状況があるからこそ並列計算というものが脚光を浴びているわけじゃ。
    つまり並列計算しなければいけないちゃんとした理由があるわけじゃ。
    (表1)にその主たる理由をあげてみたので見てほしい。
                
           (表1)並列計算する理由
     −−−−−−−−−−−−−−−−−−−−−−−−−−−
       (1)計算速度をあげる
       (2)メモリ容量を増やす
       (3)問題自身が並列性を持っている
     −−−−−−−−−−−−−−−−−−−−−−−−−−−

列くん:どれももっともな理由だということは分かります。
    でも先程言ったように最近のパソコンは高性能ですから・・・

並博士:わかったわかった、どうやらまず最初に数値計算の現状を説明する
    必要がありそうじゃな。その前に今からちょくちょく出て来る
    フロップス(Flops)という単位について述べておこう。
    数値計算では実数同士の演算が多いので、(例えば足し算や掛け算)
    この実数演算を1秒間で何回実行できるかを基準として計算速度を
    比較することがよくある。この時使われる単位がFlopsで、
    まとめると(表2)のようになる。

           (表2)計算速度の単位
     −−−−−−−−−−−−−−−−−−−−−−−−−−−
            1  Flops ・・・1秒間に1回実数演算ができる。
            1 MFlops ・・・1秒間に100万回の実数演算ができる。Mはメガの
              略で、100万のこと。メガフロップスと読む。
      1 GFlops ・・・1秒間に10億回の実数演算ができる。Gはギガの
              略で、10億のこと。ギガフロップスと読む。
      1 TFlops ・・・1秒間に1兆回の実数演算ができる。Tはテラの
              略で、1兆のこと。テラフロップスと読む。
     −−−−−−−−−−−−−−−−−−−−−−−−−−−

列くん:僕なら、1桁の足し算なら1Flopsといったところですね。

並博士:実数同士の掛け算ではどうじゃ!

列くん:うーん、多分0.1か、もしかすると0.01かも・・・

並博士:列くんの性能はよく分かった、では君のいう最近の高性能パソコンは
    どれくらいの性能があると思う? 君より上かな?

列くん:もちろんそうでしょう。僕以下なら使う必要がありませんからね。
    でも、どれくらいかと聞かれると数値計算をやっていない僕にとっては
    想像するのが難しいですね。上の表でメガフロップスという
    単位があるのでこれくらいですか?でも1秒間で100万回なんて
    やっぱりちょっと速すぎるかな?そもそも数えられない・・・

並博士:なかなか勘が鋭いな、大体正解じゃ。
    最近のパソコンに最もよく使われており高性能で評判の
    インテルのペンティアムを例にとると、
    最近のニュースをみると30MFlops前後のようじゃ。

列くん:ひえー、そんなに高性能なのですか!僕が日本の人口くらい
    集まったときの性能と同じですね。

並博士:さて、最近のパソコンの性能が分かったところで、ここで一つ
    問題を出そう。ここに1億回の演算を必要とする仕事があるとしよう。
    先程のペンティアムを使ったら、一体どれくらいの時間でこの仕事を
    完了することができるかな?

列くん:小学生の算数ですね、これなら0.1Flopsくらいで計算できます。

    1(億回) ÷ 3(千万回/秒) = 3.3秒

    ですね。ひえー、やっぱり高性能じゃないですか!
    僕だったら一生かかってもできないのに、それをたった3秒で・・・
    やっぱり並列計算の必要性はないですね。博士、この連載は
    これで打ちきりということで・・・

並博士:おいおい勝手に判断してもらっては困る。先程の1億回というのは
    一つの例であって本当は次の問題が重要なのじゃ。
    では次に、現在の大規模数値計算プロジェクトで要求されておる
    計算の回数は一体どれくらいだと思うかね。

列くん:1億回ってのも相当なものだと思うのですが・・・、それ以上
    必要としているのですか?
    一体何を計算しようとしているのでしょうか?

並博士:答えになっておらんぞ、想像もできないと言ったところじゃな。
    まあいいじゃろ。君の質問の答えとあわせて次回に詳しく
        説明することにしよう。