脳みそのシワ、さらに+1本(プロのサイトで取り上げられた件)   

2007年7月1日(7月8日改訂版)



☆プロの先生のサイトで取り上げられた件。   
さて、改訂版を書くといいながら、 今週末は地元成田で成田祇園祭が開催されているので土曜日はそちらに行ってしまった。 これ、去年は仕事が忙しくて夜の部さえもまったく行けなかったので、 今年は逃したくなかったのだ。(去年は年間を通じて2回しかお祭りに行けなかったわけだが、 かといって我ながらちょっとだらしないかな?)

お祭り自体は写真の通りで、いつ見てもいい。 成田祇園祭は成田山新勝寺門前がメインストリートなのだが、 今年は見物客が多すぎて山車が通りを通れなくなったりして大混乱だった。

まつり見物では、地元の店がキュウリをだし汁に漬けて冷やした奴を\100で売っているが、 これが素朴な味ながらとても美味しくてお勧めである。 夏祭りの雰囲気にピッタリだし、野菜だから体にもいいしね。

さて、今回は余談は短めにしておいて、日曜日になって時間も取れたのでお約束通り修正版を掲載してみようと思う。

去年は行けなかった成田祇園祭に行けた。
昼もいいが、夜がいい。(写真は撮りにくくなるけど。)

それにしても、最近の当サイトはいったいどうしてしまったのだろうか?と今更ながら思う。

いや、当サイトはまったくのアマチュアが運営しているのであるが、 当サイトの趣味のスパコン分析が本物のプロによって取り上げられたのである。 それも、スパコン界でもっとも権威あると言われるゴードンベル賞を複数回受賞というもの凄い経歴をお持ちの方である。 しかも、当サイトが内容をアップしてからたった2日での出来事。速攻である。

当サイトはトリ頭なので、内容はもちろん当サイトの間違いを指摘するもの。

前回は巻頭の余談で将棋の話をしたので、これを将棋にたとえてみる。 つまり、これはアマチュア将棋ファンのサイトに「これこれの局面では4七銀がいいのではないでしょうか? なぜならば...」 と書き込みをしたら、なんと羽生善治3冠王のサイトに 「4七銀は正着ではなく、ここは2五歩と飛車先の歩を突き越すべき局面でしょう。その理由は...」 と書き込まれた様なもの。1) ホント、これ以上ない位にビックリした。

これは自分の恥をさらす話なだが、 これ、とてもためになる話と思うので、ここはあえて紹介させていただこう。 詳しくは 次世代スーパーコンピュータ概念設計評価報告書(2007/6/27) をお読みいただきたい。

さて、この指摘に対する当サイトの考え方だが...2)

☆B/F比が低いとコストはある程度下がる。   
まず、当サイトが掲載した上記の図は、物事を超簡略化してたった4つのデータだけで判断できるようになっている。 それは理論ピーク性能、メインメモリの実効バンド幅、価格、アプリのByte/flop(以下B/F比と略記)である。

当サイトの考え方は、プロセッサの能力を考える場合、理論ピーク性能比で物事を考えるべき領域とバンド幅比で考えるべき領域があるということである。 B/F比の高い領域でスカラかベクトルかどちらが優位かの分岐点は、絶対性能で評価する場合は実効バンド幅比、コストパフォーマンスで評価する場合ならば 単位価格あたりの実効バンド幅比で決まるというのが当サイトの結論だ。

間違いの指摘の内容ではXT3とSX-8Rの例が書いてある。 XT3はあらゆるB/F比領域でSX-8Rに勝るという指摘である。 具体的な数値が書いてないので正確なところはわからないが、おおよその値ではご指摘の通りかと思う。

ただし、当サイトの考えではベクトル機のB/F比が低いと言うことは、その分価格も安いという事を意味すると思う。 CrayX1がキャッシュを装備していたのは、キャッシュの効果でメモリのバンク数を減らし、 ベクトル機の弱点である価格をその分下げようという戦略に基づくものと考えられるからだ。 (ただし、キャッシュは上手く機能せず、肝心の性能が停滞してしまったわけだが...)

ベクトル機が高価である理由は、プロセッサがCOTSではないという点とメモリのバンク数が多いという点が挙げられるが、 B/F比が低いと言うことはバンク数の観点からはコストが安くなるという事だと思う。 そのため、単純に京速計算機案ベクトル機部分のB/F比が低いからと言ってコストパフォーマンスが低いかというと、 それはバンク数低減のコスト削減効果が性能低下を上回るか下回るかで変わってくる。 (B/F比半分だからB/F比が高いアプリで効率が半分とは推定できても、コストパフォーマンス半分...とは言えないと思う。)

