ACM-ICPCプログラミングコンテスト 3日目

  • 午前中にパラレルチャレンジがあります。

パラレルチャレンジでは、複雑な世界のゲームちっくな課題にたいし、短時間でどのチームよりも強いコードを書くことが要求されます。いわばプログラミング版ロボコン。今年のお題はサッカーゲームのAIでした。BlueGeneをもってきてるだけあって、6チーム*5プレイヤー*プレイヤーひとりあたり1CPU+物理計算に2CPUを使って32CPUの並列計算でゲームを処理するという鶏肉牛刀っぷりです。与えられるのは設計1時間、コーディング2時間と昼食のみ。夢中のコーディングの末、僕たちのAIが手にした必殺技とは!?

・直角ダッシュ
 ボールに向かって走るだけの選手が多い中、ボールの到達地点を予測して最適な角度で走りこむ。時には目的のボールに対し直角にすら走る。
・団子シュート
 ボールを確保したとき近くに味方がいればパスをする。パスをされた味方はそれ以上パスをせずシュートしにいく。これはパスで入るチームワークボーナス得点を稼ぐため。

こういうシンプルに強い戦略が強いというのはこの前のづんこのことで証明済みだ!と息巻きつつ制限時間終了。あとは今夜のディナーで結果が出るのを待つばかりだ。


  • 午後からは上海観光でした。

今日の写真はテレビ塔です。球をモチーフにしたデザインがユニークな上海のランドマークです。展望台からの眺めはあんまり良くありません。上海は埃っぽい町なので。
ガイドをしてくれた上海交通大学の学生さんの話によると、上海は東京とちがって地震がほとんどないので、このような自由な設計が可能なのではないか、とのことでした。

  • さあディナーだ。

戦うのはプログラムなので人間は ディナーそっちのけで 応援だ
そして下図は、われらがcombatのAIが予選第1ラウンドで、全78チーム中最高得点を挙げた記念すべき瞬間。ぼけてるけど。

その後combatのAIは準決勝、決勝と勝ち進み、だんだん強くなる相手AIにcombat AIが苦戦するたびにハラハラし、自分の手でプログラムした必殺の直角ダッシュや団子シュートが画面で炸裂するたびに大喜びしながら観戦していたのだった。
最終的にcombatは2位をマーク。いやあよくやったよくやった。

  • ディナーのあと、大会のハードウェア責任者の人のグループと一緒になったので、BlueGeneの話を聞かせてもらうことができました。とってもエキサイティングだったよ。

これがBlueGeneだ!

BlueGeneとは・・・?

前の世界最強計算機である、日本の地球シミュレータを打ち破るため、アメリカとIBMがその威信をかけて開発した。世界チェスチャンピオン・カスパロフを破ったIBMのコンピュータ・DeepBlueから、「青の遺伝子」を受け継いだ、IBMの誇る、現在世界最強のスーパーコンピュータである。
冷却効率を考えた平行四辺形のボディには"fastest"の文字が刻まれている。地球シミュレータが高性能の特製CPU640ノードでその計算能力を支えているのに対し、BlueGeneのボディに収まっているのは普通のパソコンにでも入っているようなCPUと、CPUひとつにつきわずか256MBのメモリだけだ。BlueGeneの計算力はこの演算単位(ノード)を集積することにより発揮される。写真のラックにはいくつかのトレイが収まっているのが見えるが、1トレイに34CPUが搭載されている。計算に関与するのはこのうち32個であり、のこり2つは通常の2倍のメモリを備えた入出力用のCPUである。写真のラックには32段のトレイ、すなわち1024ノードを搭載できるが、大会用には160ノードしか持って来ていない。正規のBlueGeneはこのラックを64体並列することで実現され、これら65536個ものCPUが、世界最強の計算能力を発揮することになる。
計算中、これらBlueGeneのノードたちは仮想的な3次元トーラス状の計算空間をなし、前後左右上下のノードに1クロックあたりたった256バイトのメッセージを送ることができる。これがBlueGeneのノードたちが計算中にコミュニケーションをとる唯一の手段である。計算空間で隣接しないノードと連絡をとるには中間のノードに中継してもらうしかない。これは貧弱だが、通信が計算の足をひっぱらない程度に高速であるためにはギリギリの線なのだ。このことからBlueGeneは、ノード同士が緊密な連絡をとる必要がある種類の計算は得意ではない。
大会にBlueGeneのフルセットを持ってこなかったのは、必要が無かったこともあるが、冷却効率のこともある。BlueGeneの完全体は2メガワットの電力を消費する。(これは僕の電気ストーブ2000台ぶんの発熱であり、コンビニ弁当を40ミリ秒で温め、うちの風呂を16秒で沸かし、通勤電車を13両走らせる程の電力だ。)もちろんBlueGeneが設置されているVIPルームのクーラーをもってしてもこれを冷却することはできない。
BlueGeneはノイズに対して非常に抵抗力が強い。もしそうでなくて、BlueGeneの各ノードが僕のパソコンみたいに1月に1度はフリーズするなら、65536個のCPUを抱えるBlueGene全体は40秒に一回は落ちるだろう。ほんの気まぐれからCPUを撃ち貫く宇宙線ですらBlueGeneに対する脅威となりうる。BlueGeneの通信回路は多重化され、自己チェック機能を備えるなど、なるべく長く無事故で走るようにあらゆる工夫がなされている。電源の切断をともなうメンテナンスは、それ自身が機体に衝撃を与え寿命を縮めてしまうのでなるべく行いたくないのだが、それでもBlueGeneは1週間に1度はメンテナンスを行い、ダメージを受けた部品を取り替える必要がある。
BlueGeneが欲しいかい?BlueGeneの価格は非公開であり、あなたがBlueGeneをいくらで手に入れられるかは、あなたの所属機関や交渉の腕次第だ。しかし、BlueGeneを維持するのには3種類の出費が必要で、それらのうち部品代より電気代は大きく、人件費はさらに高いということを考慮しなくてはならない。この人件費にはメンテナンスおよび、あなたの欲する計算を並列計算に書き換える費用も含まれる。この書き換えが自動化される(BlueGene用のよいコンパイラが作られる)だけでも、BlueGeneはより安価になるだろう。

日本が開発した地球シミュレータはコンピュートニクショックを引き起こし、世界はベクトル計算機に注目した。私たちはなんとか地球シミュレータを打ち負かそうと、既存のCPUを並べるという新しいアプローチでBlueGeneを建設し、こんどは世界は並列計算に力を入れている。いずれ日本はBlueGeneを打ち負かすコンピュータを作るだろう。それをアメリカがまた、という風に、計算機チャンピオンの座を巡る競争は続くだろう。競争と、それが作り出す流れを通じて技術が進歩するのは素晴らしいことだと思う。

と、Mr.George Almasiは語っていました。熱い夜でした。