On Fri, Jan 20, 2012 at 10:21 AM, Wen Jiang <span dir="ltr">&lt;<a href="mailto:jiangwen84@gmail.com">jiangwen84@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi, Matt<br><br>Could you tell me some more details about how to get a stack trace there? I know little about it. The job is submitted on head node and running on compute nodes. <br></blockquote><div><br></div><div>1) Always run serial problems until you understand what is happening</div>
<div><br></div><div>2) Run with -start_in_debugger, and type &#39;cont&#39; in the debugger (read about gdb)</div><div><br></div><div>3) When it stalls, Ctrl-C and then type &#39;where&#39;</div><div><br></div><div>  Matt</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thanks.<br><br>On Fri, Jan 20, 2012 at 9:44 AM, Wen Jiang &lt;<a href="mailto:jiangwen84@gmail.com" target="_blank">jiangwen84@gmail.com</a>&gt; wrote:<br>


<br>
&gt; Hi Barry,<br>
&gt;<br>
&gt; Thanks for your suggestion. I just added MatSetOption(mat,<br>
&gt; MAT_NEW_NONZERO_ALLOCATION_<div>ERR,PETSC_TRUE) to my code, but I did not get<br>
&gt; any error information regarding to bad allocation. And my code is stuck<br>
&gt; there. I attached the output file below. Thanks.<br>
&gt;<br>
<br>
Run with -start_in_debugger and get a stack trace. Note that your stashes<br>
are enormous. You might consider<br>
MatAssemblyBegin/End(A, MAT_ASSEMBLY_FLUSH) during assembly.<br>
<br>
   Matt<br>