つまり、京速計算機の具体的な価格がわからない今の段階では何とも言えないわけである。 (もちろん、COTSではないと言うコストアップ要因は残るので、これで完全に逆転できるとまでは考えてはいないが...)

別のプロの指摘では「B/F比の維持はもはや困難。」という指摘が成されているが、ベクトル機の場合はそのパワーの源は 高いB/F比にあると考えているので、XT3とSX-8Rを比較してどのようなB/F比(この場合はコストあたりのだが)でもXT3が優位ということは、 SX-8Rでは血涙を流してでもB/F比を維持すべき開発を行う必要があったという事に思える。 (あるいはB/F比低下を上回るコストダウンをするかだが、これは先に述べたとおり非COTSであるから難しいと思う。) ちなみに、京速計算機のベクトルパートがもっと酷いB/F比というならば、これもまたしかりである。

☆PCを図に書かなかった理由。   
さて、ここで話題を少し変えてみよう。

少しでも科学を学んだ事のある人ならば、パラメータを変えて状況を比較する場合は それ以外の変数は固定で無ければ比較の意味がない事はおわかり頂けると思う。 例えば、当サイトがByte/FLOPが決め手(京速計算機考その2) で書いた事はあくまで京速計算機のレベルを考えた場合だ。

上記のXT3の件はいいとしても、当サイトがどうしても理解できなかった点がある。 ベクトル機の比較対象としてPentium4を搭載したPCのグラフが掲載されている点だ。

当サイトがこのコラムを掲載した時点ではXT3の価格がノードあたり約100万円である事はアマチュアには知り得なかったので、 これがグラフに掲載されていないのは仕方ない。が...PCの価格が約20万円として良いことはPCマニアであるが故に当然承知していた。

しかし、今回のように京速計算機レベルを議論している場合に、PCの図を直接書き込んで判断する事に問題はないのであろうか?

これは、脳みそのシワを1本増やすために、ネットを漁ってプロの論文を読ませていただいている訳だが、 その中の論文の一つに Application Performance of Modern Number Crunchers. という論文があることを知り、そしてそれを既に読んでいたから生じた疑問である。3)

論文は下記の3つの機種のスパコンについてスケーラビリティーを調査したものである。 論文の内容を一言で要約すると、ノード数が多い場合は「餅は餅屋」ということだ。

論文ではスケールアップ(ノード数の増加に比例して問題規模も拡大)とスピードアップ(ノード数が増加しても問題規模は固定) という2つの例が掲載されている。前者は「同じ演算時間でより大規模な問題を解きたい。」というケースで、 後者は「同じ問題規模の演算をより早く解きたい。」というケースを想定している。

ここで、すべてがCOTSで作られたDual Xeon, GBit, Speed-upの例を見ていただきたい。 この場合、スケーラビリティーが他の場合に比べて極端に悪いのである。(論文から下記に引用しておく。)

PCクラスタとAltixのスケーラビリティー
Application Performance of Modern Number Crunchers. より引用。

ここで、Dual Xeon, GBit, Speed-upの例が例えばアムダールの法則に従って効率低下しているとしてみよう。 ご存じの通り、アムダールの法則には越えられない壁である漸近線が存在する。 例えば、並列化率が90%であればノード数を何億ノードに増やそうとも10倍以上の高速化は不可能というのが 天才技術者ジーン・アムダールの教えだ。

また、図では赤線でNEC製SX6+の例が書いてある。 ここでDual Xeon, GBit, Speed-upの漸近線を推定していただきたいと思う。 おそらくはたった1台のSX6+にも届かないのではないだろうか?  つまり、全世界のすべてのPCをクラスタリングしても、このようなケースでは たった1台のSX6+にさえ負けてしまうということである。

さて、ここでPCクラスタのコストパフォーマンスを考えてみよう。 論文では縦軸はパフォーマンスだから、コストパフォーマンスの場合は分母にコストが入る事になる。 つまり、絶対性能がAltixより低くてもコストの低下がそれを上回るほどに良ければコストパフォーマンスでは優位に立てる。 また、ノード数によらずコストパフォーマンスが良いためには、スケーラビリティーがAltixと同等であればよい。

