COOL Chips XIの3番目の基調講演で、早稲田大学の笠原教授はマルチコア用の並列化コンパイラについて講演を行った。

マルチコアコンパイラに関する講演を行う早稲田大学の笠原教授

プログラムを細粒度の並列化が可能なBPA(Block of Pseudo Assignment)部分、繰り返しのRB(Repetition Block)と粗粒度並列化対象のSB(Subroutine Block)のいずれであるかを認識し、そして、RBとSBは更にBPA、RB、SBに分割を進めるという階層化によりマクロなブロックレベルのフローグラフを作成する。そして、これらの最終レベルのBPA、RB、SBを使用可能なコアに割り当てる。このブロック割り当てを行う時には、データ依存性を考慮して、コア間のデータ転送が最小になるように割り当てを行う。この割り当てによるスケジューリングで、各コアがどのタイミングで動作する必要があるのかが分かるので、コアがアイドルになるタイミングでは、電源オフなどの制御を行うコードを挿入して消費電力を削減する。

このような並列化コンパイラにより、16プロセサのIBMのp690サーバでのSPECfpベンチマーク実行に対して、マクロな並列化が可能なmgrid、turb3d、swimなどでは、IBMコンパイラに対して10倍以上の性能を実現し、ハイレベルの並列化ができずIBMコンパイラと比べて性能が向上しないプログラムもあるが、全体の幾何平均では3.5倍の性能を実現している。また、クワッドコアXeonに対しては、Intelコンパイラに対して2.09倍の性能を実現しているという。

そして、SHコアを8コア集積したルネサス テクノロジのプロセサチップでは、AACデコーディングの場合、1コアの5.8倍の性能スケーラビリティーを実現しており、電力に関しても、MPEG-2デコーディングの場合、電源制御を行わない場合は5.73Wを消費したのに対して、コンパイラによる電力制御により1.52Wまで低減できたという。

このような成果を基に、笠原教授は、このコンパイラにより、128コアから1024コア程度までの自動並列化が可能であると述べた。この、笠原教授のコンパイラは共有メモリだけでなく、CELLプロセサのようにローカルメモリをもつマルチプロセサにも対応しており、普通のプログラマには難しいとされる並列プログラムの開発を容易にするという点で大きな効果があると思われる。