致命的な信号をキャッチ:ノード2/32でシグバス(7)
質問
32ノードクラスターでNAS-UPCベンチマークを実行しようとしています。
問題のサイズが小さい場合には正常に動作します。より大きな問題サイズ(クラスD)に卒業すると、このエラーが発生します(MGベンチマークの場合)
*** Caught a fatal signal: SIGBUS(7) on node 2/32
p4_error: latest msg from perror: Bad file descriptor
*** Caught a signal: SIGPIPE(13) on node 0/32
p4_error: latest msg from perror: Bad file descriptor
p4_error: latest msg from perror: Bad file descriptor
*** FATAL ERROR: recursion failure in AMMPI_SPMDExit
*** Caught a signal: SIGPIPE(13) on node 27/32
*** Caught a signal: SIGPIPE(13) on node 20/32
*** Caught a signal: SIGPIPE(13) on node 21/32
p4_error: latest msg from perror: Bad file descriptor
*** FATAL ERROR: recursion failure in AMMPI_SPMDExit
*** FATAL ERROR: recursion failure in AMMPI_SPMDExit
*** FATAL ERROR: recursion failure in AMMPI_SPMDExit
*** Caught a signal: SIGPIPE(13) on node 16/32
*** FATAL ERROR: recursion failure in AMMPI_SPMDExit
なぜこれが起こっているのか、そして誰かがこのエラーを見て、それを修正した場合、誰かが説明できますか?
編集:それがメモリ関連の問題であると判断されました。しかし、コンパイル時にアプリケーションに適切な量のメモリを割り当てることはできません
解決 2
コンパイル時間中に割り当てたよりも多くのメモリを必要とするベンチマークの問題であると思いました。
他のヒント
Aを確認します dmesg
出力 - メモリ外の問題になる可能性があります。または、繰り返しますが、それはからです ulimit -a
ヒット、例えばスタックサイズ(デフォルトのスタックサイズは、一部のNASタスクでは小さすぎます)。
「Out of Memory:Killed Process ###」のような行がある場合 dmesg
マシンのいずれかの出力 - これは、プログラムがOSがアプリケーションに与えるよりも大きく、多くのメモリを必要とする(そして使用しようとした)ことを意味します。記憶にはいくつかの制限があります:
ulimit -v
- 仮想メモリサイズのユーザー制限。すべて調べるulimit -a
制限もありますが、あなたのケースはこれではないようです- Total RAMとすべてのスワップサイズを持っているよりも多くのメモリを使用できません(で確認してください
free
指図)。ただし、アプリケーションがRAMサイズよりも多くのメモリを使用し、スワッピングを開始する場合、パフォーマンスは(ほとんどの場合)悪くなります。 - 最大メモリの建築制限があり、単一のプロセスに許容されるものがあります。 32ビットノードの場合、この制限は1(非常にまれなケース)から2、3、4 GBになります。 32ビットシステムが4 GBを超えるメモリを持っていても、たとえばPAEを使用する場合、単一のプロセスは4 GBを超えることはできません。 OS(数百MBからGBまで)が撮影した4GBの仮想スペースの大部分。
所属していません StackOverflow