スーパーコン95 (SuperCon '95)

ドキュメント:スーパーコン95
「優勝は六甲高校,チーム manmaru!」

審査委員長のこの発表を聞いた瞬間, チーム manmaru の池辺 貞郎君,梅津 高朗君(六甲高等学校)は, 思わずガッツポーズをとった. 栄えある第1回スーパーコンピュータコンテストの優勝チームとなり, 副賞のサンディエゴ行きの権利を獲得したのである.

ここまでの過程をドキュメンタリー風に追ってみよう (なお,文中は敬称略. 各チーム名については予選結果参照).

8 月 11 日(金)

予選プログラム〆切. 配達の都合で,まだすべての解答が届いてはいないが, この時点で郵便,e-mail を合わせて 20 チーム以上から解答があったので, 実行委員会はひとまず安心. 結局,37 チームから解答があった.

^_^; 夜の 11 時ころ e-mail で解答を送ってきたチームもあった.

8 月 14, 15 日(月,火): 予選プログラムのテストランならびに予選審査

まず,ワークステーション上で各プログラムを実行し,その速度,正確さを 測定する.機種の違いなどから,すんなりコンパイルできないプログラムが 数件あったが,{斉藤,小野,松田}@センターの頑張りですべての稼働に 成功.

テストランの成績を見てみると,上位 5 チームがかなり速い.これらを,ま ず通すことにする.その他のチームについては,レポートを慎重に審査し, いろいろと工夫しているチームを選んでいき,結局 11 チームを選抜した (予選結果).最後の 2 チームは,優劣をつけ がたかったので,結局,両方通過とすることにした.

15 日の午後,予選通過チームに結果を伝え,本選参加の意志確認をする.関 東以外のチームからは欠席も出るかと思いきや,全チームから参加の返事. 大変嬉しい誤算だった.

8 月 18 日(金):講習会&スパコン使用 1 日目

三々五々と高校生がやってくる.緊張の中にも結構リラックスした雰囲気が 見える.それでも、渡辺@審査委員会から 本選課題の説明があると,メモをとる チームもちらほらあり.本選にかける意気込みが感じられた.

実際にスパコンを使うための端末が置いてある部屋で,坂本@クレイより,スパ コン特有のプログラミング技術について講義を 2 時間受ける.ただし,講義とい うよりは,クレイ社製品の宣伝と,坂本の独特の語り口とキャラクタに よる「コンピュ−タ漫談」になってしまい,肝心の講義はほとんど行なわれなかっ た.(しかし,これが結果としてよかったことが後でわかる.)

スパコンに入るエントリマシンとスパコンへのパスワ−ド登録を行ない,UNIX の 使い方を講義する.コマンド,エディタ,プリンタ,X ウィンドウの使い方に重点 が置かれる.エディタは emacs を教えることにしたが,わずか 10 分程度の講習で, ほとんどのチ−ムがそれ以降,特別苦労することなく,使いこなしていたのには驚 いた.X ウィンドウに関しても,何の抵抗もなかったようだ.(注:事前に,ワ− クステ−ションと UNIX を使ったことがあるのは slowdown の他にはなかった.)

パソコン上のエディタをどうしても使いたいチ−ムもあったので,フロッピィで転 送する方法を教える.それらのチ−ムは,パソコンでプログラムを作成し,それを 毎回フロッピィでエントリ計算機,スパコンの順にファイルを転送し,デバッグし ていたらしい.こちらから見ると煩雑にみえるが,エディタの使い勝手もプログラ ム開発にはそれなりに重要で,わからないでもなかった.

夕方4時頃から,計算機を一斉に使い始める.nada-?(多分,c チームだと思う) が,「30 秒で解けた!」と叫び,周りの注目をいっせいに集める.プログラムを フロッピィで持参し(本選課題を予告してあったので),早速スパコンにプログラ ムを移し,40 個から 5 個を選ぶ問題(ジャンルA問題)と, 10 個を選ぶ問題(ジャンルB問題)を結構短い時間で解いてしまったようだ. 周りのチームは結構焦っていた.(後で判明したのだが,この プログラムには致命的な欠陥があったとのこと.)

スパコンを使える時間は,10 時から夜の 7 時までとしていたのが,当然のように すべてのグル−プが 7 時まで残っていた.

夜間もネットワ−クを通してスパコンを使いたいという要求あり.当然の要求では あったが,使えないグル−プもあったため,実行委員会協議の上,これは認めない こととした.来年以降は検討する必要があるかもしれない.

課題,エディタ周りの質問が頻発したので,その度に,質問と回答の内容をファイ ルに書き込み,それをすべての高校生が見れるような体制を組んだ.このやり方が 本選最後まで継承される.ただし,思いの他,情報を読んでもらえず,何度か同じ ことを説明しなおさなければならなかった.

8 月 19 日(土):スパコン使用 2 日目

当初,土・日曜は休みと考えていたが,それではプログラムが間に合わないという ことになり,土・日も 10 時から夕方 5 時まで使えるようにした.センター職員の 方々も,休み返上で協力して頂いた.土曜日は,半分以上のチ−ムが来ていたよう である.

東京近郊のチーム,都内のホテルに宿泊したチームはいいのだが,そうでないとこ ろは,家や学校などで考えていたようである.関東以外からの参加チームは,ホテ ルに泊まる人もいたが,親戚などの家を利用させてもらった人も多かったようだ. たとえば,nada-? (多分,b チームだと思う)の一人は,鎌倉からの通いで,結 構大変な思いをしていたようだ.全国大会ということであれば,今後,宿泊のこと も考慮しなければならないだろう.

^_^; nada-c は,親戚の家が秋葉原にあるということで,そこに宿泊したようだ. 結構パソコンショップに出入りしていたようで,これが足を引っ張ったか?

8 月 20 日(日):スパコン使用 3 日目

10 時から使えることになっていたが,速いチ−ムでも 11 時過ぎくらいから, ぼちぼちやってきた.結局,半分位のチ−ムがこの日も集まった.

面白いもので,各チームが陣取る場所(端末)が段々固定し,この日,以降,すべ てのチ−ムが最後まで同じ場所を使ってプログラムを作っていくことになる.

この日の段階では,ほとんどのチ−ムがどうやって解くか悩んでいる状態で,とても プログラムを組めるという雰囲気ではなかった.全部を見たわけではないが,多分, ほとんどのチ−ムがプログラムらしきものはできていなかったはずである.ただ,時 間を計る方法を聞いてきたチ−ムがあったので,そのチ−ムはある程度メドがたって いたのかもしれない.

この段階で,ジャンルA,B(40 個のうち,5 個,10 個を選ぶ問題)は,しらみつ ぶしでも何とかなるが,ジャンルC(ノ−ジャンル)になって,例えば,20 個を選 べといわれたら,どれくらいの組合せの数になるのか,計算しはじめた.ただ,それ でも,各チ−ムの感覚は,いいアルゴリズムとプログラミングのテクニックで 10 分 以内になんとか 30 問解けるだろうという楽観的な雰囲気であった.

8 月 21 日(月):スパコン使用 4 日目

一応のプログラムが出来上がり,各チ−ムとも時間を計り始めた.そして,これまで パソコンを速くしたものがスパコンだという感覚でプログラムしてきたけど,ようや く,何か変だと気づき始めた.全然速くないのである!!スパコンといえども,特に 工夫をしなければ悪くするとパソコンの数倍程度の性能しか出ないのだ.

審査委員会の方も,このままでは 10 分以内にある程度のポイントまで達するチ −ムがないのではないか,という不安にかられ,再度,スパコン特有のプログラミン グ技術についてメモを配った.

確かに 18 日の時点では,彼らの意識の中に,ベクトル化,並列化に対する関心はな かったはずである.だから坂本@クレイの講義は正解だった.あそこで,くどくど説 明していたら,高校生はかえって中途半端に理解し,プログラムの開発にも迷いが生 じたはずである.というわけで,彼らはスパコンということを忘れて,単純にパソコ ンの延長でプログラムを書いてきた.そして,そのプログラムが,ここに来て,どう も時間以内にとても終らないことに「身をもって」気づき始めた時に,改めて指示を 与えられ,飛びつくように,並列化に向かってプログラムを修正し始めていった.そ の吸収力のすごさにはおどろくばかりである.

坂本@クレイは,こんな単時間に並列化の技術を身につけれられては,スパコン技術 指導者の立場がないと嘆いていた :-)

