-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
+<html>
+ <head>
<title>The deal.II Readme on interfacing to PETSc and Trilinos</title>
<link href="screen.css" rel="StyleSheet">
- <meta name="author" content="the deal.II authors <authors @ dealii.org>">
- <meta name="copyright" content="Copyright (C) 2010, 2011 by the deal.II authors">
+ <meta name="author" content="the deal.II authors <authors @ dealii.org>">
+ <meta name="copyright" content="Copyright (C) 2010, 2011, 2012 by the deal.II authors">
<meta name="date" content="$Date: 2010-05-05 (Thu, 05 May 2010) $">
<meta name="svn_id" content="$Id: readme-mumps.html$">
- <meta name="keywords" content="deal.II">
- </head>
- <body>
+ <meta name="keywords" content="deal.II">
+ </head>
+ <body>
<h1>Interfacing <acronym>deal.II</acronym>
to <acronym>MUMPS</acronym></h1>
-
+
<p> This documentation describes the compilation process
of <acronym>MUMPS</acronym> and its dependencies starting with
<acronym>BLACS</acronym> and following
walk-through mentioning the most important parameters needed for
successful compliation and linking.
</p>
-
+
<p> The compilation scheme involves repeating the same three steps
for each piece of software we want installed: (i) Selecting an
appropriate makefile; (ii) Modifying symbols in this makefile to
suit the environment; and (iii) running make to actually compile
the software.
</p>
-
+
<p> Note: If you are using a system, which provides
Intel's <acronym>MKL</acronym>, you should only have to compile
<acronym>MUMPS</acronym>, since <acronym>BLACS</acronym> and
considered. Otherwise start right below with the installation
of <acronym>BLACS</acronym>.
</p>
-
+
<h2>1. BLACS</h2>
-
+
<p> The <a href="http://www.netlib.org/blacs/">BLACS</a> library
provides basic linear algebra routines together with a
communication model such that they can be used in parallel. The
and software used and we can only give a general guide through
the configuration process.
</p>
-
+
<p> The library can be found on the
official <a href="http://www.netlib.org/blacs/">BLACS
webpage</a>. We require the three
conventional: <code>Bmake.XXX-YYY</code>,
where <code>XXX</code> stands for the message passing software
of your system
- (<i>eg..</i> <acronym>MPI</acronym>, <acronym>PVM</acronym>)
+ (<i>e.g.</i> <acronym>MPI</acronym>, <acronym>PVM</acronym>)
and
- <code>YYY</code> for the system architecture (<i>eg.</i> LINUX,
+ <code>YYY</code> for the system architecture (<i>e.g.</i> LINUX,
SUN4, SUN4SOL). Pick the corresponding file for your combination
of message passing software and system architecture, copy it to
the root directory of <acronym>BLACS</acronym>, and rename it
<code>Bmake.inc</code>. Now that we have the correct makefile,
we have to adapt it to the system we are using.
</p>
-
+
<p> We start by opening Bamke.inc in our favourite text editor and
taking a look at the following three sections:
-
+
<ul>
<li> In <code>SECTION 1: PATHS AND LIBRARIES</code> set the
MPI environment correctly by changing the
<acronym>MPI</acronym> installation is located
in. Furthermore you will probably have to adjust the
variables <code>MPILIBdir</code>,
- <code>MPIINCdir</code> and <code>MPILIB</code>.
+ <code>MPIINCdir</code> and <code>MPILIB</code>.
</li>
-
+
<li> In the section <code>SECTION 2: BLACS INTERNALS</code>
the most important variables are <code>INTFACE</code> and
<code>TRANSCOMM</code>. If you are using OpenMPI, then set
webpage</a> for details on how to set these values
correctly.
</li>
-
+
<li> The last section is named <code>SECTION 3:
Compilers</code>. Here we set the
variables <code>F77</code> and <code>CC</code> to
correspond to the <acronym>MPI</acronym> Fortran and CC
- compiler respectively, <i>eg.</i>
+ compiler respectively, <i>e.g.</i>
<code>mpif77</code> and <code>mpicc</code>. An important
issue here are the variables <code>F77FLAGS</code>
and <code>CCFLAGS</code>. It is absolutely vital to add the
libraries are enabled.
</li>
</ul>
- </p>
-
+ </p>
+
<p> Assuming we have done all of that correctly, we go back to
the <acronym>BLACS</acronym> root directory and compile the
library with the command <code>make mpi</code>.
</p>
-
+
<h2>2. SCALAPACK</h2>
-
+
<p> The <a href="http://www.netlib.org/scalapack">SCALAPACK</a>
library provides high-performance linear algebra routines for
distributed-memory message-passing <acronym>MIMD</acronym>
webpage</a>. We require the
file <b><code>scalapack.tgz</code></b> version <= 1.8.0 only.
</p>
-
+
<p> After extracting the file and changing to the directory which
was created, we find a file
called <code>SLmake.inc.example</code> and rename it
to <code>SLmake.inc</code>. In this file we have to set a few
parameters as we did before with <acronym>BLACS</acronym>'
own <code>Bmake.inc</code>.
-
- <ul>
+
+ <ul>
<li> The first important variable is the
variable <code>home</code>. Here you have to take care, that
this points to the <acronym>SCALAPACK</acronym> directory
variable <code>SMPLIB</code> to the <acronym>MPI</acronym>
library.
</li>
-
+
<li>Now we have to get <acronym>SCALAPACK</acronym> to know
about the location of the <acronym>BLACS</acronym> library,
which we installed first. This is done by editing the
following bunch of variables <code>BLACSFINIT</code>,
<code>BLACSCINIT</code>, and
- <code>BLACSLIB</code>.
-
+ <code>BLACSLIB</code>.
+
<ul>
<li> <code>BLACSFINIT</code> has to point to your
F77init-library of <acronym>BLACS</acronym>. Check the
</li>
</ul>
</li>
-
+
<li> Next we set the compilers correctly
again. <code>F77</code> and <code>CC</code> should point to
your <acronym>MPI</acronym> Fortran and CC compiler
variable <code>INTFACE</code> in the configuration
file <code>Bmake.inc</code> in <acronym>BLACS</acronym>.
</li>
-
+
<li> Finally, we should check that the variables
named <code>BLAS</code> and
<code>LAPACK</code> point to your <acronym>BLAS</acronym>
</li>
</ul>
</p>
-
+
<p> If all variables are set correctly we can go ahead and compile
the <acronym>SCALAPACK</acronym> library with the
command <code>make</code>.
</p>
-
+
<h2>3. MUMPS</h2>
-
+
<p> Now we come to the main program for which we are doing all
this. We want to install the parallel sparse direct
solver <a href="http://graal.ens-lyon.fr/MUMPS">MUMPS</a>.
</p>
-
+
<p> After downloading the solver from its
official <a href="http://graal.ens-lyon.fr/MUMPS">webpage</a>,
extracting it, and changing to the directory which was created, we
the <acronym>MUMPS</acronym> root directory and rename it
as <code>Makefile.inc</code>.
</p>
-
+
<p> As before, we open the makefile <code>Makefile.inc</code> in
our favourite text editor and start modifying variables:
-
+
<ul>
<li> The first variables we have to edit are the compilers
again. As usual the variable <code>CC</code> should point to
your <acronym>MPI</acronym> CC
- compiler, <i>eg.</i> <code>mpicc</code>. The
+ compiler, <i>e.g.</i> <code>mpicc</code>. The
variables <code>FC</code> and <code>FL</code> should both
point to your <acronym>MPI</acronym> Fortran90 compiler,
- <i>eg.</i> <code>mpif90</code>.
+ <i>e.g.</i> <code>mpif90</code>.
</li>
-
+
<li> Now let us consider the
variable <code>SCALAP</code>. This one should point to your
<acronym>SCALAPACK</acronym>0 and <acronym>BLACS</acronym>
variable <code>INCPAR</code> should point to
the <acronym>MPI</acronym> include directory.
</li>
-
+
<li> Now we turn to the variable <code>LIBPAR</code> which
should contain the same value as the
variable <code>SCALAP</code> plus a pointer to
variable <code>LIBBLAS</code> points to your BLAS
installation. The variable
<code>CDEFS</code> has to contain the same value as the variable
- <code>INTFACE</code> of
+ <code>INTFACE</code> of
<acronym>BLACS</acronym>' own <code>Bmake.inc</code>. If you
are using OpenMPI this should be the
- value <code>-DAdd_</code>.
+ value <code>-DAdd_</code>.
</li>
<li> Finally we add the flag <code>-fPIC</code> to the
</li>
</ul>
</p>
-
+
<p> Now we are done with configuration and can
compile <acronym>MUMPS</acronym> with the
command <code>make</code>.
</p>
-
+
<h2>4. Linking with deal.II</h2>
-
+
<p> To be able to use the interface of <acronym>deal.II</acronym>
for the MUMPS solver we then
configure <acronym>deal.II</acronym> with the following
</code>
</pre>
</p>
-
+
<p>
Note: Throughout this description of the compilation process
of <acronym>MUMPS</acronym> we have emphasised adding the