12.07.2015 Views

The Parallel Solver Packages MUMPS, PaStiX & SuperLU

The Parallel Solver Packages MUMPS, PaStiX & SuperLU

The Parallel Solver Packages MUMPS, PaStiX & SuperLU

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

It’s Not A Disease:<strong>The</strong> <strong>Parallel</strong> <strong>Solver</strong> <strong>Packages</strong><strong>MUMPS</strong>, <strong>PaStiX</strong> & <strong>SuperLU</strong>A. WindischPhD Seminar: High Performance Computing IIG. HaaseMarch 29 th , 2012, Graz


Outline1 <strong>MUMPS</strong>2<strong>PaStiX</strong>3<strong>SuperLU</strong>4Summary and OutlookAndreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


<strong>MUMPS</strong>MUltifrontal Massively <strong>Parallel</strong> sparse direct<strong>Solver</strong>Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Some historical facts...1996 – 1999(and others)> 1999Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Getting <strong>MUMPS</strong> is easy (it’s PD)Linkhttp://mumps.enseeiht.frDebian, Ubuntu$ sudo apt-get installlibmumps-4.9.2Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Using <strong>MUMPS</strong>Interfaces<strong>MUMPS</strong> (FORTRAN90):1C2MATLAB3Octave4ScilabAndreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


<strong>MUMPS</strong>: Relevant literatureP. R. Amestoy, I. S. Duff, J. Koster and J. Y. L’Excellent,SIAM Journal on Matrix Analysis and Applications 23(2001) 15-41P. R. Amestoy, A. Guermouche, J. Y. L’Excellent andS. Pralet, <strong>Parallel</strong> Computing 32 (2006) 136-156I. S. Duff and J. K. Reid, ACM Transactions onMathematical Software 9 (1983) 302-305I. S. Duff, A. M. Erisman and J. K. Reid, Oxford UniversityPress, London (1986)J. W. H.Liu, SIAM Review 34 (1992) 82-109Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


So, what is <strong>MUMPS</strong>, and how does itwork?SolvesAx = bDirect <strong>Solver</strong> based onMultifrontal ApproachA square sparse matrix1unsymmetric2symmetric positivedefinite3general symmetricFactorizationA = LUSymmetric AA = LDL TAndreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


So, what is <strong>MUMPS</strong>, and how does itwork?SolvesAx = bDirect <strong>Solver</strong> based onMultifrontal ApproachA square sparse matrix1unsymmetric2symmetric positivedefinite3general symmetricFactorizationA = LUSymmetric AA = LDL TAndreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


A = ∑ l A[l]a ij = a ij + a [l]ijAndreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


A = ∑ l A[l]a ij = a ij + a [l]ijAssemblyAndreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


A = ∑ l A[l]a ij = a ij + a [l]ijAssemblyFully summedAndreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


a (k+1)ij= a (k)ij− a (k)ika(k) kk−1a(k)kjGEAndreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


a (k+1)ij= a (k)ij− a (k)ika(k) kk−1a(k)kjAndreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Assemble A, B4 8 1 5 • • • • • •4 × × × ×8 × × ×1 × × ×5 × × × ×••••••Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Assemble A, BEliminate 44 8 1 5 • • • • • •4 u u u u8 l × ×1 l × ×5 l × × ×••••••Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Assemble A, BEliminate 4Assemble C4 8 1 5 2 • • • • •4 u u u u8 l × × ×1 l × × × ×5 l × × × ×2 × × ×•••••Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Assemble A, BEliminate 4Assemble CPermute 1 ↔ 84 1 8 5 2 • • • • •4 u u u u1 l × × × ×8 l × × ×5 l × × × ×2 × × ×•••••Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Assemble A, BEliminate 4Assemble CPermute 1 ↔ 8Eliminate 14 1 8 5 2 • • • • •4 u u u u1 l u u u u8 l l × × 5 l l × × ×2 l × ×•••••Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