実は優勝チ−ムの manmaru は,この時点ではまだ,とりあえずの並列化しか行なって おらず,最終結果の 1000 倍も遅いプログラムしか手にしていなかったという.

どのチ−ムも並列化の効果に,一時失いかけていたやる気を取り戻し,さらに速くす る方法を検討し始めた.一番、単純なアイデアはすべての組合せをテ−ブルで持って おくというもので,数チ−ムがこうした方法を採用した.ただし,すべての組合せを 指定されたメモリ量におさめることは不可能で,当然工夫が必要になってくる.それ でもあえて,無謀にも組合せのすべてをデ−タをしてプログラム中に持つというとん でもないチ−ムも現れた.当然,コンパイル時間がすごくかかるので,デバッグ作業 が大変!

8 月 22 日(火):スパコン使用 5 日目

〆切が 24 日昼とせまり,さすがどのチ−ムもせっぱつまってきている様子がありあ りと感じられた.

nada-{a,b,c} の各チームはこの時点ではまだ余裕があるようだ. apcc は黙々と作業を行なっている.sakugami は女子が一人入っているせいか, なんとなく華やかな雰囲気があり,周りのチ−ムとも和気合い合いといった感じで いい印象があった.

一方,同じ高校の depend は,一人で黙々とプログラムを書いていた.彼もパソコ ン感覚のプログラム(でも,非常に短く,かつそれなりに速い)を書いていて,10 分 の壁を越えられず立往生していた.しかし,並列化することで,どうにかメドがたっ てきたようだ.

