[Trilinos-Users] Belos / Ifpack2 Memory Modeling

Hoemmen, Mark mhoemme at sandia.gov
Thu Mar 23 11:14:37 EDT 2017



On 3/23/17, 6:40 AM, "Trilinos-Users on behalf of trilinos-users-request at trilinos.org" <trilinos-users-bounces at trilinos.org on behalf of trilinos-users-request at trilinos.org> wrote:
>Date: Wed, 22 Mar 2017 19:49:28 -0500
>From: Pate Motter <Pate.Motter at Colorado.EDU>
>To: trilinos-users at trilinos.org
>Subject: [Trilinos-Users] Belos / Ifpack2 Memory Modeling
>
>I am attempting to create some models for the underlying data motion 
>associated with some of the iterative solvers and preconditioners found 
>in Belos and Ifpack2 respectively. Because of some of the abstraction 
>layers involved, I am having some issues successfully determining this. 
>I just wondered if there were some documentation somewhere that 
>mentioned this or if there were any insights into making this task more 
>feasible.

Belos does not implement computational kernels.  It defers to the linear algebra implementation (Epetra, Tpetra, or anything else) for those kernels.  If you want fine details on how Tpetra moves data, a few minutes on the phone with me would be best.  Otherwise, there are few surprises; standard models for sparse matrix-vector multiply and vector operations should suffice.  If you are counting MPI messages, note that this depends on solver settings, for example whether you use classical or modified Gram-Schmidt in GMRES, and the number of orthogonalization passes (if you use classical Gram-Schmidt, the default is 2).

Ifpack2 implements many different preconditioners; it would be best to pick a few and start there.  I would recommend starting with Symmetric Gauss-Seidel.  The documentation of Ifpack2::Relaxation (see Trilinos/packages/ifpack2/src/Ifpack2_Relaxation_decl.hpp) explains the algorithm and how we implement it.  If you want details, the ApplyInverseSGS_CrsMatrix method (see Trilinos/packages/ifpack2/src/Ifpack2_Relaxation_def.hpp) is where the implementation lives.  The documentation explains how we implement the local computational kernel in enough detail that you should be able to model the data movement that it does, without actually looking at the local kernel.

mfh





More information about the Trilinos-Users mailing list