0x0F オーバー・ザ・クロックスピード
「うわっ、どうしたんだよみんなで考えこんで」
僕がみんなの待つ作業スペースに戻ると、席を外していた二十分ほどの間に空気は一変していた。蒼を始め、全員がパソコンにかじりつくように向かっている。
その表情は明るくない。僕がいない間に何かあったとしか思えなかった。
「……あとちょっとが、足りないわね」
蒼が呟く。パソコンの画面に表示されていたのは、僕たちがチェックした各ベンチマークの仮の実行結果と……それを上回る数字たちが並んだ表計算ソフトだった。マイナス十パーセント、十五パーセントといった数字が赤字で表示されている。
嫌な予感が、脳裏で警報を上げていた。
「その数字、どこのだ?」
「Intechのマシンだよ。お前が席を外してる間に見せてもらった」
「やっぱり、そういうことか」
案の定、宏の言葉で嫌な予感が的中してしまったことを知る。マイナスは概ね十から十五パーセント、大きくはないけど決して少なくもない。
このまま何もしなければ、本番の結果はこの通りになっていただろう。
「ま、弘治くんの察した通りだよ。性能がビハインドなことがわかったから、なんとか出来ないかの検討中ってわけ」
「これは……キツいなあ」
既にシリコンは完成してしまっているから、これからさらに性能を上げる回路を突っ込むことはできない。つまり、根本的に手を打つことは既に不可能だ。
「あれ、向こうってもう最適化まで終わってるんだっけ?」
「もうコンパイラも最適化済みだそうです。多分『インテック・コンパイラー』を今回のシリコン用にチューンしたものを持ってきてるんだと思います」
「スパコンじゃないんだからよお」
一方、ソフトの方はまだ手を入れる余地が残っている。……とはいえ、この辺は悠たちに任せっぱなしにしてしまうことが多かったからそこまで追いかけてなかった。
「インテック・コンパイラーって、何度か聞いたな」
「Intechが、自分のCPUの挙動に最適化したコンパイラーを作ってるんだよ。柳洞くんが作ってるののお化け、って感じだあね」
「もちろん、汎用のOSに付いてるコンパイラーなんかもある程度は最適化……つまりは、高速なバイナリを作れるようになってるんだけどね。あとはライブラリがずるいんだよ、ベクトル演算も十二分に使って高速化した奴があるから」
CPUは、それぞれにおいてマイクロアーキテクチャ、つまりはコアの設計が違う。当然、理解できる命令にも違いが出てくるわけだ。
当然、CPUの力をフルに引き出そうと思ったらそのコアに応じたバイナリ、つまりは機械語を作ってあげるのがベスト。ここまでは、普通のコンパイラでもできる。
「一歩踏み込んだ『ベクトル化』……つまりは複数の値を同時に計算できるAVXみたいな機能の使いこなしが上手だったりとか、『関数のインライン展開』、『ループアンローリング』なんかもCPUのレジスタ限界に近いギリギリまで掛けてさらにそれをベクトル化したりとか、あるものを全部使った最適化をしてくれるらしいねえ。あたしもちゃんと使ったことはないけど」
「ま、そんなわけで普通のパソコン向けのプログラムとかはともかく、スパコンみたいな乾いた雑巾から一滴でも絞りたい時には有用ってわけ。まさに今回みたいな時だね」
「数パーセント、場合によっては一割くらい性能が上がったりするのが恐ろしいんだよ。もちろん、同じプログラム、同じプロセッサーで」
さらにそこから、普通のコンパイラより一歩先に進んだ最適化が出来るということなのだろう。ソフトのコンパイルを良くするだけで一割も性能が上がるなんて。
「そんなに改善するのか」
「ベクトル演算を使いこなすと強いのはわかるわよね?」
「まあ、八とか十六とかの値を同時に計算できたらそりゃあなあ」
「あとは……たとえば、ループアンローリング。CPUって、出来れば分岐命令を置きたくないんだよ。For文の中のIFとか二重For分とか最悪」
「遅いのか?」
「処理に無意味な時間が喰われるからね、ロスが一クロックだったとしても百万回繰り返せば百万クロックのロスになるし。それに今のCPUは分岐予測があるとはいえ、外れたら大惨事。手を付けてる分全部飛ばしてやり直しってのもある」
「ああ、パイプラインのフラッシュってやつだな」
「例えば、何個お菓子が入ってるかわからないところからお菓子を出していくとするじゃん? で、ゼロになるまで出して数えたい。その時どうする?」
「そりゃ、箱に手をつっこんで一個ずつ数えるよな」
「でも、一杯あったら一つずつやってたら手間じゃない?」
「まあ、確かに?」
「こういう時、三つずつとか二つずつとか取ってくでしょ。二、四、六……みたいな数え方」
「つまり、プログラムでも同じように一個ずつじゃなくてまとめて処理しちゃうってことか」
「そ。で、例えば残りがマイナス……つまり、まとめて数えてる途中でなくなったら残った分を数えれば終わり」
「それは確かに速くなりそうだ」
「もちろん、実際の場合はまとめる回数、つまり展開して同時に実行するループの数を慎重に設計しないと逆に遅くなったりするんだけどね」
「ループの最初と最後も特別に書いてあげなきゃいけなかったりするから、プログラムも大きくなるんだよ。って言っても、最近のコンピューターはメモリも多いしそこまで大きく困ることはないけどね。よっぽどじゃなければ」
「それを、プログラムのコードから解釈しないといけないってことか」
「そういうこと。だからめちゃめちゃ複雑なんだけど、効くときはがっつり効くよ」
「最近のコンパイラはどれも賢くなってるから、普通のコンパイラでもある程度はやってくれるんだけどね」
砂橋さんの例えも、今回ばかりはわかりやすかった。確かに、言われてみれば効きそうだ。
「悠のコンパイラの方は?」
「あんなんエンジニアが数百人チームで張り付いてなんとか出来るレベルだぞ、比べたら怒られるレベルだよ」
「そうか……」
「いわゆるgcc、Linusとかでも使う汎用的なコンパイラに、うちの石に合わせた改良を入れてるだけだよ。さすがに最適化のとこには手を入れられてない」
「ま、仕方ないよ。下手にいじると今度はコンパイルした後のソフトの挙動がおかしくなるし」
「確かになあ」
どんなに速くなったとしても、翻訳が間違ってしまっては意味がない。計算結果が違ったり、場合によってはアプリが不正終了してしまうかもしれないし。
それに、プログラムの吐き出す値が正しいかは、大会当日の朝にチェックされる。そこで失格になってしまっては台無しだ。
それから状況の確認を改めてしてみたけど、BIOSから変えられる設定が全部のマシンで最適になっているのは僕が出る前に確認している。
あらためて共有された現状に、みんなで顎に手を当てて考え込んでしまった。十五パーセントの性能向上は、一筋縄ではいかない。
「とはいえ、改良の余地があるのは間違いないな。五パーセントくらいは速くできるかもしれん」
「ほう?」
「取ったプロファイル……まあ、CPUの処理時間のうちどこに時間が掛かってるかを計測してみたんだが、やりようはありそうだ」
「そんなこと判るのか」
だけど、今まで口を閉ざしていた悠からは前向きな言葉が出てきた。
「ああ、IPでそういう情報を取って解析できる奴があってな。蒼にお願いしてコアに入れといてもらったんだ」
「そんなに面積も使わないし、あって損をするものでもないわ」
「その解析結果を見ると、いくつかの関数が遅い。これくらいならなんとか」
「全部のベンチで?」
「ああ、やっぱり分岐予測の精度がIntechには勝てないからそこがな。コードに手を入れて順番を入れ替えたりしつつ、極力分岐を減らせば」
「それで、一番遅いのでもあと一割か」
「あー、一番遅かった流体シミュレーションはコンパイラが吐いてるAVXの使い方がいまいちだった。そこも手を入れるつもりだから……そうだな、まあ全体的にあと五パーセントってところだな」
「結構エグい解析までしてるねえ、『逆アセンブル』までしたんだ」
「ま、本番っすからね」
星野先輩の言葉にへへへ、と笑う悠。どうも面倒な解析まで既に手を付けていたらしい。 さすが、お前は本当に凄い奴だよ。
「そろそろ皆さん、今日は撤収の時間になりますので帰りの準備をお願いします」
「っと、もうそんな時間ですか。わかりました」
そこで、各チームにIntechの社員さんからのストップが掛かった。ということは、今日はここで打ち止めということになる。
「悠、チューニングには何が必要かしら?」
「実機」
「ま、そうよね……予備機は一台持っていきましょうか」
「あいよ、準備しとくわ」
「んじゃ、他のマシンも落としとくね」
当然、実際のマシンが無いとチューニングはやりづらいだろう。手分けして全部のマシンの電源を落としていると、とてとてと狼谷さんが寄ってきた。まだ本番じゃないからだろう、そこまで緊張しているようには見えない。
「もう一台分、部品はある?」
「え?」
「あと、予備の予備のシリコン」
聞かれたのは、予備の部品の有無だった。記憶を辿って持ってきたものを思い出してみる。たしか壊れると代えの利かないボードとCPUクーラーは予備があったはずだ。
「えーっと……ボードと予備のシリコン、それにクーラーはあるけど、それだけかな」
「わかった。終わったら、現地調達に行く」
砂橋さんの言葉は、僕の頭に疑問符を浮かべるのに十分な短さだった。
「どういうこと?」
「もしかしたら、全部のマシンの性能を五パーセントくらいなら上げられるかもしれない」
◇
「うわ、これまたデカいな……」
「迷子になってる時間はないわよ」
「きょうびDDR3のメモリなんて売ってるのかな……」
「ウチだってJCRA経由のオーダーだったしねえ」
撤収を終えた後、僕たちは木峰さんと松見さんの車で巨大な家電量販店にやってきていた。
スーパーマーケットを全部家電量販店にしました! というレベルの規模だ。
「あった。メモリはPC3-12800、これでいい」
「電源ユニットもあったぜ、普通のATX電源でデカいの買っておけば大丈夫だよな?」
「はいっ、大丈夫です! PC用の大容量な電源ユニットであれば」
「ストレージは適当に安い奴でいいよね。んじゃ、本番機と同じSATAのSSDにしておこっかな、念のためケーブルもっと」
「さっすがは『ベターバイ』ですね、一発で揃いました」
「あ、ピンヘッダに挿せる電源スイッチも売ってる。これも買っとくねー」
当然、品揃えは抜群。必要だった部品はあっという間に見つかった。
「おお、若松では通販じゃないと入手できないものが車で十五分も掛からないお店で入手できるなんて……」
「当たり前でしょ、比べたら失礼よ」
そんな格差に愕然としつつも、ホテルに戻ると食事も後にして狼谷さんはマシンを組み立て始めた。ケースは当然ない。全部の部品がむき出しで転がされており、ケーブルで繋がっているだけの状態だ。
「すげえ、こんな状態でも動くんだなコンピューターって」
「ま、パソコンのケースってほんとに箱だからね。ちゃんと繋がってさえいれば動くよ」
「むしろこの状態の方が好き、って言う人もいるみたいですよ?」
「えぇ……」
「『バラック組み』とか呼ばれるんですけど、パーツの交換がとにかくしやすいので」
「そりゃそうだけどさ、蹴ったりしたら終わりじゃん」
世の中には色々な人がいるなあ。確かに部品交換はしやすいけど、何かの手違いで破壊しちゃいそうだ。
「〇四二……これ、かな」
一通り全部の部品を繋ぎ終えると、狼谷さんは予備のチップの確認を始めた。自分のパソコンを開いて、何かを確認している。
その時突然、僕の携帯が震えた。WINEの電話が掛かってきたらしい。
通話をタップすると、耳には突き刺さるような騒音が聞こえてきた。
「うわ、うるっさ」
「聴覚障害になりそうだ」
「ってな感じで、こっちは無事立ち上がったぞ」
「てなわけでチューニングに入る、何かあったら教えてくれ」
「わかった。健闘を祈る、寝落ちるなよ?」
「何のために昨日ユナイテッド・魔剤を仕込んだと思ってんだ?」
「死ぬなよ?」
「大丈夫、宏も居るしな」
「AEDの場所はばっちり覚えてるから任せろ」
一方、悠と宏は隣の部屋で持って帰ってきた予備機、ケースに入ってる方を立ち上げていた。無事に立ち上がったのはその騒音でわかる。さすがは準備が早い。
奴らが隣の部屋に行ったのは、単純にファンの音がうるさいからだった。こっちも電源を入れたら同じになるんだけどな。
「んで、氷湖は何をするつもりなの?」
「今動かしているシリコンは、全部同じプロファイルで動かしてる」
「ふんふん」
「ウエハの中で全部機能的に問題が無いシリコン、その中で特性がそこそこの物を選んで『VFカーブ』を作った」
「VFカーブ?」
「Vは電圧のV、Fは周波数のFね。つまり、どれだけの電圧で、どれだけの周波数で動くかってこと」
「VFカーブを作るのは、なかなか手間のかかる作業。シリコンごとに特性が違うから」
「ああ、そう言ってたな。電圧を上げないと動かない石もあるって」
「最初のシリコンとか、酷かったよね。1.2ボルトで数十MHzとか」
「懐かしいなあ」
電圧をどれだけ掛けるとどれだけの周波数で動くか、という特性は、製造プロセスはもちろん、切り分けた後のチップ一つ一つでも変わってくる。
砂橋さんの言葉で、プロセスでの違いが酷かったことを思い出す。もうそろそろあれから一年、か。
「その選別には、一番基本の100MHzで電圧を振って特性を確認しただけ。ここに持ってきたのは、その全部でチェックを行って特性が良かった八つ」
「ってことは、まだクロックが伸びる余地がある可能性があるってことね」
「そういうこと」
それから、狼谷さんは少しだけ目じりを下げた。
「いまから、『オーバークロック』をする」
「でも、オーバークロックって回路に負担を掛けるんだろ? 一日持つのか?」
僕が懸念したのは、IP大会でも、僕たちのデスクでも見た光景。このCPUでも、比較的精度は高く温度を測れるようになったとはいえ、サーマルトリップ機能は付いていない。まだトランジスタが耐えられずに動かなくなってしまうハングアップも、熱で限界を迎えて焼損してしまう事態も今は避けたい。
でも、その懸念を聞いても狼谷さんは小さく頷いて見せた。
「だから、その限界をこれから探ってプロファイルを作り直す。合法、安全なオーバークロック」
「あくまでも今のクロックを超える、というだけね。シリコンの限界を超えない範囲で」
「言うなれば、オーバー・ザ・クロックスピード、というところでしょうか」
限界ぎりぎり、でも壊れない範囲を探る。言うのは簡単だが、やるのは難しい。
……シリコンも、人間もそうだ。限界ギリギリを目指しているはずが、壊れてしまうことなんてよくある話。
でも、他に手が無いのも事実。そして何より、僕は狼谷さんの技術を、みんなの技術を信用している。
「わかった。信じるよ、狼谷さんを」
だから、僕も首を縦に振った。
ゴーが出た瞬間、みんなは弾けるように議論を始める。
「どれで取るの? 本番用の五つは持ってきてないし」
「予備が五つある。一台は柳洞くんたちが使っているから、残りは四つ。その中で上から二番目、全体で見れば上から八番目のものを使う」
「一番上じゃないのか」
「途中で焼いてしまう可能性があるから、素性がいい石の予備が一つはあったほうがいい」
「それに、クロックが上がってくるとまた違う特性が見える石もあるしねー。周波数が低いと大人しいのに、上がったとたん電圧を盛ってかないといけない子とか」
「んじゃ、アタシも検討しよーっと。クリティカルパスどこだっけな」
「幸い、シリコンの限界電圧もだいたい見えてる。だからちょっと電圧も盛る予定」
「電圧って、シリコンは大丈夫なのか?」
「幸い、今回は試作が多かったから大体上限はわかってる」
「電源回路と放熱は……」
当然だが、電圧を上げると流れる電流も増え、発熱も増える。上げる電圧の幅自体は非常に小さいとはいえ、発熱量は電圧の二乗に比例するから安心はできない。
……とまで考えて、どっちが本体だかわからないレベルで巨大なCPUクーラーが目に入った。道香の設計だし、ある程度はなんとかなるか。
「まあ、大丈夫か」
「はいっ、放熱能力はまだまだ余裕がありますし、サブストレートの設計を変えたついでにパッケージも放熱しやすく改良してますから!」
「あー、あの設計はやっぱ『熱抵抗』下げるためだったんだ。さすが桜桃ちゃん」
「電源もまだまだ引けますし、負荷時の応答時間も大丈夫かと」
時計は午後六時、明日の集合まであと十四時間半。二つの戦いは、並行して始まった。
もちろん、最初はスムーズに行くはずもない。
ハードウェアチームの方はさすがのスムーズさで、二十分もすれば議論はひと段落して実際のデータ取りに入っていたけれど。
「……あれ、固まっちゃいましたね」
「4.3GHz、伸びにして二パーセントちょっとかあ」
「もうちょっと上げないと足りないねえ」
「『PLL』自体は持ってそうだけど、どっかがタイミング違反起こしたかな」
「電圧を0.025ボルト上げて、次」
クロックも、なかなか思うようには上がらない。
デバッガーを使って繋いだPCからクロックを変えていた狼谷さんの声で、細かく設定を変えながら起動できる上限を煮詰めていく。
爆音に包まれながらも、みんなの目は目標に向けてぎらぎらと光っていた。
それは、ソフトチームの方も同じ。
「よう、調子はどうだ?」
「いや、キツイわこれ。ベンチマークのソースの量が多すぎて」
隣の部屋に行くと、悠と宏がひたすらパソコンに向かっていた。ベンチマーク五種類の最適化、さらには複雑なコンパイラにさえ手を入れてるのだ、その工数は半端じゃないだろう。宏はいつも通りおどけた感じとはいえ、口から出た言葉は珍しく弱気だ。
一方の悠も、ずっとしかめっ面をしている。こちらも上手くいってはいなさそうだ。
「うげ、テストプログラムですらパスしねえ。俺『構文解析』のとこ触ってねえのになあ」
「じゃあその後だろ、ベクトル化んとこ?」
「ああ、なーんか上手く割付けてくれねえんだよな」
「どっかの条件設定ミスってんじゃね?」
「くーっ、吐かれたアセンブラ見てみるかあ」
「……しんどそうだな」
「ああ、まあな。オレがプログラム本体のソースをいじって悠はコンパイラの最適化をやってるんだが、二人だけでやる仕事じゃねえ」
「シュウ! この五十万行のコードを一晩でなんとかするのは俺にしかできねえって!」
「できるんじゃねえか」
でも、悠も宏も戦意は十分だ。全員が、最後の追い込みに燃えている。
「よっし、起動までは行った! 鷲流くん、頼んだ」
「んじゃ、負荷をかけるぞ。ほい」
「うううっ、固まったあ……」
「でも、とりあえず4.6GHzでシステムを起動するところまでは来ましたね」
「クロックの伸びは9.5パーセント、ってところね。わりといい感じじゃないかしら」
「検討、終わった」
「お疲れ様です、どうでしたか?」
「ある程度はいけそう。目標は、負荷時4.7GHzでの安定動作にする」
「ひえー、伸びるねえ」
「12パーセント弱、これなら柳洞くんの方がちゃんと出来ればいい線行くんじゃない?」
午後十時前、ハードチームの方には少しずつ光明が見えてきた。現状の伸びは9.5パーセント、もう少し性能を伸ばせそうだ。
正常に動いているかどうかの監視をしたり、狼谷さんが検討に入ってる時には代わりに操作をしたりと手伝っていた僕も、少しずつゴールが見えつつあるのを感じていた。
その時、ポケットが震える。電話だ。
取り出した画面に小市さんの名前が表示されているのを見て、僕はすぐに通話ボタンを押した。
「もしもし、お疲れ様です小市さん」
「やあ弘治くん、夜遅くにすまないね。明日からの本番に向けてどうかな?」
「あはは……今、最後の追い込み中です」
「そうか、忙しいだろうに悪いね」
「いえいえ」
蒼にアイコンタクトを送って、僕の代わりを頼む。爆音とどろく部屋の中心から離れると、改めて電話に集中した。
「さて、じゃあ忙しいだろうから手短に話そう。弘治くん、今日は僕の親友が悪いことをした。すまない」
「え、小市さんの親友って」
そこまで言って、僕は言葉を切った。小市さんの親友で僕に関係がある人と言えば、父さんしか居ない。
「……いえ。気にしていないと言えば嘘になりますが」
「ま、そうだよなあ。明日も話したいって言ったんだって?」
「ええ。直接話すのはさすがに気まずかったので父のマネージャーにお願いしたんですが」
「あっはは、『エスカレーション』までばっちりだね。あいつ、そりゃ断れないよなあ」
小市さんが苦笑いしながら呟いたのがわかる。マネージャー経由でお願いする、というのはどうも強力な一手だったらしい。
――そう、帰り際に僕はフォスターさんに明日も父さんと話す機会を設けてもらえるようにお願いしていた。事情を知らないのであろう彼女はぽかんとしていたが、数瞬後には笑顔でオーケー、と言ってくれている。
「そしたら、アイツから泣き言の電話が来てな。今日の話を聞いて、久しぶりに頭にきてしまってね」
記憶の中の小市さんは、いつもにこにこと穏やかな男性という印象だ。叱ってくれたりするのは由華さんの方。
その小市さんを怒らせてしまったあたり、やっぱり第三者から見ても今日の父さんは普通ではなかったようだ。
「親友として叱り飛ばしてやったから……明日も、懲りずにあいつと話してくれるか?」
「ええ、もちろんです。むしろ、私からお願いしているので」
「そう言ってくれるとありがたい」
「父さんのこと、まずは話を聞きたいと思ったので。何があったのか、何を思っていたのか」
「まったく……大人になったな、弘治くん」
「そう、でしょうか」
そんな実感はないけど、小市さんの感慨深そうな声を聞いている限りそうなのかもしれない。
そんな困惑を感じたのか、小市さんは明るく話を変えた。
……どう考えても、小市さんの方が数倍大人だ。当たり前だけど。
「明後日の夜はこっちで一泊なんだろう? せっかくだし、夕飯を一緒に食べよう。部のみんなも呼んでおいで」
「ありがとうございます、是非是非。みんなにも確認してみますね」
「うん、頼んだよ」
そう、明後日は午後から移動が入っている。明々後日の午前中に工場見学が入っているからだ。その見学する工場は、なんとポートランド、ヒルズボロという街にあるのだという。
事前に調べたところ、今いるサンノゼとの直線距離は九百キロ以上。大会期間中に飛行機に乗ることになるとは思わなかった。
その日の夜は工場の近くのホテルで一泊することになっている。懇親会みたいな夕飯は無くて、希望者はヒルズボロにあるIntechのオフィスの食堂を使えるそうだ。それを使わなければ特に問題はない。
「あ、そうだ。道香も呼びましょうか?」
「おっと、それはありがたいけど大丈夫なのか?」
「ちょっと様子見てみますね」
ちらりとみんなの様子を見てみると、道香の手はひとまず空いていそうだ。
「道香ー、お父さんから電話だよ」
「えっ、本当!?」
「行ってきていいわよ、こっちは任せてちょうだい」
蒼の言葉を聞いて、道香がこちらへとやってくる。それを確認して僕は電話に戻った。
「はい、今大丈夫みたいなので。代わりますね」
「ありがとう、助かるよ」
それから、やってきた道香に電話を渡す。
「話が終わったら、電話切っちゃっていいからね」
「わかった、ありがとうお兄ちゃん。もしもし、お父さん?」
話し始めたのを見て、僕は逆にみんなの元へ戻った。相変わらず、ああでもないこうでもないと話しながら色々な設定を変えて試している。
「お帰りなさい。道香のお父さんからだったのね」
「ああ。今日の話を父さんがしたみたいだ」
「あら、そこがお友達なのね」
「そうなんだ、大学の同僚なんだってさ。世間って狭いよな」
制御用のパソコンを既に狼谷さんに渡していた蒼が声を掛けてくれた。相変わらず凄い音を立てているマシンのせいで、普段より距離が近い。
「明日、なんとかなりそう?」
「ああ、父さんのことを叱ってくれたらしい」
「ふふっ、いいお友達なのね。道香のお父さんも」
「何か話してくれると思うんだ。今なら」
「ええ、きっとそうよ。私が出来ることはないのがもどかしいくらいだけど、これはシュウがやらなきゃいけないことだから」
「もう蒼には色々なものを貰ってるよ。だから、こうやって父さんとも話せるようになったんだ」
「ありがと、シュウ」
僕は本心で言ったのにお世辞のように取られてしまったらしく、蒼はふふっ、と笑った。本当に、感謝してもしきれないくらいだ。この感謝はずっと忘れないだろう。
「おっ、きたんじゃないっ!?」
「負荷は今、百パーセント」
「いいねえいいねえ、これで4.6GHz!」
「次、はい」
「うあっ、やっぱ固まったっ」
「さすがにそのままじゃ駄目かあ~っ」
「おっと、私たちも戻ったほうがよさそうね」
丁度よく作業チームの方から歓声が上がった。どうも、さっきまで動かなかった負荷をかけた状態での4.6GHz動作に成功したらしい。僕たちもみんなの輪に戻って、作業の手伝いを再開する。
短くて長い戦い、その最初の吉報は隣の部屋から届いた。
「いっこ終わったぞ」
そんなWINEが宏から届いたのが、日付が変わった午前一時ごろ。
「いっこって、五分の一か?」
「まあ手が空いてるなら来てくれよ」
「ちょいまち」
要領を得ないメッセージに困惑しながらも部屋を出ると、隣の部屋に入る。
「うーっす」
「もう無理だ……」
椅子の上では悠が伸びていた。確かに作業を始めてから七時間以上が経っているし、ハードウェアチームみたいに交代しながら休憩できる環境でもない。本当にお疲れ様だ。
「よう、そっちはどうだ?」
「4.6までは回ったけど、あと100がキツいな。砂橋さんと狼谷さんがマジになってなんとかしようとしてる」
「おお、あの二人が本気ってことは結構キツい壁なんだな」
「砂橋さんはともかく、狼谷さんはいつも本気だけどね」
「はは、違いねえ」
「で、何が終わったんだ?」
「悠の生命の灯」
「見りゃわかるけどさ」
「おい、人を勝手に殺すな」
「そしてその直前に、コンパイラがひとまず完成を見た」
「おおっ、マジか!?」
「八時間で手を入れられるとこなんて限られてるけど、今までのよりはもう少し賢くなったはずだぜ。時間が掛かりがちだったところの中でもよく出てきてる形だけはさらに効率よくできるようにした」
「え、六つ分全部か?」
「ああ、SPEC系は中に幾つかベンチが入ってるんだがそれもざっとな」
「ヤバすぎだろ……何十万行あると思ってんだよ」
なんと、あれだけ苦しんでいたコンパイラの改良がひと段落したようだ。しかも、そのために今日貰ったソースコードにもざっくりとはいえ目を通し終わったのだという。
「下手したら百万行単位だぜ、『目grep』力が高すぎるよなコイツ」
「ま、コード貰った時からちょこちょこ見始めてたからな」
これには宏さえも驚いているようだった。帰ってきたタイミングでゼロじゃなかったとはいえ、コードを貰ったのはわずか半日前。追い込まれた時のポテンシャルがここまである奴だとは、普段からその一割でも出せば試験で苦労することはないだろうに。
「俺の方は三つ片付いた」
「おお、さすがに時間掛かるな」
「まーな。悠から貰った時間かかる関数を弄ってくのは正気を失いそうだったぜ」
「んで、宏から貰ったのを新しいコンパイラで動かして、ざっと取った数字がこれ」
コンソール画面に映し出されている数字を指さす悠。確かに、その数字はさっきの表計算シートに表示されているものより幾分か大きい。
「申し訳ないけど一割は無理だった、五から七パーくらいかな」
「それだけでも速くなってるならすげえよ」
「ってわけで、俺は今から宏を手伝うわ。終わったら寝ていいよな?」
「もちろん。あ、一応全部終わったら一回こっちに来てくれ」
「りょーかい。いい数字持ってくわ」
「頼むぞ」
今だけは、その小さい背中が大きく見える。いや本当に、今だけは。
◇
そんな吉報の一時間半後、午前二時半。
「……三十分!」
「っしゃ!」
蒼の時間を告げる声。
その直後、ファンの音に負けないくらいの砂橋さんの喜びの声が、ハードウェアチームの居城になっていた狼谷さんと砂橋さんの部屋に響いた。
ついに、ギリギリいけると踏んでいた4.7GHzでの安定動作を実現するレシピを見つけ出したのだ。
「電源も安定してましたし、温度もなんとか大丈夫でした!」
「最後は何度?」
「九十一度ですが、温度上昇は止まっていたので大丈夫かと!」
「ひえー、均衡点たっか。本当にこれ以上は無理だね」
「次は水冷にします? 油浸にします? それとも液体窒素?」
「そんな可愛く言う選択肢じゃないよそれ……」
「電圧は、最大電圧より0.1ボルトくらい低い。これなら、四十八時間も平気」
「ちなみに寿命は減るの?」
「二年は持たないかもしれない」
「ひゃー、結構攻めてるね。商業チップならアウトだ」
「でも、一年は持つ。条件を色々絞ってシミュレーションもしてみたけれど、これだけ安定動作出来ている条件であれば配線が切れることはほぼ無い」
「狼谷ちゃんの製造があとはどれだけ安定してるか、だね」
「百パーセントはない。でも、九十九パーセント以上は大丈夫」
この設定であれば、と狼谷さんのお墨付きもばっちりだ。狼谷さんだけでなく、砂橋さんも頷いている。
ここまで尽くしたうえで、本番中に二台以上故障してしまったなら仕方ない。全員でそう思えるくらいの設定が完成した。
「……ふふっ、本当によかったね。狼谷ちゃん」
そして、ふふっ、と柔和そうな笑みをこぼす星野先輩。その笑顔からは、なんだか安心したような印象を受ける。
「何か、ご存じなんですか?」
「いんや、なんでもないよ。狼谷ちゃんが楽しそうでよかったって、ただそれだけ」
でも、詳しく語ってくれることはなかった。きっと、星野先輩の中でも何か思うところがあったのかもしれない。
「さ、じゃあさっそくもう一台にこの設定を『デプロイ』しましょうか」
「うし、行くか」
「結凪、変える設定はメモしてる?」
「安心して、ばっちりだよ。待機時間中にマニュアルにしといた」
というわけで、全員で隣の部屋に押しかける。
「うおっ、大群だな」
「ツインの部屋に八人は狭いですね、やっぱり」
「入れる場所があるだけ凄いと思うよ、余裕もちょっとあるし」
「どこまで行った?」
「あと一つ、ラストを残すだけだ」
隣の部屋では、宏と悠がまだ改良の真っ最中だった。あと一つまで進めているのはさすがだ。
「ってか、この部屋静かじゃない?」
「マシンの音が小さいですね」
「ってか、マシンが見当たらないわね。どこに置いてるの?」
「あー、あまりにもうるさいから洗面所に幽閉してる。トイレが騒音地獄」
「なんか静かだと思ったらそういうことかよ」
「洗面所って、湿気大丈夫なの?」
「お湯は一回も出してないから大丈夫だと思うぜ」
確かに、同じマシンを動かしているはずなのにやけに静かだと思った。来た時にはベッドの下にでも沈めてるのかと思ったけど、まさか洗面所とは。確かにシャワーを浴びたりしてなければ湿度も大丈夫だろうけど。
「そっちは終わったのか?」
「なんとか、4.7GHzまでは」
「うし」
「五分くらい予備機落としても平気?」
「ああ、大丈夫だ。画面とキーボードはそこの机の上の奴な」
「ありがとう。さ、ちゃちゃっとやっちゃいましょ」
自分のノートパソコンで作業を続ける悠と宏を横目に、僕たちはさっきのレシピ通りに設定を変える。果たして、予備機も4.7GHzでの起動に成功した。
「折角だし本番と同じ環境で数字取ってみましょうか」
「バイナリのありか送ったわ、ここのstarttest.shを実行してくれ」
「時間はどうなってる?」
「とりあえず三十分にしてあるから、設定は変えなくていいぜ」
「了解、ありがと」
「特にSPEC系はいっこあたりの時間短いから、そこだけ注意してな。結果のデータがふらつくかもしれん」
「任せて、なんなら向こうでも並列して走らせちゃいましょうか」
「あ、そうしようか。そうすればSPECは一時間くらいかけて走らせられるし」
さらには実機での検証も始めていく。砂橋さんの部屋のバラック機もセットアップして、諸々の設定を済ませてベンチマークを走らせる。
「サンプルデータを食わせて、挙動を確認して……よっし!」
「おっ」
「終わった?」
「ああ、最後のIMDBベンチも終わった!」
「おおー、SPECの終わりに間に合わせてきたね」
それから一時間十五分くらい、SPECベンチ二種が終わるかどうかのタイミングで悠の仕事も終わった。
SPECを流し終わったタイミングで洗面所で頑張る予備機に送る。ベンチマークを走らせている間も、コンパイル結果がおかしくないことを全員で確認したり役目を終えたバラックマシンを解体したりと仕事は山盛りだ。
「……ほい! スコア出た!」
「全部終わったわね!?」
「ああ、これで全部だ」
「スコア送ったよ、蒼あとはよろしく」
「はあ……二時間の負荷はばっちりでしたね。温度も結局均衡点で止まったままでしたし、よかったです」
「エラー落ちもないね、おねーさんも安心しちゃった」
三十分後、ついにエラーもなくベンチマークは動ききった。狼谷さんが太鼓判を押してるだけあって、オーバークロックしているとはいえシステムの安定性も完璧だ。
これなら……確かに、大会期間中であれば無理のないオーバークロックだ。今の僕たちみたいなもので、何カ月もこの生活をしていたら死んでしまいそうだけど、すぐにどうにかなってしまう程ではない。
時計を見ると午前四時四十五分、ホテルの集合までもう三時間半。ギリギリだったけど、なんとか間に合った。
「よしっ……!」
少しほっとしていると、蒼が小さくガッツポーズを見せた。ということは?
「みんな、見てちょうだい」
そこに並んでいたのは、綺麗な黒字たち。プラス五パーセントから十パーセントといった数字が踊っている。
「ってことは――」
「アタシたち、負けない戦いができるかもしれないってこと」
「ふうー、これで赤だったら泣くしかなかったぜ」
「Intechのマシンが落ちることを祈ることしか出来なくなってましたね」
「……よかった」
そう。今日の時点のIntechのマシンに勝ったのだ。
もちろん、これがそのまま勝利に繋がるわけではない。でも、Intechのマシンに少しでも勝てる可能性が見えてきた。
あとは、僕たちみたいにIntechの人たちが徹夜で改良とかをしてないことを祈るだけだ。
「本当によかった、くあぁ」
砂橋さんがあくびを漏らす。緊張が解けると、僕にも眠気が襲いかかってきた。
そう、あと残っている問題はまだみんな一睡もしていないこと。全員で明日の荷造りを速攻で済ませる。考えることはみんな同じ、ちょっとでも長く寝たい。
「よしっ、荷造り出来たわね! 明日は一応八時半集合よ、忘れものとか絶対ないように!」
そんな蒼の一言で、僕たちは各々の部屋へと寝に戻った。
◇
「おはようございます、って皆さん大分お疲れですね」
「あはは……昨夜、というか今朝まで作業してましたので」
朝八時半、全員三時間以下の睡眠となった僕たちはかなりグロッキーな状態で集合していた。みんな目が細くなっている。
この十五分前には、
「……砂橋さんの部屋から返事がないわ」
「おい嘘だろ、今日の鍵を握る二人が」
「まだ寝てるのかしら……ちょっと様子見てくるわね」
「ああ、頼む。俺は悠と宏が二度寝してないか見てくる」
という会話が繰り広げられたばかり。ちなみに砂橋さんたちはちゃんと起きて支度をしていたらしく、悠と宏はひどく眠そうな顔をしながら魔剤を酌み交わしていた。何してんだ。
だけど、そんな眠気も会場に着いたら吹き飛んだ。ここから一時間ちょっと、大会の開会式までに五台分の設定を変更して、動作の確認までする必要がある。
「一号機、設定完了ですっ。負荷試験を始めますね」
「えーっと、ここと……あとは……コア電圧を、えーっと」
「三号機もとりあえず起動した、こっちも負荷流し始めるな」
「よし、順調だな」
「んじゃ、俺はコンパイルしたやつを置いてくな。マシンの指定あったっけ」
「とりあえず全部置いておいてくれ」
幸い、セットアップ自体は順調に進んだ。狼谷さんが設定を作っただけあって、本番機五台は周波数を上げても無事動作。まずは第一段階クリアだ。
「おお、二人ともお疲れ」
「はあーっ、クッソ緊張したぜ」
「お前でも緊張するんだな。俺は全然だったぞ」
「や、プログラムじゃなくて英語がな。やっぱ本場の英語ははえーわ」
「いや、本筋はそこじゃねえから」
短い時間一杯まで負荷を掛けて安定性を確認している間に、別動隊を組んで今回の性能試験に使うプログラムのチェックを受けていた悠と宏が帰ってきた。
「ったく、そんなにニヤニヤしやがって。審査は?」
「もちろんパスよ。当たり前だよなあ?」
「俺らに掛かればこんなもんよ、昨晩何回テスト流したと思ってんだ」
「お前らの言う通りだな」
当然、二人の笑顔が示す通り検査はパス。残り三十分を切っている中で再改修は厳しかったから、本当に良かった。これで第二関門もクリアだ。
そして、開会式の始まる五分前には。
「負荷試験終わったよん。温度も電源波形も問題なし」
「よし……」
「あー緊張したっ、温度の上昇もそこまでじゃなかったね、もうちょっと電圧下げてもこのシリコンなら大丈夫だったんじゃない?」
「あら、もう一回昨晩の地獄を味わう?」
「それはとっても避けたいねえ!」
「エラーもなし、大丈夫そうだね」
無事、全部マシンの負荷試験が終わった。本番は丸二日以上動き続けるから、ここで落ちていたら話にならない。これで、全ての関門をクリアした。
全員が安堵のため息をつく中、全部のマシンのエラーレジスタをチェックしていた狼谷さん。
「……ふう」
その彼女が、ようやく安心したようにため息をついてくれた。
ただでさえ緊張しいな狼谷さんだ。今日はそれに加え、眠気や昨晩作った設定への不安もあったんだろう、ほぼ言葉を発していなかった。
「よかったな、狼谷さん」
「本当に、よかった。エラーが増える兆候はなし、シリコン的にもこの電圧、この速度で動けばエラーレートの増加は本当にわずか」
「よし。ありがとな」
「私こそ。ありがとう」
それから、彼女はふっ、と表情を緩めた。
「こうやって、みんなとここまで来れて。直前まで作業して。楽しかった」
「まだ終わってないぞ? 本番はこれからなんだから」
「でも、本番が始まればすることはない」
「そりゃそうなんだけどね」
ふふ、と僕も笑みがこぼれる。
そう言ってくれると、素直に嬉しい。校舎裏で狼谷さんと最初に話をしたときは、こんな風にアメリカに来れるなんて思わなかった。
「Opening Session will start in――」
「おっと、もうそろそろ開会式か」
会議室全体に放送が入る。いよいよ開会式だ。
「みんな、準備は出来たか?」
「全部のマシン、準備完了だぜい」
「ファイルも必要なところに置きましたっ」
「よーし。じゃあ、後は楽しもう」
「ふふっ、もう勝った気なの?」
「違う違う、ここまで来たら一喜一憂しても仕方ないってことだよ」
「ごもっとも。シリコンに今から手を入れるわけにはいかないし」
「あとは祈るだけですもんね。同じように祈るなら楽しんだ方が勝ちですからっ」
「あははっ、違いないね。あたしも初めてのアメリカだし、色々楽しみたいもん」
道香の言葉で、全員が笑顔になった。この道香の前向きさには本当に救われてばかりだ。
「じゃあ、一旦マシンの電源を落とそうか」
「またそんなリスキーなことを」
コンピューターは、恐ろしいことに一度電源を落とすともう二度と電源が入らなくなってしまうこともあるのだという。中の部品が故障しながらも最後の命の灯を燃やして頑張っていたところで電源を落としてしまうと、その最後の命の灯を燃やし切った部品が完全に死んでしまうかららしい。
というわけで、今動いてるマシンの電源を落とすことは悠の言う通りリスキーなこと、ではあるんだけど。
「仕方ないよ、だって」
「今だってそこそこ大きな声で話さないと、会話が怪しいじゃない」
そう、五台分の道香謹製超強力クーラーの騒音のせいだ。これでは開会式どころか近くでは会話もままならない。放送の音ですらようやく聞き取れるくらいだった。
「ふふん、一回電源を落としたくらいで駄目になるような部品選定してませんっ」
「作ったばっかだしね」
という自信気な道香、そして苦笑いの砂橋さんの言葉を合図に僕たちはマシンの電源を一度落とした。
「それでは、世界高校コンピュータ設計大会の開会式を始めます」
始まった開会式は、もちろんすべて英語。同時通訳なんて便利なものはないから、なんとか聞き取るしかない。
Intechの社長の簡単なスピーチ、それに大会のスケジュール説明などを聞くこと三十分、いよいよシステムの準備に入る。
「よーし、立ち上げてくよ」
「こっちは任せてもらっていいよ~」
みんなで手分けして、マシンの電源を入れていく。予備機も入れて六台が再び音を発し始める。この耳がおかしくなりそうな音で安心する日が来るとは思わなかった。
「おーし、こっちは起動したぜ」
「三号機から五号機、正常起動」
「二号機、予備機もオッケーですっ」
ほんの少しの懸案事項だったマシンの起動は無事完了。事前に貰っていた通りに設定をし て、アプリを起こして。
「IPアドレス、ちゃんと降ってきてるぜ」
「ネットワーク、前の表示もグリーンだよっ」
「アプリは起こしたか?」
「一号機、LIMPACK用の本番プログラム起動済だ」
「二号機はSPARCintの準備完了です」
「三号機、SPARCfp。準備完了」
「四号機、OpenFOAMの準備出来たよっ」
「五号機、IMDB混合ベンチで上がってるよ」
「予備機は予備機用の自動起動プログラムが上がってるわ、これでソフトはOKね」
「温度、電源」
「えーっと、全マシン正常だね」
十時五十五分、ついに全部のマシンの準備が終わった。性能計測開始の宣言と同時に大会のシステムから計算開始の命令が出るから、後は待つだけ。
爆音が止まらないことを祈りながら、その時を待つ。前のスクリーンの準備状況は既に全部の学校がグリーン。うちの学校以外の島からもそれなりのファンの音が聞こえている。
五分が十分、十五分にも感じるほど待ちつづけて。
「スリー、ツー、ワン……スタート!」
その掛け声が響いた瞬間、周りから響くファンの音がさらに大きくなった。
「計算開始来たな?」
「一から三号機、スタート」
「四、五号機も始まってるよっ」
「システム負荷もきっちり百パーセントだ」
「よしっ、電源、温度!」
頬にわずかに感じていた風の温度がどんどん上がっていく。
「電源電圧、全マシン正常。最初のピークも耐えた」
「よしっ、さすがわたしの電源回路ですっ」
「温度も今のところ大丈夫だね。あとはちゃんと止まってくれるか、桜桃ちゃん次第だね」
「そっちも当然大丈夫なはずですっ、さっき大丈夫でしたから!」
電源も温度も大丈夫。道香の魂の設計の成果はきちんと出ている。
「一応MIIのコレクタブルエラーの数字確認しといて」
「えーっと、ゼロ、ゼロ、ゼロ、ゼロ、ゼロだ」
「よかった、本番でも大丈夫だ」
それに、ギリギリまで掛かったCPUコアが固まる問題もグリーン。入念に確認したとはいえ、絶対は存在しない。本番で出なくて本当によかった。
「よしっ……」
道香がそれを聞いて、小さくガッツポーズをする。
それから二十分ほど、システムの様子を交代で確認していく。温度の上昇も今まで通り九十度くらいで止まり、ついにシステムは安定したまま四十八時間以上のテストの道のりを歩み始めた。
「大丈夫か?」
「ああ、完璧だ。これで安心して飯にいけるぜ」
「はーあ、よかった。気が抜けちゃったよ」
「一安心、だな」
最後まで色々なログを漁って確認をしていた宏が、親指を立てる。これで僕たちの出来ることは終わりだ、落ちないように祈るだけ。
「この後はお昼ご飯で、次が十三時からだっけ?」
「はい、午後は併設されてる博物館を見た後発表会ですね。発表会の会場は別みたいですが」
「まあ、この騒音の中じゃ無理だろうなあ」
星野先輩の質問に返すと、悠がもっともらしく頷いた。
僕たちのマシンが多分一番うるさいけど、他の学校のマシンでさえそれなりの騒音を発しているこの室内。十二プラス一台の騒音は馬鹿にならず、この部屋で成果発表会は無理があるという判断をするのも納得だ。多分毎回こうなんだろうなあ。
「というわけで、まずはお昼にしましょうか」
「さんせーっ」
そう言って、昨日も使った食堂に向かいかけた僕たち。
「Hi, Syuryu-san」
でも、僕のことを呼び止める声があった。
「は、はろー」
「WHat’s your system like?」
「えーっと、わーきんぐべりーぐっど」
「THat’s Great!」
「お、おおっ、さんきゅー」
フォスターさんだ。向こうも気を使ってくれたらしく、かなりゆっくり話している。頼みの綱の木峰さんと松見さんはみんなと一緒に食堂に向かってしまったから助かった。
とりあえず僕の英語力を頑張って使って返事をすると、手を握ってぶんぶんと振られる。異文化交流、という感じで目が回りそう。
「He will have meeting with you」
「……おーけー」
「Twelve fifteen, room two three five」
「とぅえるぶ、ふぃふてぃーん。るーむつーすりーふぁいぶ、おーけー。さんきゅー」
でも本題はこっちだ。父さんは今日も僕と話してくれる気になったらしい。小市さんが怒ってくれたのが効いたのか、昨日の帰り際にフォスターさんにお願いしたのがよかったのか、それともその両方か。
いずれにせよ、僕にとっては嬉しいニュースだった。
「十二時十五分、235会議室……場所は昨日と同じだな」
忘れないように、ちょっと口に出して再確認。僕の脳内翻訳は間違っていない、はずだ。
「Good Luck」
「ゆーとぅー」
それから、フォスターさんはどこかへ歩き去ってしまった。ちらりと時計を見ると、時間は十一時四十五分過ぎ。
「まずは飯、かな」
時間はまだある。腹が減っては戦はできぬ、とも言うし。
そうして僕は背筋に流れた冷たい汗に気付かないふりをしながら、みんなが向かった食堂へと足を向けた。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます