Next: 3.2 Running on parallel machines
Up: 3 Parallelism
Previous: 3 Parallelism
Contents
Two different parallelization paradigms are currently implemented
in QUANTUM ESPRESSO:
- Message-Passing (MPI). A copy of the executable runs
on each CPU; each copy lives in a different world, with its own
private set of data, and communicates with other executables only
via calls to MPI libraries. MPI parallelization requires compilation
for parallel execution, linking with MPI libraries, execution using
a launcher program (depending upon the specific machine). The number
of CPUs used
is specified at run-time either as an option to the launcher or
by the batch queue system.
- OpenMP. A single executable spawn subprocesses
(threads) that perform in parallel specific tasks.
OpenMP can be implemented via compiler directives (explicit
OpenMP) or via multithreading libraries (library OpenMP).
Explicit OpenMP require compilation for OpenMP execution;
library OpenMP requires only linking to a multithreading
version of the mathematical libraries.
The number of threads is specified at run-time in the environment
variable OMP_NUM_THREADS.
MPI is the well-established, general-purpose parallelization.
In QUANTUM ESPRESSO several parallelization levels, specified at run-time
via command-line options to the executable, are implemented
with MPI. This is your first choice for execution on a parallel
machine.
The support for explicit OpenMP is steadily improving.
Explicit OpenMP can be used together with MPI and also
together with library OpenMP. Beware
conflicts between the various kinds of parallelization!
If you don't know how to run MPI processes
and OpenMP threads in a controlled manner, forget about mixed
OpenMP-MPI parallelization.
Next: 3.2 Running on parallel machines
Up: 3 Parallelism
Previous: 3 Parallelism
Contents