理論面に関する研究では,MapReduceプログラミングモデルの定式化について研究を進めた.MapReduceはもともとGoogleによって提案されたプログラミングフレームワークであるが,その後オープンソースによる類似実装としてHadoopが提案されており,このHadoopでは中間のShuffle/Sort フェーズの動きをより詳細に指定できる.この拡張された点について考察を行い,これまでに示されている関数プログラミングによる定式化の拡張を行った.この内容については,論文投稿のためまとめている段階である. 実装面に関する研究では,C++言語の最新標準であるC++11の機能の利用に関する検討と確認,および,boost::proto を用いたメタプログラミングテクニックの適用について取り組んだ. 研究代表者らのグループでは,スケルトン並列プログラミングをサポートするための,C++とMPIによるライブラリ「助っ人」を開発している.この「助っ人」ライブラリにおいて,無名関数 (anonymous function; ラムダ関数) とauto識別子による型推論の2つが利用できることを確認した.特に,autoによる型推論により,融合変換機能をよりユーザに書き易く提供できるという利点がある. 従来の実装では,融合変換機能を実現するために,式テンプレート技術を直接用いていた.近年,C++の拡張機能を提供するboostライブラリにおいて,式テンプレートをより書き易くするためのライブラリboost::protoが提供されている.本研究では,このboost::protoを用いて,「助っ人」が提供する融合変換機能の一部の実装を試みた.その結果,単純なmap/map融合部分の実装に成功したが,現時点では「助っ人」の融合変換機能の実装をすべてboost::protoで行うのは適切ではないという結論を得た.
|