平成22年度は正確なループ構造をコード実行時に抽出可能な手法の設計および実装による評価に取り組んだ。ループ構造抽出部の設計の過程でループネスト構造を正確に抽出するためにはreducible loopに分類される自然ループ(natural loop)だけを想定するのでは不十分という知見が得られたので、irreducible loopの検出も可能なループ抽出法に基づき実行バイナリコードを実行する際にループの動的な挙動をモニタリング可能な機構を設計した。また、ランタイム自動最適化技術に関連する研究資料を該当分野の国際会議等から広く収集し、現状の技術水準の把握と動的バイナリ変換(Dynamic Binary Translation)システムへの応用を前提とした実行時ループ階層構造検出機構の基本要件を確認し、システム上に実装した。実装したシステムの評価の結果、ソースコード上のループ構造と矛盾しない正確な構造が抽出されていること、バイナリコード実行中随時ループネスト構造が追跡されること、関数呼び出しをまたぎ動的に実行されるループネスト構造をL-CCT(Loop-Call Context Tree)として効率的に表現可能であること、SPEC CPUベンチマークにおいて実行時ループ検出なしのネーティブのコード実行と比べて平均4倍程度のオーバーヘッドにて実行時ループの検出が可能であることが示された。加えて、各ループのイテレーションの数(ループとリップカウント)を実行時に検出する手法を設計し、SPMD(Single Program Multiple Data)の並列モデルで記述されるMPIプログラムにおいて並列化されているループ部分をコード実行時に検出することを試みた。評価実験の結果、ループにおいて並列化されているMPIプログラムから並列部分をコンパイル時のオプション指定やソースコードの参照をすることなく並列化されているループ部分を検出できることを確認した。
|