<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) --> <HTML> <HEAD> <TITLE>Smoothers and coarsest-level solvers</TITLE> <META NAME="description" CONTENT="Smoothers and coarsest-level solvers"> <META NAME="keywords" CONTENT="userhtml"> <META NAME="resource-type" CONTENT="document"> <META NAME="distribution" CONTENT="global"> <META NAME="Generator" CONTENT="LaTeX2HTML v2017.2"> <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css"> <LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="previous" HREF="node14.html"> <LINK REL="up" HREF="node12.html"> <LINK REL="next" HREF="node16.html"> </HEAD> <BODY > <DIV CLASS="navigation"><!--Navigation Panel--> <A NAME="tex2html271" HREF="node16.html"> <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> <A NAME="tex2html267" HREF="node12.html"> <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> <A NAME="tex2html263" HREF="node14.html"> <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> <A NAME="tex2html269" HREF="node2.html"> <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> <BR> <B> Next:</B> <A NAME="tex2html272" HREF="node16.html">Getting Started</A> <B> Up:</B> <A NAME="tex2html268" HREF="node12.html">Multigrid Background</A> <B> Previous:</B> <A NAME="tex2html264" HREF="node14.html">Smoothed Aggregation</A> <B> <A NAME="tex2html270" HREF="node2.html">Contents</A></B> <BR> <BR></DIV> <!--End of Navigation Panel--> <H2><A NAME="SECTION00063000000000000000"></A><A NAME="sec:smoothers"></A> <BR> Smoothers and coarsest-level solvers </H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG> <P> <BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">The smoothers implemented in MLD2P4 include the Jacobi and block-Jacobi methods, a hybrid version of the forward and backward Gauss-Seidel methods, and the additive Schwarz (AS) ones (see, e.g., [<A HREF="node36.html#Saad_book">20</A>,<A HREF="node36.html#dd2_96">21</A>]). </BIG></BIG></BIG> <P> <BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">The hybrid Gauss-Seidel version is considered because the original Gauss-Seidel method is inherently sequential. At each iteration of the hybrid version, each parallel process uses the most recent values of its own local variables and the values of the non-local variables computed at the previous iteration, obtained by exchanging data with other processes before the beginning of the current iteration. </BIG></BIG></BIG> <P> <BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">In the AS methods, the index space <SPAN CLASS="MATH"><IMG WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" SRC="img9.png" ALT="$\Omega^k$"></SPAN> is divided into <SPAN CLASS="MATH"><IMG WIDTH="28" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" SRC="img50.png" ALT="$m_k$"></SPAN> subsets <SPAN CLASS="MATH"><IMG WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img51.png" ALT="$\Omega^k_i$"></SPAN> of size <SPAN CLASS="MATH"><IMG WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" SRC="img52.png" ALT="$n_{k,i}$"></SPAN>, possibly overlapping. For each <SPAN CLASS="MATH"><IMG WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" SRC="img30.png" ALT="$i$"></SPAN> we consider the restriction operator <!-- MATH $R_i^k \in \mathbb{R}^{n_{k,i} \times n_k}$ --> <SPAN CLASS="MATH"><IMG WIDTH="110" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img53.png" ALT="$R_i^k \in \mathbb{R}^{n_{k,i} \times n_k}$"></SPAN> that maps a vector <SPAN CLASS="MATH"><IMG WIDTH="23" HEIGHT="19" ALIGN="BOTTOM" BORDER="0" SRC="img54.png" ALT="$x^k$"></SPAN> to the vector <SPAN CLASS="MATH"><IMG WIDTH="22" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img55.png" ALT="$x_i^k$"></SPAN> made of the components of <SPAN CLASS="MATH"><IMG WIDTH="23" HEIGHT="19" ALIGN="BOTTOM" BORDER="0" SRC="img54.png" ALT="$x^k$"></SPAN> with indices in <SPAN CLASS="MATH"><IMG WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img51.png" ALT="$\Omega^k_i$"></SPAN>, and the prolongation operator <!-- MATH $P^k_i = (R_i^k)^T$ --> <SPAN CLASS="MATH"><IMG WIDTH="95" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img56.png" ALT="$P^k_i = (R_i^k)^T$"></SPAN>. These operators are then used to build <!-- MATH $A_i^k=R_i^kA^kP_i^k$ --> <SPAN CLASS="MATH"><IMG WIDTH="113" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img57.png" ALT="$A_i^k=R_i^kA^kP_i^k$"></SPAN>, which is the restriction of <SPAN CLASS="MATH"><IMG WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" SRC="img41.png" ALT="$A^k$"></SPAN> to the index space <SPAN CLASS="MATH"><IMG WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img51.png" ALT="$\Omega^k_i$"></SPAN>. The classical AS preconditioner <SPAN CLASS="MATH"><IMG WIDTH="41" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img58.png" ALT="$M^k_{AS}$"></SPAN> is defined as </BIG></BIG></BIG> <BR><P></P> <DIV ALIGN="CENTER" CLASS="mathdisplay"> <!-- MATH \begin{displaymath} ( M^k_{AS} )^{-1} = \sum_{i=1}^{m_k} P_i^k (A_i^k)^{-1} R_i^{k}, \end{displaymath} --> <IMG WIDTH="219" HEIGHT="59" BORDER="0" SRC="img59.png" ALT="\begin{displaymath} ( M^k_{AS} )^{-1} = \sum_{i=1}^{m_k} P_i^k (A_i^k)^{-1} R_i^{k}, \end{displaymath}"> </DIV> <BR CLEAR="ALL"> <P></P><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> where <SPAN CLASS="MATH"><IMG WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img60.png" ALT="$A_i^k$"></SPAN> is supposed to be nonsingular. We observe that an approximate inverse of <SPAN CLASS="MATH"><IMG WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img60.png" ALT="$A_i^k$"></SPAN> is usually considered instead of <SPAN CLASS="MATH"><IMG WIDTH="57" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img61.png" ALT="$(A_i^k)^{-1}$"></SPAN>. The setup of <SPAN CLASS="MATH"><IMG WIDTH="41" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img58.png" ALT="$M^k_{AS}$"></SPAN> during the multilevel build phase involves </BIG></BIG></BIG> <UL> <LI>the definition of the index subspaces <SPAN CLASS="MATH"><IMG WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img62.png" ALT="$\Omega_i^k$"></SPAN> and of the corresponding operators <SPAN CLASS="MATH"><IMG WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img63.png" ALT="$R_i^k$"></SPAN> (and <SPAN CLASS="MATH"><IMG WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img64.png" ALT="$P_i^k$"></SPAN>); </LI> <LI>the computation of the submatrices <SPAN CLASS="MATH"><IMG WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img60.png" ALT="$A_i^k$"></SPAN>; </LI> <LI>the computation of their inverses (usually approximated through some form of incomplete factorization). </LI> </UL><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The computation of <!-- MATH $z^k=M^k_{AS}w^k$ --> <SPAN CLASS="MATH"><IMG WIDTH="102" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img65.png" ALT="$z^k=M^k_{AS}w^k$"></SPAN>, with <!-- MATH $w^k \in \mathbb{R}^{n_k}$ --> <SPAN CLASS="MATH"><IMG WIDTH="76" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img66.png" ALT="$w^k \in \mathbb{R}^{n_k}$"></SPAN>, during the multilevel application phase, requires </BIG></BIG></BIG> <UL> <LI>the restriction of <SPAN CLASS="MATH"><IMG WIDTH="25" HEIGHT="19" ALIGN="BOTTOM" BORDER="0" SRC="img67.png" ALT="$w^k$"></SPAN> to the subspaces <!-- MATH $\mathbb{R}^{n_{k,i}}$ --> <SPAN CLASS="MATH"><IMG WIDTH="41" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img68.png" ALT="$\mathbb{R}^{n_{k,i}}$"></SPAN>, i.e. <!-- MATH $w_i^k = R_i^{k} w^k$ --> <SPAN CLASS="MATH"><IMG WIDTH="91" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img69.png" ALT="$w_i^k = R_i^{k} w^k$"></SPAN>; </LI> <LI>the computation of the vectors <!-- MATH $z_i^k=(A_i^k)^{-1} w_i^k$ --> <SPAN CLASS="MATH"><IMG WIDTH="119" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img70.png" ALT="$z_i^k=(A_i^k)^{-1} w_i^k$"></SPAN>; </LI> <LI>the prolongation and the sum of the previous vectors, i.e. <!-- MATH $z^k = \sum_{i=1}^{m_k} P_i^k z_i^k$ --> <SPAN CLASS="MATH"><IMG WIDTH="127" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img71.png" ALT="$z^k = \sum_{i=1}^{m_k} P_i^k z_i^k$"></SPAN>. </LI> </UL><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> Variants of the classical AS method, which use modifications of the restriction and prolongation operators, are also implemented in MLD2P4. Among them, the Restricted AS (RAS) preconditioner usually outperforms the classical AS preconditioner in terms of convergence rate and of computation and communication time on parallel distributed-memory computers, and is therefore the most widely used among the AS preconditioners [<A HREF="node36.html#CAI_SARKIS">6</A>]. </BIG></BIG></BIG> <P> <BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">Direct solvers based on sparse LU factorizations, implemented in the third-party libraries reported in Section <A HREF="node8.html#sec:third-party">3.2</A>, can be applied as coarsest-level solvers by MLD2P4. Native inexact solvers based on incomplete LU factorizations, as well as Jacobi, hybrid (forward) Gauss-Seidel, and block Jacobi preconditioners are also available. Direct solvers usually lead to more effective preconditioners in terms of algorithmic scalability; however, this does not guarantee parallel efficiency. </BIG></BIG></BIG> <P> <BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG></BIG> <DIV CLASS="navigation"><HR> <!--Navigation Panel--> <A NAME="tex2html271" HREF="node16.html"> <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> <A NAME="tex2html267" HREF="node12.html"> <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> <A NAME="tex2html263" HREF="node14.html"> <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> <A NAME="tex2html269" HREF="node2.html"> <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> <BR> <B> Next:</B> <A NAME="tex2html272" HREF="node16.html">Getting Started</A> <B> Up:</B> <A NAME="tex2html268" HREF="node12.html">Multigrid Background</A> <B> Previous:</B> <A NAME="tex2html264" HREF="node14.html">Smoothed Aggregation</A> <B> <A NAME="tex2html270" HREF="node2.html">Contents</A></B> </DIV> <!--End of Navigation Panel--> </BODY> </HTML>