OpenMXでは、使用メモリは必要に応じて動的に割り当てられています。 動的メモリー割り当て(dynamic memory allocation)では、メモリリークが発生する場合があり、 MDステップの増大とともに使用メモリが浪費され、最終的には異常終了する可能性が生じます。
OpenMXを次のように実行することで、メモリリークをチェックすることが可能です。
逐次計算
% ./openmx -mltest並列計算
% ./openmx -mltest "mpirun -np 4 openmx"ディレクトリ「work/ml_example」に保存されている13個のテスト用入力ファイルを用いて、 メモリリークが監視されます。この際に、プログラムコード「openmx」中の同じモニターポイントで 実際に使用されたVSZおよびRSSを監視します。計算終了後、ファイル「mltest.result」が生成します。 監視されたVSZとRSSはMDステップの関数として、ファイル「mltest.result」中に次のように 出力されていますので、メモリリークが生じているのかどうか確認できます。
1 ml_example/Co4.dat CPU (%) VSZ (kbyte) RSS (kbyte) MD_iter= 1 92.900 49756 15736 MD_iter= 2 84.900 73344 57208 MD_iter= 3 81.200 73344 57212 MD_iter= 4 85.900 98672 82548 MD_iter= 5 82.800 98672 82548 MD_iter= 6 83.800 98672 82548 MD_iter= 7 84.200 98672 82548 MD_iter= 8 84.600 98824 82688 MD_iter= 9 85.000 98824 82688 MD_iter= 10 87.300 98824 82688 MD_iter= 11 87.500 98824 82688 MD_iter= 12 87.400 98824 82688 MD_iter= 13 85.700 98824 82688 MD_iter= 14 84.500 98824 82688 MD_iter= 15 86.100 98824 82688 MD_iter= 16 86.300 98824 82688 MD_iter= 17 86.500 98824 82688 MD_iter= 18 86.400 98824 82688 MD_iter= 19 86.500 98824 82688 MD_iter= 20 87.500 98824 82688 2 ml_example/Co4+U.dat CPU (%) VSZ (kbyte) RSS (kbyte) MD_iter= 1 92.800 50048 15924 MD_iter= 2 84.700 73628 57476 MD_iter= 3 84.700 73628 57496 MD_iter= 4 85.300 73628 57496 MD_iter= 5 85.100 98828 82684 MD_iter= 6 85.000 98828 82684 ...... ....