岡山から来た asahi は 3 人いつも一緒に作業しており,かつ,にこやかで,いい雰 囲気を持っていた.(一生懸命考えていたようだが思いのほか,いい成績が残せなか ったのは残念である.)

duckbill は,この時点で,すべての組合せを表で持ち,2 分岐探索で高速な検索を やる方法を思いついており,かなりの自信を持ち始めていた.ただ, 優勝した manamru チ−ムの追い上げには気がついていなかったようである. というか,manmaru が最終プログラムのアイデアを思いついたのは,この日の夕方 以降であったそうだ.(正確には翌 23 日だったか?)

slowdonw, kawago の両チ−ムは,淡々とマイペ−スで作業を進めていた.それほど 強い自信はなかったようであるが,それでも最後まで頑張ろうという気概が見えて いた.

審査委員会では,この日の夕方に公開の質問会を開き,再度高校生たちを刺激する ことにした.なるべく彼らの力を引き出してあげたい,という気持ちだったのであ る.

公開質問会の席上,渡辺@審査委員会は,「100 ポイントぐらいとれれば上出来」 と発言した.渡辺が実際,いくつかのテストをしてみた経験からの推測だったが, この時点ですでに,多くのチームが,このはるか上を狙っており,「100 ポイント で上出来」と思っていたのは,渡辺だけだったようだ.(これが,渡辺が赤恥を かく原因となったのである.)

なお,この日から,最終時間を夜 9 時とし、開始時間を朝 8 時とした.

8 月 23 日(水):スパコン使用 6 日目

〆切まで,あと 1 日と迫り,なんとか 30 問を解こうと,各チ−ム必死になってく る.その一方で,万策尽きて,多少ダレ気味のチ−ムも現れてくる.

manmaru は非常に元気で,メモリの増強をなんども審査委員会の方に訴えてくる. 委員会の方は,苦笑しながらも要求は受け付けなかった.それは公平をきすという 意味の他に,与えられた条件の中で工夫して欲しいという期待もあったからだ. (実際,manmaru, duckbill は,我々の期待に答えるかのように,見事な解決法を 出してくれた.結果解説参照.)

duckbill は勝つ自信があったようで,かなり余裕で計算機に向かっていた. manmaru の結果には気付いていなかったらしい.nada-{a,b,c} は,まだ,エンジン がかからない.

この日は,終り 9 時になっても,duckbill を除いてなかなか帰ろうとしなかった.

自らプログラムを作り,「まあ,これでいいかな」と思っていた渡辺@審査委員会は, その日の審査委員会の席上,現場につめている他の委員から,各チーム,かなり速い プログラムを作っているとの報告を受け,慌てて手直しを始める.(しかし,時すで に遅し(PM 11:00)!徹夜したのだが... 詳しくは本選結果参照.)