ところが、Dual Xeon, GBit, Speed-upの場合のスケーラビリティーは明らかにAltixのそれよりも劣るのである。 つまり、ノード数が増えていくと、All-COTSのPCクラスタはコストパフォーマンスがどんどん悪化していくのである。 当然、劣化のスピードはAltixより早い。

当サイトが書いた図はCOTSプロセッサとしてItanium2とOpteronを掲載しているわけだが、 そのCPUを搭載するスパコンはAll-COTSのPCクラスタではない。元となったデータだが、 Itanium2はThunderというLLNLのHPCだし、OpteronはJacqaurdというLBNLのHPCである。 当サイトはスパコンのスケーラビリティーについて考慮したことがあって、 それはひっくり返る常識。(アムダールの法則と問題規模) に書いたけれど、「HPCとして開発された機種の場合、効率の絶対値に差はあっても スケーラビリティーとしてはベクトルもスカラも大雑把には似たようなものである。」 ということだ。

つまり、ES用ベクトルプロセッサもThunderのItanium2も、JacqaurdのOpteronも 第一次近似としてはスケーラビリティーには大差ないから、その部分は無視して ノード単体の評価結果で京速計算機レベルを推測してもよしという判断なのである。 (地球シミュレータではAFESで約65%の効率が出ているから、効率が低下したとしても最大でその程度で済む。)

しかし、同じ事がPentium4のPCクラスタで成り立つと言えるのか考えてみた結果思い出したのが上記の図である。 それがもし成り立つなら京速計算機はPCクラスタとして設計するのが一番コストパフォーマンスが良い事になるが、 上図を見る限りそれは成り立つことは無さそうに思える。

コストパフォーマンスで判断する場合、必要な絶対性能に到達するためのノード数はコストが低い側が多くなる場合がほとんどであろう。 (Pentium4のケースではまさにそうなる。) この場合、ノード数が多いのであるからノード数1台のケースで比較して良いのは比較対象のスケーラビリティーに大差なく、 第一次近似としてスケーラビリティーはほぼ同程度と判断できるケースに限ると思うのだが...(間違っていたらごめんなさい。)

これが何を意味するかというと、今回の当サイトの主張が間違いであるという指摘は ノード数が1台のシステムでは正しい論理なのであるが、京速計算機レベルの議論をしている時には成り立たないと思えると言うことだ。 (当サイトの話はあくまで京速計算機の技術予測ネタだから。)

スケーラビリティーにこのような大差がついている場合は当サイトの図にPCの図を書き込むことはスケーラビリティーの観点から妥当ではないし、 無理に書き込むとしたらPCの図はノード数に強く依存し、京速計算機レベルのノード数ではずっと下側に圧縮されて掲載されるべきだと考えている。 つまり、当サイトの考えでが正しければ京速計算機レベルではクロスポイントは出現するということになる。

これを現実の世界に当てはめてみよう。 ノード数が少ない領域ではPCクラスタが有利、ノード数が多い場合はコストパフォーマンスが逆転しHPCベンダーが作るスパコンも 「餅は餅屋」的な意義が生じるということだろう。

実際、ノード数が少なく性能が低い領域でのPCクラスタの優位性は当サイトも素直に認めるところで、 この領域でベクトル機やHPCベンダーのスカラ機が勝てるかというとおそらくは勝てない。 価格は激安だし、ノード数が少ないからスケーラビリティーの問題も発生しにくい。 また、耐故障性の面でも問題点が表に出にくい。

しかし、ノード数が増えるに従って餅は餅屋効果が発動し、 HPCベンダーのスパコンにも存在意義が出てくるというのが、上図から当サイトが読み取った論考だ。 十分にノード数が多く、なおかつスピードアップのケースでは、AltixはコストパフォーマンスでもPCクラスタ(Dual Xeon, GBit)より優位に立てるハズである。当サイトの眼では、コストパフォーマンスの観点から見ても京速計算機がPCクラスタであっていいとは正直なところ思えないのである。

ちなみに、この図でPC(Dual Xeon, GBit)とSX6+を比較すると、差の少ないスケールアップの場合でも 実効性能が互角になるためにはPCを約24台クラスタリングする必要がある事がわかる。 つまり、スケーラビリティーによってコストパフォーマンスはノード1台での純粋な比較の場合より少なくとも 大幅に縮小されていると考えるのが妥当なように思える。

以上が当サイトが自分の図にPCのグラフを掲載しなかった理由である。 プロから見れば穴だらけの論考かもしれないが、決して感情的な都合で故意に掲載しなかったわけではない という事はおわかり頂けたと思う。

