22.09.2013 Views

Chapter 1 parallel sparse solver - freeFEM.org

Chapter 1 parallel sparse solver - freeFEM.org

Chapter 1 parallel sparse solver - freeFEM.org

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!