From: bangerth
+ deal.II has a large number of optional interfaces to
+ other libraries. By default,
-
-
-
-
- For a complete list of supported values of this switch, you may
- take a look at the file
- build/
directory after the last step.
+
cmake
system can accept a
significant number of configuration parameters. See the
discussion below.
@@ -289,72 +293,43 @@
Configuration options
+ cmake
will enable interfaces
+ to all external libraries it can find in default paths, but this
+ behavior can all be selected using command line switches to the initial
+ call to cmake
.
+ Selecting optional behavior
- You can give several flags to ./configure:
--enable-shared
: Compile the files of deal.II into
- shared libraries, rather than statically linked
- libraries. Enabling this option saves disk space, link time and
- start-up time, so this is the default. Some systems
- might not support shared libraries, in which case you should
- call ./configure with the parameter
- --disable-shared
.
+ Threading: By default, deal.II supports parallelism between
+ multiple cores on the same machine using both threads and a
+ task-based model built on the
+ Threading Building Blocks. You can switch
+ threading off by passing the XXXXXX HOW EXACTLY DO I DO
+ THIS??? XXXXX
argument to cmake
.
--enable-threads
: This flag indicates that those
- parts of the library that support this compute in parallel,
- using multiple threads, making programs significantly faster on
- machines with multiple cores or processors. The default is to
- use multiple threads since most machines today have several
- processor cores. If this is not desired,
- use --disable-threads
.
-
- --enable-mpi
: If given this
- flag, ./configure
chooses mpiCC
- and mpicc
as the C++ and C compilers, respectively,
- unless the $CXX
and $CC
environment
- variables have specifically been set to something else. If these
- compilers exist and indeed support MPI, then this also switches
- on support for MPI in the library.
- --with-cpu=...
: Enable specific optimization
- flags for a particular processor. Programs compiled with these options
- might not execute on another system, but may be faster on the
- particular CPU selected.
- aclocal.m4
in the top-level
- directory. However, the most commonly used value
- is --with-cpu=native
, indicating that the compiler
- should determine the CPU we are running on by itself and
- optimize for it.
- --with-doxygen=...
: Select the specified executable
- of doxygen
over the one automatically found by
- ./configure
. May also be used if no
- doxygen
can be found automatically.
- -DDEAL_II_WITH_MPI=ON
argument
+ to cmake
. If cmake
found MPI but you
+ specifically do not want to use it, then
+ pass -DDEAL_II_WITH_MPI=OFF
.
+
- ./configure
stores the paths to some
+ cmake
stores the paths to some
programs, such as the compilers or the Perl interpreter. The
compiler which will be used when compiling the library (or your
own application) is therefore selected at the time of
@@ -375,14 +350,87 @@
deal.II comes with built-in support for a - number of external software packages. These packages are - sometimes detected automatically, sometimes they must be enabled explicitly - during configuration by adding the option --with-package. - Supported software packages are (the following list contains - trademarks belonging to their owners): +
+ When configuring interfacing to external libraries,
+ the cmake
script by default tries to find any of these
+ libraries in a number of standard locations on your file system. For
+ optional interfaces, it gives up if they are not there and
+ deal.II will be built without them. However, there
+ are three interfaces that we need to have: to BOOST, UMFPACK and
+ the Threading Building Blocks. If they are not found in places
+ like /usr/
then cmake
will resort to versions
+ of these libraries that we provide bundled as part of the
+ deal.II tar files.
+
+ The following paragraphs describe how the interfaces to the various + packages deal.II interacts with can be configured.
+
+ PETSc is a
+ library that supports parallel linear algebra and many other things.
+ To interface with it, add -DPETSC_DIR=/path/to/petsc
+ -DPETSC_ARCH=architecture
to the argument list
+ for cmake
. The values for these arguments must be the
+ same as those specified when building PETSc. Alternatively, you can
+ also set environment variables PETSC_DIR, PETSC_ARCH
+ and cmake
will pick them up.
+
+ To disable the PETSc interfaces in cases where cmake
+ automatically finds it, use -DDEAL_II_WITH_PETSC=OFF
+ More information on configuring and building PETSC can be
+ found here.
+
+ SLEPc is
+ a library for eigenvalue computations that builds on PETSc. Its
+ configuration works just like that for PETSc, except that the
+ variable to set is SLEPC_DIR
(it uses the same
+ architecture as specified in PETSC_ARCH
).
+ For the interface with SLEPc to work, deal.II's
+ interface to PETSc must also be configured correctly (see above).
+
+ Trilinos is a
+ library for parallel linear algebra and all sorts of other things as
+ well.
+ To interface with it,
+ add -DTRILINOS_DIR=/path/to/trilinos
to the argument
+ list for cmake
. Alternatively, you can
+ also set an environment variable TRILINOS_DIR
+ and cmake
will pick up this path.
+
+ To disable the Trilinos interfaces in cases where cmake
+ automatically finds it, use -DDEAL_II_WITH_PETSC=OFF
+ More details about compatibility and
+ configuration can be found here.
+
- deal.II can interface to
- the PETSc library. The simplest way to do so is to
- set the PETSC_DIR
and PETSC_ARCH
- environment variables. More information and configuration
- options can be found by issuing ./configure --help
- at the command line, or, here.
-
- (deal.II) version 7.2 (and higher) support - PETSc 3.x.x only; earlier releases are no longer supported. -
-
- deal.II can also interface to
- the SLEPc library. The way to do it is to set
- the SLEPC_DIR
environment variable by
- passing --with-slepc=/path/to/slepc
- to deal.II's ./configure
script.
- The use of SLEPc is optional, however, for the interface with
- SLEPc to work at all, deal.II's interface to
- PETSc must also be configured correctly (see the notes above on
- how to do this).
-
- deal.II can also interface
- to Trilinos. The
- simplest way to use these interfaces is to
- pass --with-trilinos=/path/to/trilinos
- to deal.II's ./configure
script. Note
- that not all versions of Trilinos are compatible
- with deal.II. More details about compatibility and
- configuration can be found here.
-