☆当サイトの論理に問題点があるとすれば...   
さて、当サイトが考えた論理に穴があるとしたらどこだろうか?  可能性のありそうな箇所を簡単にまとめると下記の通りだ。
  1. 論文掲載のスケーラビリティーに問題がある。
  2. 論文掲載のスケーラビリティー以上にコストダウンがノード数にスケールする。
  3. そもそも前提条件が違う。
まず1.について考えてみた。

これは要するに論文が正しいかどうか...という問題だ。 PCのスケーラビリティーがAltix並に改善すれば当サイトの論理は崩れる。

しかし、これはPCクラスタ機で京速計算機レベルの巨大システムが構築可能になると言う、 技術的にかなり困難な命題のように思える。 B/F比が高い領域でPCがHPCベンダー作成の機種と同等のスケーラビリティーを持つことは難しそうに思えるのだ。

では2.はどうだろうか?

今回の判断基準はパフォーマンスではなく、コストパフォーマンスである。 つまり、スケーラビリティー以上にコストダウンがスケールすれば問題ない事になる。 これは成り立つだろうか?

「秋葉ではPCをまとめ買いすると、凄く安くなるよ〜。」というジョークは置いておいて、 半導体の価格は原材料費ではなく、開発費と設備投資で決まるのは事実だ。 開発費も設備投資も1台売れても1億台売れてもほぼ同一だから、たくさん売れるほどコストが下がる。 これがCOTSが安くつく主な原因だろう。

しかし、問題はPCでは既に量産スケール効果が出尽くしているということだろう。 世界で100台売れているHPCが1000台売れる事と、1000万台売れているPCがHPC分だけ多く売れる事は 市場規模の問題から考えて状況が異なる。 HPC分野の市場規模はPC分野とは比較にならない位小さいから、 HPC分野でPCクラスタが売れる事が仮にあったとしても市場規模に与える影響はかなり小さい。 従ってHPCの場合は売れた分だけコストは下がるだろうが、PCの場合はここからさらにコストが下がることはあり得ないと思われる。

では3.はどうだろうか?

当サイトが少し妥当性があると思ったのは、この前提条件だ。 PCクラスタの性能がノード数に対してスケールするかどうかは、問題がスケールアップにあるか、 スピードアップにあるかで大きく変わる。

サイトを開設した当時の当サイトならば、「コンピュータの能力が向上すれば、どちらも同じ事じゃん。 性能が10倍なら10倍の演算規模の問題も同じ時間で解けるし、問題が同じ規模ならば1/10の時間で解けるじゃん。」 と考えたのだろうが、今は両者が違う意味であることは理解できているつもりである。 アムダールの法則から考えて技術的に困難なのは明らかにスピードアップの方であろう。 だから、図はPCでもAltixでも常にスピードアップの方がスケールアップよりもスケーラビリティーが悪いのだ。

しかし、京速計算機レベルのアプリを実行する際にスケールアップとスピードアップとどちらが重要なのだろうか?

これはおそらくスケールアップの方だろう。 10倍性能が良ければ10倍演算規模が大きい問題を解きたい場合が多いと言うことだ。 例えば地球シミュレータでは100kmメッシュで全球シミュレーションを行っている所を10kmメッシュとした。 これは10倍(演算量的には約1000倍)の規模の問題を解きたいということだ。

MDでも、もっと直接医療に役立つ大規模なタンパク質をシミュレーションしてみたいという研究者の意図がある。 スピードアップは医薬品の特許を他社よりも早く出したいという企業の場合は大切だが、 国家研究機関の場合は優先順位としては相対的に低いかもしれない。 そうなれば、HPCベンダーのスパコンとPCとのスケーラビリティーにはそれほど大きな違いが無くなる。

ただし、地球が温暖化してしまってからシミュレーション結果が出ても意味がないから、 京速計算機レベルと言えどもスピードアップも完全に無視していいわけではない。 地球温暖化のシミュレーションは対策がまだ間に合う内に研究を完了させることが絶対条件であるからだ。 (明日の天気予報が2日後にシミュレーションできてもまったく意味がないのと同じである。)

つまり、この論理の穴は一応穴としてありそうではあるが、証拠としてはちょっと弱い。 京速計算機レベルではスピードアップは全く必要ありませんと言い切って良いかどうか...

☆いくつかの設計思想の一つ。   
さて、今回受けたご指摘は「ピーク性能に対する実効性能が高いことは良いことであるという考えは誤解。」 というものだ。たしかに、当サイトではこの点を強調してきたので、これが誤りであるならばご指摘は問題ではない。