8 月 24 日(木):スパコン使用 7 日目

いよいよ解答〆切当日.8 時ぴったりにきたチ−ムがあった.当然,いくつかの チ−ムは 9 時前に来ていた.nada-c が寝ぼうして,遅れてやってくる.急速に, プログラムを直していたが,いくらなんでも手遅れの感がある.

manmaru, duckbill は,〆切 30 分前には終了し,涼し気な顔.一方,最後まで 苦しんでいたチームも少なくない.坂本@クレイが,端末画面に,終了のタイマー を表示し,皆の緊張をあおる.

そして〆切!スパコン C916 が shutdown される.みな,7 日間の戦いに,それな りに満足した様子.その後,渡辺@審査委員会から,今回の課題の背景などについ て説明を受ける.

午後より,審査開始.ひとことで言えば,プログラムをコンパイルして,実行させ, 時間を計るだけである.しかし,うまくコンパイルされないものがある.パソコン 上でテストしたものを急いでそのままスパコンに持って来たのだ.コンパイル条件 が指定したものと違うのもあり,これにも一苦労.

さて,実行.答えの変なものが続出.問題ファイル名が指定したものと違うのが, いくつかあった.また,出力が指定したものと違ったものも多かった. なるべく好意的に解釈してあげることになり,{持丸,渡辺}@審査委員会が, 解釈表を作りながら,一つ一つ目で追って正解/不正解をチェックした.

さらに,テスト問題の方にも間違い(同じ石が重複していた!)が見つかり, このために,実行&チェックを何度かやり直した.全チームの得点が出たのが, 夜の 8 時頃.明日のデモの準備などして,終了は 11 時.

この間,我々審査員一同,各チ−ムどれだけ頑張るかなぁという期待を持って, 作業を進めていたせいか,疲れはほとんど感じなかった.むしろ,非常にワクワク 興奮の連続であった.特に、優勝した manmaru,準優勝の duckbill のプログラム を流した時は,我々の間に驚きの声が一斉にあがった.manmaru が 4.7 秒, duckbill が 6.9 秒で全問正解!我々の予想を 100 倍も上回る結果である. とくに,坂本@クレイは,クレイ C916 の性能を活かし切った manmaru のプログ ラムにただただ感激.

8 月 25 日(金):審査結果発表

いよいよ発表の日.高校生たちは,まだ審査結果をしらない.田村先生のス−パ− コンピュ−タを使った流体シミュレ−ションを講演を聞きながらも,どこか落ち着 かない様子.特に,優勝しそうなチ−ムはなおさらである.

昼食を高校生と一緒にとる.こうやって一緒に会食して,いろいろな話をし,また, 聞けてよかったと思う.

審査発表の前に,各チ−ムがプレゼンテ−ションを 3 分程度行なう.ほとんどの チ−ムが,話が上手で,かつ,簡潔に内容を伝えていた.各ジャンル 1 問ずつ, 計 3 問を 1 分以内に解くというデモも行なった.解ければ時計が緑になり, タイムアウトになると赤くなるという仕掛け(by 田中@クレイ)は,単純でかつ 明解で効果は抜群.

^_^; アルゴリズム担当者が,途中,山登りに行ってしまった nada-b は, 最後にはプログラム作成を半ば諦め,スパコン上で何とテトリスを作っていた とのこと.いやはや...

そして表彰式.最初に述べた manmaru の優勝,以下, 各チームの成績が発表されたのである.

表彰式後のパ−ティ.どの高校生も,皆,晴れ々々とした顔をしている.仲間意識 も高く,全員の住所録など作ったりしていた.

^_^; 田口@審査委員会が「日本のビル・ゲイツになってくれ!」と叫ぶと,一同, 「オー!」と奇声をあげる.頼もしいのか,あるいは単に調子がいいのか?

最後に

今回のコンテストで色々なことがあり,これに関係した多くの方々がそれぞれに いろんな意味で感動を受けとることができたことは大変すばらしいことだったと 思う.特に,高校生の諸君が,コンテストの合間に,交流を深め,情報を交換し あう姿には純粋に感動させられた.我々,大人にはすこしこそばゆい気持ちにさ せられる光景かもしれないが...