卒業論文を提出しました

2/16 に卒業論文を提出し、2/20 に発表を行い、無事に卒業論文の単位が確定しました。

やったこと

Software Transactional Memory の、トランザクション粒度を最適化することで、プログラムの並列度を向上させる、という研究をやりました。

Transactional Memory が活用できることが期待される場面として、従来は巨大なロック1つで同期するしかない、あるいは fine-grained なロックで同期するのは結構めんどい、みたいなケースがあります。そういう場合に、巨大なロックを1つのトランザクションにしてしまうと、データの競合がない限りは並列度が上がってハッピー♪というわけです。

しかしながら、巨大なトランザクションの中で少しでもデータが競合するような箇所があると、結局トランザクションの実行はほとんどシリアライズされてしまうので嬉しくないですね、ということがある。だったら、トランザクションを細分化してやればいいじゃーん、という発想の研究です。

正直なところ、現段階ではアルゴリズムも実装もかなり未熟で、"実用的"なプログラムに適用してどうこう、というレベルには遠く及びません。一応、野望としてはPython処理系のGILをトランザクションにしてしまおうぜ、というのがスタート地点で始まった研究なので、できればそこまで進めてみたいです。まだまだ困難が多いのですが。。。

研究する環境について

うちの研究室(Tsuruoka Lab.)では、10月頃から毎週卒論生6名+准教授、助教、院生が集まり、卒論生全員がその週の進捗を発表して、意見交換するというミーティングがあります。毎週プロの研究者のレベルの人々から突っ込みがもらえる研究室というのは、なかなか得難いほど良い環境なのではないかと思っています。また、自分のような怠惰な人間としては、目に見える直近の締切(毎週のミーティング)ドリブンで研究を進めることができたというのもよかったです。

毎週のミーティングは、18時から始まり、大体22時くらいに終われば早いほう、という感じでした。これをきついと考えるかどうかは人それぞれですが、それだけの長い時間を卒論生ごときに割いて頂けることはとんでもなく幸せなことであると自分は思います。

今後について

来年度からは、今の研究室とは別の研究室に所属することになっています。が、卒論の内容を進めてどこかの学会に発表しようということで、しばらくは今の研究室で研究を続けることになりそうです。目標はでっかくということで、無謀なチャレンジなのかもしれませんが、並列関係では最高峰らしい国際学会のPPoPPを目指すことになりました。

計算機科学系なら卒論は3月中にまとめなおして国際会議に投稿しよう - 発声練習 を読んで、卒論をまとめ直してどこかの学会に出したいなと思いつつ、でもこんな研究で学会に出すとか馬鹿げたことなんじゃないか、と先生いつ相談しようかとタイミングを考えていたのですが、卒論発表が終わったすぐ後に先生のほうからお話を頂いたのでホッとしたのと嬉しいのとで今からワクワクしています。

おそらく先生がPPoPPを目標として持ち出してきたのは、昨今のTransactional Memoryブームもあるのではないか、という気もします*1。Transactional Memoryネタが通りやすいのか、PPoPPに通す実力のある人達がこぞってTransactional Memoryを研究しているのかはわかりませんが。なにはともあれ、もうしばらくは今の研究室で頑張ることになりそうです。

*1:先輩が「最近のPPoPPはTransactional Memory学会になってしまった感じがしてちょっとヤダ」と漏らすくらい、最近のTransactional Memoryの加熱っぷりはすごいらしい