SuperCon 2007

http://www.gsic.titech.ac.jp/supercon/supercon2007/index.html

今年もチューターとして参加していました。
優勝したSnowdropの皆さんはおめでとうございました。
久しぶりにR高校が入賞したのも個人的にうれしかったです。
こういうのを見ているとあらためてプログラミングって楽しいと実感しますね。
とてもよいです。
SuperConに出られなくなってもICPCなどというプログラミングコンテスト
これは早解きのコンテストなんですけど、あったりするので、
ぜひとも出場されて、世界大会とかに行ってくれることを期待しています。


私もチューターでありながらコードを書いていたりしたので、
ちょっとどんなコードを書いたか書き残しておきます。
最終日に東西のチューターチームもコードをサブミットしたのですが、
結局あれは実行されなかったのでしょうか…。


問題は、なんだかまだ公開されていませんが、簡単に説明すると、
入力が三次元座標上の点の集合(3万個まで、0<=x,y,z<=10000)と、パラメータRで、
入力点のいくつかに半径Rの球を設置して、その球に囲われる点をなるべく多くしたい。
ただし、二つの球は接触してはいけなくて、一つの球は二点以上を囲わなければいけない。
というもの。


方針は擬似焼きなまし法で、点のインデックスの並び替えを状態として扱います。
スコアの計算は、先頭から順に、球を置けたら置くとして計算します。
インデックスの並びのうちの球が置けなかったところは(実際のところほとんど)
スコアに影響しませんが、このような隠れパラメータがあるとなんだか結果によい影響を
及ぼすのではないかというよくわからない期待を込めています。
隣接状態は、状態を適度にシャッフルすることによって作ります。
シャッフルする割合は温度にあわせて減少させていくのがよいようです。
このあたりのパラメータをいじると結果がかなり変わるのが面白いところです。


それでもって、温度を100万イテレーションぐらいかけてじっくり下げて、
じっくり解を求めればわりとかなりよいスコアが出るのですが、
スパコンのフロントエンド(Xeon 3Ghz*4)では大体20000点で
10000iter/secぐらいでたのですが、肝心のスパコン(SX-8)では
がんばっても1000iter/secぐらいしか出なかったのですね。
MOPS値を見る限りではあと4倍ぐらいは高速化できる余地がありそうではありましたが、
4倍速くなっても速くないのがどうしたものか。
なんだか私の中では、フロントエンドに遅いマシンがつながってるようにしか
思えなくなってしまいました。
そもそも、クアッドコアXeonって、
http://www.intel.co.jp/jp/performance/server/xeon/hpcapp.htm
62GFlopsとか書いてあるじゃないですか。
とりあえず10万iterぐらいで温度を下げるようにして、
あとはそれでもそこそこのスコアが出るようにパラメータを調節しました。
なので、結果的にはかなりサイコロの出目に左右されるものに
なってしまいましたが、やはり結果は微妙に気になります。


懇親会がちょっとあっさりぎみに終わったのが少し残念でした。
なんだか部屋の都合だったみたいですが、
去年の大阪会場ではかなり長いこと話していた記憶があるので、
来年はもうちょっとゆっくりしたスケジュールだとよいと思います。
コンテストとは関係ないですが、
帰りに東工大の中をいろいろと見て回りました。
昔自分が歩いた場所の記憶がよみがえってきて
なかなか感慨深いものがありました。
入り口から程近いところにある、百年記念館で
私のときは表彰式をしたのですが、
そこにも再び足を踏み入れました。
4階にあった円形のソファーは7年経った今もまだ存在していました。
あそこで座ってOHPシートを書いていたのが昨日の事の様に思い出されます。
あまりにも懐かしい。
そんな懐かしい思いを胸に東工大を後にしました。