<br>
<br>
&gt; [0] VecAssemblyBegin_MPI(): Stash has 210720 entries, uses 12 mallocs.<br>
&gt; [0] VecAssemblyBegin_MPI(): Block-Stash has 0 entries, uses 0 mallocs.<br>
&gt; [5] MatAssemblyBegin_MPIAIJ(): Stash has 4806656 entries, uses 8 mallocs.<br>
&gt; [6] MatAssemblyBegin_MPIAIJ(): Stash has 5727744 entries, uses 9 mallocs.<br>
&gt; [4] MatAssemblyBegin_MPIAIJ(): Stash has 5964288 entries, uses 9 mallocs.<br>
&gt; [7] MatAssemblyBegin_MPIAIJ(): Stash has 7408128 entries, uses 9 mallocs.<br>
&gt; [3] MatAssemblyBegin_MPIAIJ(): Stash has 8123904 entries, uses 9 mallocs.<br>
&gt; [2] MatAssemblyBegin_MPIAIJ(): Stash has 11544576 entries, uses 10 mallocs.<br>
&gt; [0] MatStashScatterBegin_Private(): No of messages: 1<br>
&gt; [0] MatStashScatterBegin_Private(): Mesg_to: 1: size: 107888648<br>
&gt; [0] MatAssemblyBegin_MPIAIJ(): Stash has 13486080 entries, uses 10 mallocs.<br>
&gt; [1] MatAssemblyBegin_MPIAIJ(): Stash has 16386048 entries, uses 10 mallocs.<br>
&gt; [7] MatAssemblyEnd_SeqAIJ(): Matrix size: 11390 X 11390; storage space: 0<br>
&gt; unneeded,2514194 used<br>
&gt; [7] MatAssemblyEnd_SeqAIJ(): Number of mallocs during MatSetValues() is 0<br>
&gt; [7] MatAssemblyEnd_SeqAIJ(): Maximum nonzeros in any row is 294<br>
&gt; [7] Mat_CheckInode(): Found 11390 nodes out of 11390 rows. Not using Inode<br>
&gt; routines<br>
&gt; [7] PetscCommDuplicate(): Using internal PETSc communicator 47582902893600<br>
&gt; 339106512<br>
&gt; [0] MatAssemblyEnd_SeqAIJ(): Matrix size: 11391 X 11391; storage space: 0<br>
&gt; unneeded,2514537 used<br>
&gt; [0] MatAssemblyEnd_SeqAIJ(): Number of mallocs during MatSetValues() is 0<br>
&gt; [0] MatAssemblyEnd_SeqAIJ(): Maximum nonzeros in any row is 294<br>
&gt; [0] Mat_CheckInode(): Found 11391 nodes out of 11391 rows. Not using Inode<br>
&gt; routines<br>
&gt; [0] PetscCommDuplicate(): Using internal PETSc communicator 46968795675680<br>
&gt; 536030192<br>
&gt; [0] MatSetUpMultiply_MPIAIJ(): Using block index set to define scatter<br>
&gt; [6] MatAssemblyEnd_SeqAIJ(): Matrix size: 11390 X 11390; storage space: 0<br>
&gt; unneeded,2499938 used<br>
&gt; [6] MatAssemblyEnd_SeqAIJ(): Number of mallocs during MatSetValues() is 0<br>
&gt; [6] MatAssemblyEnd_SeqAIJ(): Maximum nonzeros in any row is 294<br>
&gt; [6] Mat_CheckInode(): Found 11390 nodes out of 11390 rows. Not using Inode<br>
&gt; routines<br>
&gt; [6] PetscCommDuplicate(): Using internal PETSc communicator 47399146302496<br>
&gt; 509504096<br>
&gt; [5] MatAssemblyEnd_SeqAIJ(): Matrix size: 11390 X 11390; storage space: 0<br>
&gt; unneeded,2525390 used<br>
&gt; [5] MatAssemblyEnd_SeqAIJ(): Number of mallocs during MatSetValues() is 0<br>
&gt; [5] MatAssemblyEnd_SeqAIJ(): Maximum nonzeros in any row is 294<br>
&gt; [5] Mat_CheckInode(): Found 11390 nodes out of 11390 rows. Not using Inode<br>
&gt; routines<br>
&gt; [5] PetscCommDuplicate(): Using internal PETSc communicator 47033309994016<br>
&gt; 520223440<br>
&gt; [1] MatAssemblyEnd_SeqAIJ(): Matrix size: 11391 X 11391; storage space: 0<br>
&gt; unneeded,2500281 used<br>
&gt; [1] MatAssemblyEnd_SeqAIJ(): Number of mallocs during MatSetValues() is 0<br>
&gt; [1] MatAssemblyEnd_SeqAIJ(): Maximum nonzeros in any row is 294<br>
&gt; [1] Mat_CheckInode(): Found 11391 nodes out of 11391 rows. Not using Inode<br>
&gt; routines<br>
&gt; [1] PetscCommDuplicate(): Using internal PETSc communicator 47149241441312<br>
&gt; 163068544<br>
&gt; [2] MatAssemblyEnd_SeqAIJ(): Matrix size: 11391 X 11391; storage space: 0<br>
&gt; unneeded,2525733 used<br>
&gt; [2] MatAssemblyEnd_SeqAIJ(): Number of mallocs during MatSetValues() is 0<br>
&gt; [2] MatAssemblyEnd_SeqAIJ(): Maximum nonzeros in any row is 294<br>
&gt; [2] Mat_CheckInode(): Found 11391 nodes out of 11391 rows. Not using Inode<br>
&gt; routines<br>
&gt; [2] PetscCommDuplicate(): Using internal PETSc communicator 47674980494368<br>
&gt; 119371056<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; &gt;<br>
&gt;&gt; &gt; Since my code never finishes, I cannot get the summary files by add<br>
&gt;&gt; -log_summary. any other way to get summary file?<br>
&gt;&gt;<br>
&gt;<br>
&gt;   My guess is that you are running a larger problem on the this system and<br>
&gt;&gt; your preallocation for the matrix is wrong. While in the small run you sent<br>
&gt;&gt; the preallocation is correct.<br>
&gt;&gt;<br>
&gt;&gt;   Usually the only thing that causes it to take forever is not the<br>
&gt;&gt; parallel communication but is the preallocation. After you create the<br>
&gt;&gt; matrix and set its preallocation call<br>
&gt;&gt; MatSetOption(mat, NEW_NONZERO_ALLOCATION_ERR,PETSC_TRUE);  then run. It<br>
&gt;&gt; will stop with an error message if preallocation is wrong.<br>
&gt;&gt;<br>
&gt;&gt;   Barry<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; BTW, my codes are running without any problem on shared-memory desktop<br>
&gt;&gt; with any number of processes.<br>
&gt;&gt; &gt;<br>
&gt;&gt;<br>
&gt;</div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener<br>