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 99.500 271208 61804 MD_iter= 2 95.100 398752 190608 MD_iter= 3 99.900 385352 177336 MD_iter= 4 96.800 385352 177336 MD_iter= 5 99.900 385352 177336 MD_iter= 6 97.600 385352 177336 MD_iter= 7 100.000 385352 177336 MD_iter= 8 98.100 385352 177336 MD_iter= 9 100.000 385352 177336 MD_iter= 10 98.500 385352 177336 MD_iter= 11 97.200 385352 177336 MD_iter= 12 98.800 385352 177336 MD_iter= 13 97.700 385352 177336 MD_iter= 14 99.100 385352 177336 MD_iter= 15 98.000 385352 177336 MD_iter= 16 99.200 385352 177336 MD_iter= 17 98.300 385352 177336 MD_iter= 18 99.400 385352 177336 MD_iter= 19 98.600 385352 177336 MD_iter= 20 97.800 385352 177336 2 ml_example/Co4+U.dat CPU (%) VSZ (kbyte) RSS (kbyte) MD_iter= 1 99.500 271336 61928 MD_iter= 2 104.000 398880 191052 MD_iter= 3 100.000 385476 177776 MD_iter= 4 96.800 385476 177776 MD_iter= 5 100.000 385476 177776 MD_iter= 6 97.500 385476 177776 ...... ....