Chapter 1 parallel sparse solver - freeFEM.org
Chapter 1 parallel sparse solver - freeFEM.org
Chapter 1 parallel sparse solver - freeFEM.org
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
12 CHAPTER 1. PARALLEL SPARSE SOLVER<br />
All this preconditionners are used with Krylov subspace methods accelerators. Krylov subspace<br />
methods is iterative methods which consists of find solution x of linear system Ax = b inside affine<br />
space x0 + Km by impose that b − Ax⊥Lm. Where Km is Krylov subspace of dimension m define by<br />
Km = {r0, Ar0, A 2 r0, ..., A m−1 r0} and Lm is another subspace of dimension m which depend on type<br />
of Krylov subspace. For example in GMRES, Lm = AKm.<br />
We realized an interface which is easy to use, so the call of these different software in FreeFem++<br />
happens in the same way. You just have to load the <strong>solver</strong> and then specify the parameters to apply<br />
to the specific <strong>solver</strong>s. In the following part of this chapter, Krylov subspace methods will be one<br />
like GMRES, CG and BICGSTAB.<br />
1.3.1 pARMS <strong>solver</strong><br />
pARMS ( <strong>parallel</strong> Algebraic Multilevel Solver) is software developped by Youssef Saad and al<br />
at university of Minnesota [17]. This software is specialized in the resolution of large <strong>sparse</strong> non<br />
symmetric linear system of equation. Solvers developed in pARMS is the Krylov subspace type.<br />
It consists of variants of GMRES like FGMRES(Flexible GMRES) , DGMRES(Deflated GM-<br />
RES) [25] and BICGSTAB. pARMS also implement <strong>parallel</strong> preconditioner like RAS (Restricted<br />
Additive Schwarz)[20] and Schur Complement type preconditionner [21].<br />
All these <strong>parallel</strong> preconditioners are based on the principle of domain decomposition. Thus, the<br />
matrix A is partitioned into sub matrix Ai(i = 1, ..., p) where p represent the number of partition you<br />
need. The union of Ai forms the original matrix. The solution of the overall system is obtained by<br />
solving the local systems on Ai (see [26]). Therefore, a distinction is made between iterations on A<br />
and the local iterations on Ai. To solve the local problem on Ai they are several preconditioners as<br />
ilut (Incomplet LU with threshold), iluk(Incomplet LU with level of fill in) and ARMS( Algebraic<br />
Recursive Multilevel Solver). But to use pAMRS in FreeFem you have first to install pAMRS.<br />
Installation of pARMS To install pARMS, you must first download pARMS package at [17].<br />
Once the download is complete, you must unpack package pARMS and follows the installation<br />
procedure described in file README to create library libparms.a.<br />
Using pARMS as interface to FreeFem++ Before calling pARMS <strong>solver</strong> inside FreeFem++,<br />
you must compile file parms FreeFem.cpp to create dynamic library parms FreeFem.so. To do<br />
this, move to the directory src/<strong>solver</strong> of FreeFem++, edit file make f ileparms.inc to specify the<br />
following variables:<br />
PARMS DIR : Directory of pARMS<br />
PARMS INCLUDE : Directory for header of pARMS<br />
MET IS : METIS directory<br />
MET IS LIB : METIS librairy<br />
MPI : MPI directory<br />
MPI INCLUDE : MPI headers<br />
FREEFEM : FreeFem++ directory<br />
FREEFEM INCLUDE : FreeFem heaeder for <strong>sparse</strong> linear <strong>solver</strong><br />
LIBBLAS : Blas librairy<br />
After specifying all these variables, in command line type make parms to create parms FreeFem.so.<br />
Like it is usual in FreeFem++, we will show by examples how to call pARMS in FreeFem++. There