5. まとめ¶
本文書では、大規模かつ複雑なアプリケーションの1つである商用 CFD アプリケーションをチューニングした手順や内容などの事例を紹介しました。
本アプリケーションは大規模で複雑なため、アプリケーション全体の詳細プロファイラの計測結果が得られないなど、全体の詳細な情報の収集・分析が困難でした。そのため、計測区間ごとの実行時間と基本プロファイラで関数のコストを計測し、それらを材料とすることで対象関数を絞りました。対象を絞った上で、対象関数やループの詳細プロファイラの計測結果や翻訳時に出力する最適化メッセージを分析し、その結果をもとにチューニング項目を決定しました。
またコストが多くの関数に分散しているため、多数の関数をチューニングしないとアプリケーションの大幅な改善には繋がらないという困難もありました。そのため、アプリケーション全体の52%を占める上位30個までの関数の分析を行った上で様々なチューニング項目を実施し、プロセス間の負荷バランス向上や、メモリ確保のような多くの関数で利用される関数へのチューニングなども実施しました。なお実際のチューニング作業では、時間が限られていたため、目標性能達成までの見通しが立った段階で、作業者追加など計画の見直しを余儀なくされました。
これらの努力により、最終的に本アプリケーションの性能がチューニング実施前よりも約58%改善、つまり性能が約2.4倍向上(実行時間が202.9秒から85.0秒に改善)し、目標を達成しました。