[petsc-users] SLEPc solve: progress info and abort option

Jose E. Roman jroman at dsic.upv.es
Fri Mar 4 13:36:15 CST 2022


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(). 

Jose

> El 4 mar 2022, a las 20:16, Matthew Knepley <knepley at gmail.com> escribió:
> 
> 
> On Fri, Mar 4, 2022 at 2:07 PM Varun Hiremath <varunhiremath at gmail.com> wrote:
> Hi All,
> 
> 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. 
> 
> 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.
> 
> 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".
> 
>   Thanks,
> 
>      Matt
>  
> Thanks,
> Varun
> 
> 
> -- 
> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
> -- Norbert Wiener
> 
> https://www.cse.buffalo.edu/~knepley/



More information about the petsc-users mailing list