未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

未踏の公募がはじまった

2009年度上期未踏IT人材発掘・育成事業の公募がはじまった。未踏ユース(25歳未満)、未踏本体それぞれ詳細は上記URLを参照してほしい。

わたし自身2002年度の未踏に採択されたプログラマ、いわばOBであるので若干の思い入れもあるし、ひょんなことからIPAの中の人になっちゃったものだから、個人的にもいろいろ応援したいところである。ただし、IPAと言っても、わたしの所属はオープンソフトウェア・センターなので、業務として未踏事業に関与しているわけではないことをあらかじめおことわりしておく。あくまで個人的な見解である。

未踏のおもしろさというのは、9ヶ月くらい、開発に没頭できる環境を提供してもらうことだ。クレージーなアイデアを実装する期間として、このくらいの時間は必要だし、一方で、開発費として人件費をもらえるので、霞を食っているわけではないので、これは大変ありがたい。

未踏でわたしが何をやったかということは、既に何回も書いたので、そちらを参照してもらうとして*1 *2 *3 *4、未踏のおかげで、わたしはIntel CPUにおけるキャッシュミスの動きにたいして深い理解を得たし、その結果として、Cache Pollution Aware patchというハックを作る事ができた。*5 もちろん、未踏に応募したときに、そちらの方向に理解が深まって、linux kernel patchを作れるとは思ってもいなかった。ただし、自分の思惑(おもわく)として、linux kernelで何かをやってみたいと言う思いがあって、平たく言えばカーネルハッカーになりたくて、そのためには素人の自分でも使える、カーネルレベルでのhardware profilerが必要だなと思っていた。それが未踏で開発したhardmeterというソフトである。自分の強い思い=カーネルハッカーになりたい、それを実現するために道具が必要だ、だから道具を作った(hardmeter)というストーリーである。*6 *7

未踏という事業の性格上、プロジェクトマネージャ(PM)が面白いと思えば採択されるし、どんなに新規性、独創性があろうと、PMが面白いと思わなければ採択されない。これが委員会形式の採択委員会で平均点の高いものから採択というプロセスと著しく異なる。委員会形式であれば、時代の空気を読んで、昨今の流行り言葉をちりばめた美味しい提案書を書けばいいのであるが、PM方式は、PMの心に響くものでなければ採択されない。

基盤系の最も地味なところ、キャッシュについての便利な道具を作った。これだけっちゃあこれだけである。後にlinuxにはoprofileというプロファイラーが標準採用されたのだが、現時点でもhardmeterが実装したPEBS (Precise Event Based Sampling)の機能が実装されていない。oprofileでキャッシュミスを計測することは出来る。プログラムのどの場所でキャッシュミスが多発しているか簡単に発見できる。実際*8 *9 で示したように、簡単にキャッシュミスを発見できる。しかし、oprofileでは、どのメモリへアクセスした時にキャッシュミスが発生したかは特定できない。メモリへのアクセスパターンによって、キャッシュミスが発生するパターンが知られていて、それぞれ別の対処方法があるのだが、キャッシュコンフリクトというキャッシュミスについて簡単に発見できないのである。hardmeterでは、キャッシュミスが発生した時点のレジスタの値を記録するので、ソースコードとつきあわせれば、どのアドレスにアクセスしていたかが一目瞭然なのである。

てなことを朝から晩までやっていて、それのどこが楽しいのか、と問われれば、楽しいんだよ、何か。という世界である。CPUの奥深いところの動きが原子顕微鏡のように見えてワクワクするのである。何かをするために原子顕微鏡を作ったのであるが、原子顕微鏡そのものを作るのがとっても魅力的だったというようなお話である。

しかもだ。基盤系の問題は、難しい問題が多くて、それらは未解決だったりする。そう。解かれるべき問題に満ちているのだ。本当だよ、いっぱい面白い問題がある。

今後、CPUコアの数がどんどん増えていくことが予想される。CPUコアが増えていったとき、キャッシュミスもそれに比例して増加するが*10、それを防止するには、どうしたらよいのか。コンピュータサイエンスを専攻している学生なら誰でも理解できる問題だと思う。だったらチャレンジしろよ。

今後、CPUの電力消費が問題になってくると予想される。省資源型のプログラミングアルゴリズムとは何か。rubyの実装で示せ。別にrubyじゃなくてもいいけど、アルゴリズムの有効性を示すために実装してね、というような感じである。

例えば後者の問題ならば、電力消費量をミクロに測定するツールおよびベンチマークを製作するというアプローチをわたしなら取る。どのようにすれば、それが測定できるかは、ちょっとしたサーベイが必要で、ひょっとしたら、Intelとかチップベンダーの協力が必要かもしれないけど、不可能な話ではない。ベンチマークの設定は結構難しい問題ではあるが、これもコミュニティのチカラを借りれば、困難ということもない。

基盤系(OSやらRDBMSやら言語処理系やら)の地味な問題というのは、未解決な問題が多数あって、しかも、その解決には時間がかかるから、直ぐに陳腐化するというものでもない。実際hardmeterを作って6年以上たつのにPEBSを利用したプロファイラは実装されていない。(じゃあ、おまえ実装しろよ、とか言われちゃうが、ごめんなさいごめんなさいごめんなさい)

上の方ではなく下の方にはブルーオーシャンが広がっていると思う今日この頃である。

わたしが未踏のPMだったら、基盤系の問題にがっつり取り組んだ応募を支援したいと思う。本当にそう思うよ。あくまでも個人的見解なので、ご注意を。