<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Yes, this is not great.<div><br></div><div>I could really use a MatGetRowA and MatGetRowB here to get a more accurate number for B.  The problem is that it dies if this is too small and its not clear that there is a noticeable performance penalty with this (small beer).</div><div><br></div><div>I could save a bit by replacing</div><div><br></div><div>o_nnz[jj] = ncols;</div><div><br></div><div>with </div><div><br></div><div>o_nnz[jj] = 3*ncols/4;</div><div><br></div><div>but this might even fail under some circumstances and would not save much.</div><div><br></div><div>So if you think this is a problem we could do something.  THis code already has MatAIJ specific code in it so I could just drill into it and get row sizes of A and B and do this efficiently if need be.</div><div><br></div><div>Mark</div><div><br><div><div>On Sep 25, 2012, at 8:49 AM, John Mousel <<a href="mailto:john.mousel@gmail.com">john.mousel@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Matt,<div><br></div><div>It's not technically an error. It's an inefficient preallocation. I'm assuming Mark doesn't want this to be happening.</div><div><br></div><div><br></div><div><div>[0] PCSetUp(): Setting up new PC</div>
<div>[0] PetscCommDuplicate(): Using internal PETSc communicator 1140850689 -2080374777</div><div>[2] PetscCommDuplicate(): Using internal PETSc communicator 1140850689 -2080374780</div><div>[1] PetscCommDuplicate(): Using internal PETSc communicator 1140850689 -2080374780</div>
<div>[3] PetscCommDuplicate(): Using internal PETSc communicator 1140850689 -2080374780</div><div>[0] PetscCommDuplicate(): Using internal PETSc communicator 1140850689 -2080374777</div><div>[2] PetscCommDuplicate(): Using internal PETSc communicator 1140850689 -2080374780</div>
<div>[1] PetscCommDuplicate(): Using internal PETSc communicator 1140850689 -2080374780</div><div>[3] PetscCommDuplicate(): Using internal PETSc communicator 1140850689 -2080374780</div><div>[1] MatAssemblyBegin_MPIAIJ(): Stash has 1830 entries, uses 0 mallocs.</div>
<div>[3] MatAssemblyBegin_MPIAIJ(): Stash has 914 entries, uses 0 mallocs.</div><div>[2] MatAssemblyBegin_MPIAIJ(): Stash has 1991 entries, uses 0 mallocs.</div><div>[0] MatStashScatterBegin_Private(): No of messages: 3 </div>
<div>[0] MatStashScatterBegin_Private(): Mesg_to: 1: size: 16200 </div><div>[0] MatStashScatterBegin_Private(): Mesg_to: 2: size: 4192 </div><div>[0] MatStashScatterBegin_Private(): Mesg_to: 3: size: 1800 </div><div>[0] MatAssemblyBegin_MPIAIJ(): Stash has 2771 entries, uses 0 mallocs.</div>
<div>[2] MatAssemblyEnd_SeqAIJ(): Matrix size: 10840 X 10840; storage space: 0 unneeded,119860 used</div><div>[2] MatAssemblyEnd_SeqAIJ(): Number of mallocs during MatSetValues() is 0</div><div>[2] MatAssemblyEnd_SeqAIJ(): Maximum nonzeros in any row is 26</div>
<div>[2] Mat_CheckInode(): Found 10840 nodes out of 10840 rows. Not using Inode routines</div><div>[3] MatAssemblyEnd_SeqAIJ(): Matrix size: 10862 X 10862; storage space: 0 unneeded,117330 used</div><div>[3] MatAssemblyEnd_SeqAIJ(): Number of mallocs during MatSetValues() is 0</div>
<div>[3] MatAssemblyEnd_SeqAIJ(): Maximum nonzeros in any row is 26</div><div>[3] Mat_CheckInode(): Found 10862 nodes out of 10862 rows. Not using Inode routines</div><div>[1] MatAssemblyEnd_SeqAIJ(): Matrix size: 12138 X 12138; storage space: 0 unneeded,116975 used</div>
<div>[1] MatAssemblyEnd_SeqAIJ(): Number of mallocs during MatSetValues() is 0</div><div>[1] MatAssemblyEnd_SeqAIJ(): Maximum nonzeros in any row is 26</div><div>[1] Mat_CheckInode(): Found 12138 nodes out of 12138 rows. Not using Inode routines</div>
<div>[0] MatAssemblyEnd_SeqAIJ(): Matrix size: 10765 X 10765; storage space: 0 unneeded,110555 used</div><div>[0] MatAssemblyEnd_SeqAIJ(): Number of mallocs during MatSetValues() is 0</div><div>[0] MatAssemblyEnd_SeqAIJ(): Maximum nonzeros in any row is 25</div>
<div>[0] Mat_CheckInode(): Found 10765 nodes out of 10765 rows. Not using Inode routines</div><div>[3] PetscCommDuplicate(): Using internal PETSc communicator 1140850689 -2080374780</div><div>[2] PetscCommDuplicate(): Using internal PETSc communicator 1140850689 -2080374780</div>
<div>[1] PetscCommDuplicate(): Using internal PETSc communicator 1140850689 -2080374780</div><div>[0] PetscCommDuplicate(): Using internal PETSc communicator 1140850689 -2080374777</div><div>[0] PetscCommDuplicate(): Using internal PETSc communicator 1140850689 -2080374777</div>
<div>[2] PetscCommDuplicate(): Using internal PETSc communicator 1140850689 -2080374780</div><div>[3] PetscCommDuplicate(): Using internal PETSc communicator 1140850689 -2080374780</div><div>[1] PetscCommDuplicate(): Using internal PETSc communicator 1140850689 -2080374780</div>
<div>[0] VecScatterCreateCommon_PtoS(): Using blocksize 1 scatter</div><div>[0] VecScatterCreate(): General case: MPI to Seq</div><div>[2] MatAssemblyEnd_SeqAIJ(): Matrix size: 10840 X 566; storage space: 118775 unneeded,1100 used</div>
<div>[2] MatAssemblyEnd_SeqAIJ(): Number of mallocs during MatSetValues() is 1</div><div>[2] MatAssemblyEnd_SeqAIJ(): Maximum nonzeros in any row is 10</div><div>[3] MatAssemblyEnd_SeqAIJ(): Matrix size: 10862 X 259; storage space: 116725 unneeded,650 used</div>
<div>[3] MatAssemblyEnd_SeqAIJ(): Number of mallocs during MatSetValues() is 3</div><div>[3] MatAssemblyEnd_SeqAIJ(): Maximum nonzeros in any row is 11</div><div>[0] MatAssemblyEnd_SeqAIJ(): Matrix size: 10765 X 1295; storage space: 107825 unneeded,3165 used</div>
<div>[0] MatAssemblyEnd_SeqAIJ(): Number of mallocs during MatSetValues() is 29</div><div>[0] MatAssemblyEnd_SeqAIJ(): Maximum nonzeros in any row is 13</div><div>[1] MatAssemblyEnd_SeqAIJ(): Matrix size: 12138 X 1131; storage space: 114609 unneeded,2591 used</div>
<div>[1] MatAssemblyEnd_SeqAIJ(): Number of mallocs during MatSetValues() is 15</div><div>[1] MatAssemblyEnd_SeqAIJ(): Maximum nonzeros in any row is 13</div></div><div><br></div><div><br></div><div>John<br><br><br><div class="gmail_quote">
On Tue, Sep 25, 2012 at 5:41 AM, Matthew Knepley <span dir="ltr"><<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Mon, Sep 24, 2012 at 9:48 PM, John Mousel <span dir="ltr"><<a href="mailto:john.mousel@gmail.com" target="_blank">john.mousel@gmail.com</a>></span> wrote:<br></div><div class="gmail_quote"><div class="im">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>I'm having a problem with GAMG causing a MatSetValues() is [some non-zero number] after</div></blockquote><div><br></div></div><div>I do not see any errors in your output.</div><div><br></div><div>  Matt</div><div class="im">
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>[0] PCSetUp(): Setting up new PC</div><div><br></div><div> I don't get this with either ILU or HYPRE/BoomerAMG. I've attached the output of -info. I see there is a recent change to some pre-allocation for GAMG here:</div>


<div><br></div><div><a href="http://petsc.cs.iit.edu/petsc/petsc-dev/rev/fe806009181b" target="_blank">http://petsc.cs.iit.edu/petsc/petsc-dev/rev/fe806009181b</a>
</div><div><br></div><div>I'm not sure if that has anything to do with it, but my blocksize is 1. I'm running with the following options.</div><div><br></div><div>-ksp_type bcgsl -pc_type gamg -pc_gamg_threshold 0.01 -mg_levels_ksp_type richardson -mg_levels_pc_type sor -mg_coarse_ksp_type richardson -mg_coarse_pc_type sor -mg_coarse_pc_sor_its 4 -pc_gamg_type agg <div>


-pc_gamg_agg_nsmooths 1 -pc_gamg_sym_graph true -info -ksp_monitor_true_residual</div></div><div><br></div><div>Thanks,</div><div>John</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><br>
</blockquote></div></div><span class="HOEnZb"><font color="#888888"><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>
</font></span></blockquote></div><br></div>
</blockquote></div><br></div></body></html>