4 1 8 5 2 • • • • •4 u u u u1 l u u u u8 l l × × 5 l l × × ×2 l × ×•••••Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Frontal((· · · ((A [1] + A [2] ) + A [3] ) +A [4] ) + · · · )Multifrontal((A [1] + A [2] ) + (A [3] + A [4] ) +(A [5] + A [6] ) + (A [7] + A [8] ))Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


How <strong>MUMPS</strong> solves a problemAnalysis1 PreprocessingFactorization2 Ordering3 Symbolic factorizationSolutionAndreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


How <strong>MUMPS</strong> solves a problemAnalysisFactorizationSolution1 Elimination tree→ nodes2 Numerical factorization: frontalmatrices3 Factor matrices distributedAndreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


How <strong>MUMPS</strong> solves a problemAnalysis1 LUx = b, LDL T x = bFactorization2 Forward: Ly = b or LDy = b3 Backward: Ux = y or L T x = ySolutionAndreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


<strong>MUMPS</strong>Furthermore...➣ Interfaces to PORD, SCOTCH,METIS➣ <strong>Parallel</strong> version requires MPI,BLAS, BLACS and ScaLAPACK➣ Error analysis➣ Detection of null-pivots➣ Schur complementAndreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


<strong>PaStiX</strong><strong>Parallel</strong> Sparse matriX packageAndreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Getting <strong>PaStiX</strong>Linkhttp://pastix.gforge.inria.frAndreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Depending onsymmetry:➣ A = LL T➣ A = LDL T<strong>PaStiX</strong> Steps1 Reordering to reducefill-in2 Symbolic factorization3 Distribute matrix blocksto processors4 Decomposition of A5 Solve system6 Refine solution (staticpivoting)Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


1. Ordering➣ SCOTCH (or METIS)➣ Halo ApproximateMinimum Degree➣ Tree representsdependencies2. Symbolic factorization➣ Structure of factorizedmatrix from A➣ Cheap step➣ # of off-diag blocks3. Distribution➣ Partitioning: large blocksdistributed to severalprocessorsProcessor candidates:local communication➣ Distribution: blocks to nodesUse elimination treeScheduling comm.&comp.➣ Levels of <strong>Parallel</strong>ismCoarse: independendparts of treeMedium: block decomp.Fine: BLAS3Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


4. Factorization➣ Calculate LL T or LDL T➣ multi-frontal vs.super-nodal➣ <strong>PaStiX</strong>: super-nodal(left-looking)5. Solve➣ distribution kept➣ cheap6. Refinement (opt)➣ GMRES by Y. Saad➣ iterative refinement➣ conjugate gradientAndreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


<strong>SuperLU</strong>Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Getting <strong>SuperLU</strong>Linkhttp://crd-legacy.lbl.gov/ xiaoye/<strong>SuperLU</strong>/Debian, Ubuntu$ sudo apt-get install libsuperlu3Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Three packages1 Sequential <strong>SuperLU</strong>Sequential processorsOne or more layers of memory2 Multithreaded <strong>SuperLU</strong> (<strong>SuperLU</strong>_MT)Shared memory multiprocessor (SMPs)Can use 16-32 parallel processors3 Distributed <strong>SuperLU</strong> (<strong>SuperLU</strong>_DIST)Distributed memory parallel processorsMPICan use hundreds of processorsAndreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


SummaryAndreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


<strong>MUMPS</strong>➣ Symbolic Factorization➣ Distribution➣ Factorization throughmultifrontal method<strong>PaStiX</strong>➣ Symbolic Factorization➣ Distribution➣ Factorization throughsupernodal method<strong>SuperLU</strong>➣ To be investigated...Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>


Thank You ForYour Attention!Andreas Windisch, University of Graz<strong>MUMPS</strong>,<strong>PaStiX</strong> & <strong>SuperLU</strong>

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

Saved successfully!

Ooh no, something went wrong!