しかし、この考え方は誤りなのであろうか?

もし、他の条件がまったく同一で理論ピーク性能に対する実効性能が高いアーキテクチャと低いアーキテクチャを 比較すれば、無条件で実効性能が高いアーキテクチャに軍配が上がる事は論理的に自明となる。 だから、この言葉の意味は「ピーク性能に対する実効性能を高めようとするあまり、 効率アップによるゲイン以上にコストが上がってしまう場合、却ってコストパフォーマンスが悪化する。」 と言うことを意味しているのだと思う。(間違いでしたらすみません。) これはコストパフォーマンスは性能/コストだから、論理的には確かに正しい。

ただし、問題はこの「性能」がシステム全体としての実効性能を意味するべきものであるという点だろう。 スパコンで行いたいことは各種のアプリを高速で実行させることだから、理論ピーク性能が高いことは目的を達成する手段の一つでしかない。 だから、最終的な評価は理論ピーク性能ではなく各種アプリでの実効性能で評価されるべきなのだと考える。

また、京速計算機レベルではシステムトータルでの性能はノードの性能とノード数だけではなく、 システム上のボトルネックに左右されるという点だと考えている。 従って、スケーラビリティーが問題になるアーキテクチャでは その点を考慮に入れなければならないと考えている。

例えば、価格が安く消費電力が低ければプロセッサの絶対性能が低くてもシステム全体としては高性能を発揮できると考えたBlueGene/Lでは、 物量が基本戦略となるからスケーラビリティーが成り立つかどうかが成功のカギとなる。 だから、実際BlueGene/Lでは3Dメッシュにツリー結合網が追加され、 これによりノード数が多いことによるスケーラビリティーの悪化を抑制していると考えられる。 (BlueGene/LではGTCにおいて演算負荷がプロセッサ数に比例して増えるケースではかなりよいスケーラビリティーを示しているが、 これは演算アルゴリズムの関係でツリー結合網がよく効くからだという考え方がある。) しかし、PCではそのような配慮は基本的にはない。

おそらく、スパコンの設計思想にはいくつかの考え方があるのだと思う。

ノードのコストパフォーマンスを最大化しスケーラビリティーを維持する方策を研究する... という手も確かに考えられる手法の一つではあると思う。 しかし、自分が書いた方法だけが唯一の手法と言うつもりはもちろん無いが、 理論ピーク性能に対する実効性能を高めるという戦略ももう一つの設計思想として十分に考えられる戦略だと考えている。

以上、当サイトの見解を述べてみましたが、間違っていたら申し訳ありません。



☆文章表現の修正とお詫び。   
さて、今回の内容だが、読者(第三者)の方から自我防衛の予防線が過ぎて却って挑発的に読めるというご指摘を頂いた。 日本語では確かに「褒め殺し」とか「慇懃無礼」という言葉もあるわけで、 そう言う目で元々の文章を読み直してみると下手に出ながら挑発している様に読めないこともない。

実態はと言うと、プロから直接指摘を受けてビックリ仰天している状態なので、 そのような老獪な文章表現など思いつく心の余裕もあろうハズはないのだが、 ここは頭を冷やし平常心を保てなかった事を素直に認めて、ご指摘の通り表現を変える事にした。

改訂前の表現を逆に挑発的と感じたすべての方々(読者・関係者・ご本人含む)に お詫びするとともに、ご指摘には大変感謝いたします。 当サイトもまだまだ人間が出来てないと言うことですな。反省。

なお、本文は7/8に改訂済みです。



1)
これはたとえ話で、現実には羽生3冠王のブログサイトは存在しない。 ちなみに、渡辺竜王はブログサイトを持っている。

2)
当サイトは通例「である調」の文体で文章を書いているので、 「です・ます調」の先生より偉そうな印象になってしまうのだが、ここの文章だけ「です・ます調」で書くのも変なので、 もしお読みであればこれは非礼をご容赦いただきたい。

3)
ひっくり返る常識。(アムダールの法則と問題規模)ではスケールアップとスピードアップについて 別々のアプリでの評価結果を使用して判断していた。これは同一アプリでの評価データが当時は見つからなかったためだ。 しかし、科学的に正確に評価しようとした場合は本来両者は同一アプリである必要がある。 このため、この話を書いた後も同一アプリでスピードアップとスケールアップを評価した論文をネット上で探し回っていたのである。