プログラムの高速化・並列化サービスの事例

統計数理研究所 (東京大学地震研究所 長尾大道様) SLDECOMPパフォーマンスの改善

対象プログラム 粒子フィルタ法による長期潮位変動解析プログラム
アプリケーション名 SLDECOMP
チューニング方法

足し合わせ処理で非ゼロ成分のみを加算するように変更、内部ループにおける配列要素アクセス順序を連続的になるよう変更、可能な部分においてメモリの領域コピーを参照コピーに変更。

成果 計算速度が5.3倍になった。
[2016年7月掲載]

粒子フィルタ法による長期潮位変動解析プログラム(SLDECOMP)の速度を改善


プロジェクトの背景

お客様は数十年分の月次潮位データからプレート運動と関連の深い地殻運動を抽出することを目的とするアルゴリズムの研究を行っています。本事例ではその研究で利用される粒子フィルタ法を用いた時系列解析プログラムのパフォーマンスを改善しました。オリジナルのコードはFortran言語で記述されており既にMPIで並列化されたコードでした。また既にスケーラビリティにも優れており、ノード数/コア数の増加に応じて総計算時間が短くなる状況でしたが、本事例ではそこから更なる改善を試みました。チューニングの結果


プロジェクトの結果プロファイリング結果

プログラム内で負荷の高い部分を中心に改善を行い、スケーラビリティを犠牲にすることなくパフォーマンスを大幅に(5.3倍)改善しました。


詳細

まずプログラムを複数の処理領域に分けてパフォーマンスを測定しました。パフォーマンスの測定にあたっては通常計算時の100分の1の反復数で行いました。計測の結果からある特定の部分(処理領域番号23)がボトルネックであることが特定できました。当該処理部チューニングの結果分は2つの繰り返し処理から構成される処理であり、更なる調査の結果そのうちの一つの繰り返し処理で最も時間がかかっていることが特定できました。 (図1) 

この最も時間のかかっている部分は、多数の数値の合計を求める部分でしたが、計算の都合上多くのゼロ成分が加算対象となっていました。これについて非ゼロ成分のみが加算対象になるような改変を行ったところ、パフォーマンスが大きく改善されました。 (図2)

この改善により処理領域24と25の実行時間が相対的に大きなものとなったので次に処理領域24に着目しました。 処理領域24配列アクセス順序のチューニングの結果は複数の繰返し処理により配列データをアクセスして行くものでしたが、内側ループ内のいくつかの箇所で配列要素への参照が非連続的に行われている事がわかりました。キャッシュをより効率的に活用するために、これらについてはメモリ上でより連続的にアクセスされるような変更を行いました。 その結果、処理領域24の実行時間を約40%削減することができました。 (図3)

次に処理領域25で行われている処理に着目しました。そこでは純粋な配列コピーが行われている事がわかり改善の余地があると思われたので、配列のポインタを定義し配列の参照コピーを行うように変更しました。その結果処理領域25の実行時間はほぼゼロとなり更なるパフォマンスアップが達成されました。(図4)配列参照コピーのチューニングの結果

これらのすべての改善により、全体的なパフォマンスはオリジナルコードの約5.3倍となりました。

最後にこれらの変更を行ったことによってスケーラビリティーが犠牲になっていないかどうかを検証しました。いくつかの異なるノード数/コア数での処理時間を計測し、スケーラビリティーに新たな問題が生じていない事を確認しました。

 

以上


さらに詳しくお知りになりたい場合は、日本NAG株式会社 コンサルティンググループご相談窓口 https://www.nag-j.co.jp/nagconsul/toiawase.htm (あるいはメール:consul@nag-j.co.jp)までお問い合わせください。

関連情報
MENU
© 髫エ魃会スス�・髫エ蟷「�ス�ャ驛「譏懶スケ譁溽、シ�ケ譎「�ス�シ驛「譎「�ス�。驛「譎「�ス�ェ驛「�ァ�ス�ォ驛「譎「�ス�ォ驛「�ァ�ス�「驛「譎「�ス�ォ驛「�ァ�ス�エ驛「譎「�ス�ェ驛「�ァ�ス�コ驛「譎「�ソ�ス驛「�ァ�ス�コ驛「�ァ�ス�ー驛「譎「�ス�ォ驛「譎「�ス�シ驛「譎芽サク�ス�ス�ス�ェ髯溷床�ク闌ィ�ス�シ陞溘q�ス�、�ス�セ 2024
Privacy Policy  /  Trademarks