On Tue, Oct 2, 2012 at 8:35 AM, TAY wee-beng <span dir="ltr"><<a href="mailto:zonexo@gmail.com" target="_blank">zonexo@gmail.com</a>></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">
<div bgcolor="#FFFFFF" text="#000000">
<div>Hi,<br>
<br>
I have combined the momentum linear eqns involving x,y,z into 1
large matrix. The Poisson eqn is solved using HYPRE strcut format
so it's not included. I run the code for 50 timesteps (hence 50
kspsolve) using 96 procs. The log_summary is given below. I have
some questions:<br>
<br>
1. After combining the matrix, I should have only 1 PETSc matrix.
Why does it says there are 4 matrix, 12 vector etc? <br></div></div></blockquote><div><br></div><div>They are part of preconditioning. Are you sure you're using Hypre for this? It looks like you are using bjacobi/ilu.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000"><div>
<br>
2. I'm looking at the stages which take the longest time. It seems
that MatAssemblyBegin, VecNorm, VecAssemblyBegin, VecScatterEnd
have very high ratios. The ratios of some others are also not too
good (~ 1.6 - 2). So are these stages the reason why my code is
not scaling well? What can I do to improve it?<br></div></div></blockquote><div><br></div><div>3/4 of the solve time is evenly balanced between MatMult, MatSolve, MatLUFactorNumeric, and VecNorm+VecDot.</div><div><br>
</div><div>The high VecAssembly time might be due to generating a lot of entries off-process?</div><div><br></div><div>In any case, this looks like an _extremely_ slow network, perhaps it's misconfigured?</div><div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000"><div>
<br>
Btw, I insert matrix using:<br>
<br>
<i>do ijk=ijk_xyz_sta+1,ijk_xyz_end</i><i><br>
</i><i><br>
</i><i> II = ijk - 1</i><i> !Fortran shift to 0-based</i><i><br>
</i><i> </i><i><br>
</i><i> call
MatSetValues(A_semi_xyz,1,II,7,int_semi_xyz(ijk,1:7),semi_mat_xyz(ijk,1:7),INSERT_VALUES,ierr)</i><i><br>
</i><i><br>
</i><i>end do</i><br>
<br>
where ijk_xyz_sta/ijk_xyz_end are the starting/end index<br>
<br>
int_semi_xyz(ijk,1:7) stores the 7 column global indices<br>
<br>
semi_mat_xyz has the corresponding values.<br>
<br>
and I insert vectors using:<br>
<br>
call
VecSetValues(b_rhs_semi_xyz,ijk_xyz_end_mz-ijk_xyz_sta_mz,(/ijk_xyz_sta_mz:ijk_xyz_end_mz-1/),q_semi_vect_xyz(ijk_xyz_sta_mz+1:ijk_xyz_end_mz),INSERT_VALUES,ierr)<br>
<br>
Thanks!<br>
<br>
<i><br>
</i><br>
<pre cols="72">Yours sincerely,
TAY wee-beng</pre><div><div class="h5">
On 30/9/2012 11:30 PM, Jed Brown wrote:<br>
</div></div></div><div><div class="h5">
<blockquote type="cite">
<p>You can measure the time spent in Hypre via PCApply and
PCSetUp, but you can't get finer grained integrated profiling
because it was not set up that way.</p>
<div class="gmail_quote">On Sep 30, 2012 3:26 PM, "TAY wee-beng"
<<a href="mailto:zonexo@gmail.com" target="_blank">zonexo@gmail.com</a>>
wrote:<br type="attribution">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>On 27/9/2012 1:44 PM, Matthew Knepley wrote:<br>
</div>
<blockquote type="cite">On Thu, Sep 27, 2012 at 3:49 AM, TAY
wee-beng <span dir="ltr"><<a href="mailto:zonexo@gmail.com" target="_blank">zonexo@gmail.com</a>></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,<br>
<br>
I'm doing a log summary for my 3d cfd code. I have
some questions:<br>
<br>
1. if I'm solving 3 linear equations using ksp, is the
result given in the log summary the total of the 3
linear eqns' performance? How can I get the
performance for each individual eqn?<br>
</blockquote>
<div><br>
</div>
<div>Use logging stages: <a href="http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Profiling/PetscLogStagePush.html" target="_blank">http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Profiling/PetscLogStagePush.html</a></div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> 2.
If I run my code for 10 time steps, does the log
summary gives the total or avg performance/ratio?<br>
</blockquote>
<div><br>
</div>
<div>Total.</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> 3.
Besides PETSc, I'm also using HYPRE's native geometric
MG (Struct) to solve my Cartesian's grid CFD poisson
eqn. Is there any way I can use PETSc's log summary to
get HYPRE's performance? If I use boomerAMG thru
PETSc, can I get its performance?</blockquote>
<div><br>
</div>
<div>If you mean flops, only if you count them yourself
and tell PETSc using <a href="http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Profiling/PetscLogFlops.html" target="_blank">http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Profiling/PetscLogFlops.html</a></div>
<div><br>
</div>
<div>This is the disadvantage of using packages that do
not properly monitor things :)</div>
<div><br>
</div>
<div> Matt</div>
<div> </div>
</div>
</blockquote>
So u mean if I use boomerAMG thru PETSc, there is no proper
way of evaluating its performance, beside using
PetscLogFlops?<br>
<blockquote type="cite">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <span><font color="#888888"><br>
-- <br>
Yours sincerely,<br>
<br>
TAY wee-beng<br>
<br>
</font></span></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>
</blockquote>
<br>
</div>
</blockquote>
</div>
</blockquote>
<br>
</div></div></div>
</blockquote></div><br>