<div dir="ltr"><div dir="ltr" class="gmail_msg">Hi, thanks for the answer.<br class="gmail_msg"><br class="gmail_msg">I use MUMPS as a PC. The options -ksp_converged_reason, -ksp_monitor_true_residual and -ksp_view  are not used.<br class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">The difference between the log_view outputs of running a simple solution with 1, 2, 3 or 4 MPI procs is attached (debug version).<br class="gmail_msg"><br class="gmail_msg">I can see that with 2 procs it takes about 22 seconds, versus 7 seconds for 1 proc. For 3 and 4 the situation is worse: 29 and 37 seconds.</div><div class="gmail_msg"><br></div><div class="gmail_msg">Looks like the difference is mainly in the BVmult and especially in the BVorthogonalize routines:<br class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">BVmult takes 1, 6.5, 10 or even a whopping 17 seconds for the different number of proceses</div><div class="gmail_msg">BVorthogonalize takes 1, 4, 6, 10.</div><div class="gmail_msg"><br></div><div class="gmail_msg">Calculating the preconditioner does not take more time for different number of proceses, and applying it only slightly increases. So it cannot be mumps' fault...</div><div class="gmail_msg"><br></div><div class="gmail_msg">Does this makes sense? Is there any way to improve this?<br><br>Thanks!</div></div><div dir="ltr" class="gmail_msg"><br class="gmail_msg"><div class="gmail_quote gmail_msg"><div dir="ltr" class="gmail_msg">On Wed, Mar 29, 2017 at 3:20 PM Matthew Knepley <<a href="mailto:knepley@gmail.com" class="gmail_msg" target="_blank">knepley@gmail.com</a>> wrote:<br class="gmail_msg"></div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg">On Wed, Mar 29, 2017 at 6:58 AM, Toon Weyens <span dir="ltr" class="gmail_msg"><<a href="mailto:toon.weyens@gmail.com" class="gmail_msg" target="_blank">toon.weyens@gmail.com</a>></span> wrote:<br class="gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg">Dear Jose,<div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Thanks for the answer. I am looking for the smallest real, indeed. </div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">I have, just now, accidentally figured out that I can get correct convergence by increasing NCV to higher values, so that's covered! I thought I had checked this before, but apparently not. It's converging well now, and rather fast (still about 8 times faster than Krylov-Schur).<br class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">The issue now is that it scales rather badly: If I use 2 or more MPI processes, the time required to solve it goes up drastically. A small test case, on my Ubuntu 16.04 laptop, takes 10 seconds (blazing fast) for 1 MPI process, 25 for 2, 33 for 3, 59 for 4, etc... It is a machine with 8 cores, so i don't really understand why this is.<br class="gmail_msg"></div></div></blockquote><div class="gmail_msg"><br class="gmail_msg"></div></div></div></div><div dir="ltr" class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg">For any scalability question, we need to see the output of</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">  -log_view -ksp_view -ksp_monitor_true_residual -ksp_converged_reason</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">and other EPS options which I forget unfortunately. What seems likely here is that you</div><div class="gmail_msg">are using a PC which is not scalable, so iteration would be going up.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">  Thanks,</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">     Matt</div></div></div></div><div dir="ltr" class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg"> </div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg"><div class="gmail_msg">Are there other methods that can actually maintain the time required to solve for multiple MPI process? Or, preferable, decrease it (why else would I use multiple processes if not for memory restrictions)?<br class="gmail_msg"><br class="gmail_msg">I will never have to do something bigger than a generalized non-Hermitian ev problem of, let's say, 5000 blocks of 200x200 complex values per block, and a band size of about 11 blocks wide (so a few GB per matrix max).</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Thanks so much!</div></div><div class="m_2223989812019060880m_2692734903248084915HOEnZb gmail_msg"><div class="m_2223989812019060880m_2692734903248084915h5 gmail_msg"><br class="gmail_msg"><div class="gmail_quote gmail_msg"><div dir="ltr" class="gmail_msg">On Wed, Mar 29, 2017 at 9:54 AM Jose E. Roman <<a href="mailto:jroman@dsic.upv.es" class="gmail_msg" target="_blank">jroman@dsic.upv.es</a>> wrote:<br class="gmail_msg"></div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
> El 29 mar 2017, a las 9:08, Toon Weyens <<a href="mailto:toon.weyens@gmail.com" class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg" target="_blank">toon.weyens@gmail.com</a>> escribió:<br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
><br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
> I started looking for alternatives from the standard Krylov-Schur method to solve the generalized eigenvalue problem Ax = kBx in my code. These matrices have a block-band structure (typically 5, 7 or 9 blocks wide, with block sizes of the order 20) of size typically 1000 blocks. This eigenvalue problem results from the minimization of the energy of a perturbed plasma-vacuum system in order to investigate its stability. So far, I've not taken advantage of the Hermiticity of the problem.<br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
><br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
> For "easier" problems, especially the Generalized Davidson method converges like lightning, sometimes up to 100 times faster than Krylov-Schur.<br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
><br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
> However, for slightly more complicated problems, GD converges to the wrong eigenpair: There is certainly an eigenpair with an eigenvalue lower than 0 (i.e. unstable), but the solver never gets below some small, positive value, to which it wrongly converges.<br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
<br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
I would need to know the settings you are using. Are you doing smallest_real? Maybe you can try target_magnitude with harmonic extraction.<br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
<br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
><br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
> Is it possible to improve this behavior? I tried changing the preconditioner, but it did not work.<br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
><br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
> Might it be possible to use Krylov-Schur until reaching some precision, and then switching to JD to quickly converge?<br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
<br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
Yes, you can do this, using EPSSetInitialSpace() in the second solve. But, depending on the settings, this may not buy you much.<br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
<br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
Jose<br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
<br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
><br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
> Thanks!<br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
<br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
<br class="m_2223989812019060880m_2692734903248084915m_-3848618158238288581gmail_msg gmail_msg">
</blockquote></div>
</div></div></blockquote></div></div></div><div dir="ltr" class="gmail_msg"><div class="gmail_extra gmail_msg"><br class="gmail_msg"><br clear="all" class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div>-- <br class="gmail_msg"><div class="m_2223989812019060880m_2692734903248084915gmail_signature gmail_msg" data-smartmail="gmail_signature">What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br class="gmail_msg">-- Norbert Wiener</div>
</div></div></blockquote></div></div></div>