<div dir="ltr">Thanks, Matt and Jose! I have added a custom function to KSPMonitorSet, and that improves the response time for the <i>abort </i>option, however, it is still a bit slow for very big problems, but I think that is probably because I am using the MUMPS direct solver so likely a large amount of time is spent inside MUMPS. And I am guessing there is no way to get the progress info of MUMPS from PETSc?<div><br></div><div>Jose, for the progress bar I am using the number of converged eigenvalues (nconv) as obtained using EPSMonitorSet function. But this is slow as it is called only once every iteration, and typically many eigenvalues converge within an iteration, so is there any way to get more detailed/finer info on the solver progress?</div><div><br></div><div>Many thanks for your help.</div><div><br></div><div>Thanks,</div><div>Varun</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Mar 4, 2022 at 11:36 AM Jose E. Roman <<a href="mailto:jroman@dsic.upv.es">jroman@dsic.upv.es</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Yes, assuming that the eigensolver is calling KSPSolve(), you can set a monitor with KSPMonitorSet(). This will be called more often than the callback for EPSSetStoppingTestFunction(). <br>
<br>
Jose<br>
<br>
> El 4 mar 2022, a las 20:16, Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>> escribió:<br>
> <br>
> <br>
> On Fri, Mar 4, 2022 at 2:07 PM Varun Hiremath <<a href="mailto:varunhiremath@gmail.com" target="_blank">varunhiremath@gmail.com</a>> wrote:<br>
> Hi All,<br>
> <br>
> We use SLEPc to compute eigenvalues of big problems which typically takes a long time. We want to add a progress bar to inform the user of the estimated time remaining to finish the computation. In addition, we also want to add an option for the user to abort the computation midway if needed. <br>
> <br>
> To some extent, I am able to do these by attaching a custom function to EPSSetStoppingTestFunction and using nconv/nev as an indication of progress, and throwing an exception when the user decides to abort the computation. However, since this function gets called only once every iteration, for very big problems it takes a long time for the program to respond. I was wondering if there is any other function to which I can attach, which gets called more frequently and can provide more fine-grained information on the progress.<br>
> <br>
> I believe (Jose can correct me) that the bulk of the time in an iterate would be in the linear solve. You can insert something into a KSPMonitor. If you know the convergence tolerance and assume a linear convergence rate I guess you could estimate the "amount done".<br>
> <br>
> Thanks,<br>
> <br>
> Matt<br>
> <br>
> Thanks,<br>
> Varun<br>
> <br>
> <br>
> -- <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>
> <br>
> <a href="https://www.cse.buffalo.edu/~knepley/" rel="noreferrer" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br>
<br>
</blockquote></div>