On Nov 22, 2013, at 3:34 PM, Dmitry Karpeyev <[email protected]> wrote:

> 
> 
>   
>  
> Sometimes the solver throws an error before completing (e.g., zero pivot 
> somewhere in the bowels of PCFieldSplit), and -ksp_view never fires. Why not 
> have KSPView() called after KSPSetUp(), too?
> 
    We may want a whole set of trigger points that one could indicate giving 
you this kind of flexibility. Currently we have hard wired _pre and regular.

   Barry


> Dmitry.
> 
>     Now it seems doing -pc_view OPTIONS should have the same effect as 
> KSPGetPC(), PCView() and where does the view actually take place? As you 
> point out after the PCSetUp() is a logically place.  Note that one could 
> anally argue we  should use the option -ksp_pc_view but let’s not.
> 
>    Ok now let’s consider the given case for viewing the matrix. In the code 
> one could do KPSGetPC(), PCFactorGetMatrix(), MatView() so anally the option 
> could be -ksp_pc_factor_mat_view and when would the view get triggered? Well 
> it makes sense right after the factorization. And if we shorten the option 
> name out completely we get -mat_view (but we already have a mat_view for the 
> originally matrix so to prevent problems we could have -factor_mat_view or 
> -pc_factor_mat_view.
> 
>    My conclusion based on the above is that Jed was right and this is the 
> complete model. To implement we can do the following
> 
> 1) Each XXXSetFromOptions() looks for -prefix_xxx_view and scarfs up the 
> viewer and stashes it internally
> 
> 2) Each XXX has a “trigger point” where the actual view is done (if the 
> viewer exists in the option) for regular Mat it is MatAssemblyEnd() for 
> factored matrix it is after the factorization, for PC it is after PCSetUp() 
> for KSP after KSPSolve, for SNES after SNES solver for TS after TSSolve
> 
> 3) Each XXX also a a variant of the trigger point for “before the operation” 
> (that is used for example by the SAWs view, currently called -ksp_view_pre), 
> for KSP for example it is before KSPSolve.
> 
>   The current implementation more or less mimics this from the user point of 
> view except some, like -pc_factor_mat_view disappeared or don’t exist and the 
> options checks are generally done at the trigger point instead of in the 
> setfromoptions.
> 
>    I am fine with this model and over time “fixing” the code to move the 
> checks into the appropriate setfromoptions and out of KSPSolve etc.
> 
>    Barry
> 
> Final note: since someone may want to have -mat_view draw -mat_view ascii in 
> the same run we actually need to maintain a collection of viewers for each 
> trigger point not just one so we should bump this operation process up to the 
> level of PetscObject to get reuse of the code rather than rewriting the 
> management Mat, PC, KSP etc etc. Someone should add this to the issues list 
> on the bitbucket site. Just cut and paste this email?
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 

Reply via email to