From 0e47eab7e7cecd70aad1ff519f6f6d48433e2c4e Mon Sep 17 00:00:00 2001 From: Ben Hourahine Date: Mon, 23 May 2022 08:19:01 +0100 Subject: [PATCH 1/2] Start of MPI parallel examples --- docs/parallel/benchmarking.rst | 17 --------- docs/parallel/index.rst | 1 + docs/parallel/mpi.rst | 69 ++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 17 deletions(-) create mode 100644 docs/parallel/mpi.rst diff --git a/docs/parallel/benchmarking.rst b/docs/parallel/benchmarking.rst index f03d432d..884518c4 100644 --- a/docs/parallel/benchmarking.rst +++ b/docs/parallel/benchmarking.rst @@ -112,20 +112,3 @@ Weak scaling from the same data set is shown here :height: 40ex :align: center :alt: Weak scaling for some SiC supercells. - - -Distributed memory parallelism -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -This section coming soon! - -Topics to be discussed: - -* Parallel scaling of simple examples. - -* Parallel efficiency. - -* Use of the `Groups` keyword in DFTB+ to improve scaling and efficiency for - calculations with spin polarisation and/or k-points. - -* Effects of latency on code performance. diff --git a/docs/parallel/index.rst b/docs/parallel/index.rst index 8df6d54c..9516ea35 100644 --- a/docs/parallel/index.rst +++ b/docs/parallel/index.rst @@ -11,3 +11,4 @@ Parallel usage of DFTB+ amdahl.rst compiling.rst benchmarking.rst + mpi.rst diff --git a/docs/parallel/mpi.rst b/docs/parallel/mpi.rst new file mode 100644 index 00000000..c84aaef2 --- /dev/null +++ b/docs/parallel/mpi.rst @@ -0,0 +1,69 @@ +.. _sec-mpi: + +MPI parallel calculations +========================= + +Architecture +------------ + +MPI parallel calculations can be run on shared memory machines, but +for larger calculations, distributed memory systems are used. These +consist of separate computing nodes (often with multiple processors) +networked together, typically with a shared file and queuing system. + +Processor groups +---------------- + +* Use of the `Groups` keyword in DFTB+ to improve scaling and efficiency for + calculations with spin polarisation and/or k-points. + + +Solvers +------- + +ScaLAPACK solvers +^^^^^^^^^^^^^^^^^ + +The `QR`, `DivideAndConquer` and `RelativelyRobust` dense ScaLAPACK +eigensolvers are available for the serial and MPI parallel +DFTB+. However, if possible, we suggest using the ELSI solvers for +their better performance and capabilities. + +ELSI solvers +^^^^^^^^^^^^ + +Some of the [ELSI]_ solvers which can be used are :: + + +--------------------+--------------------+--------------------+--------------------+ + |Solver |Use case |Scaling with atoms |Eigenvalues | + +--------------------+--------------------+--------------------+--------------------+ + |ELPA |General (dense) |O(N :sup:`3` ) |available | + +--------------------+--------------------+--------------------+--------------------+ + |PEXSI |General (sparse) |O(N :sup:`2` ) -- |not available | + | | |O(N) | | + +--------------------+--------------------+--------------------+--------------------+ + |NTPoly |Better for gapped |O(N) |not available | + | |systems (sparse) | | | + +--------------------+--------------------+--------------------+--------------------+ + +The PEXSI solver is not included in the condaforge binaries, but can +be built separately. + + +Examples +-------- + + + +Note about transport calculations +--------------------------------- + +For :ref:`electronic transport `, MPI parallelism is also supported. + + +References +========== + +.. [ELSI] ELSI -- An open infrastructure for electronic structure + solvers, Yu *et al.* (2020) DOI: `j.cpc.2020.107459 + `_ From 8f3f3385d7de39d10f6934297ba41b61a9cad9c5 Mon Sep 17 00:00:00 2001 From: Ben Hourahine Date: Mon, 13 Jun 2022 23:50:31 +0100 Subject: [PATCH 2/2] Fix table --- docs/parallel/mpi.rst | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/docs/parallel/mpi.rst b/docs/parallel/mpi.rst index c84aaef2..2a993e65 100644 --- a/docs/parallel/mpi.rst +++ b/docs/parallel/mpi.rst @@ -32,19 +32,21 @@ their better performance and capabilities. ELSI solvers ^^^^^^^^^^^^ -Some of the [ELSI]_ solvers which can be used are :: - - +--------------------+--------------------+--------------------+--------------------+ - |Solver |Use case |Scaling with atoms |Eigenvalues | - +--------------------+--------------------+--------------------+--------------------+ - |ELPA |General (dense) |O(N :sup:`3` ) |available | - +--------------------+--------------------+--------------------+--------------------+ - |PEXSI |General (sparse) |O(N :sup:`2` ) -- |not available | - | | |O(N) | | - +--------------------+--------------------+--------------------+--------------------+ - |NTPoly |Better for gapped |O(N) |not available | - | |systems (sparse) | | | - +--------------------+--------------------+--------------------+--------------------+ +Some of the [ELSI]_ solvers which can be used are + + +--------+-------------------+--------------------+---------------+ + | Solver | Use case | Scaling with atoms | Eigenvalues | + +========+===================+====================+===============+ + | ELPA | General (dense) | O(N :sup:`3` ) | available | + +--------+-------------------+--------------------+---------------+ + | PEXSI | General (sparse) | between | not available | + | | | O(N:sup:`2`) and | | + | | | O(N) | | + +--------+-------------------+--------------------+---------------+ + | NTPoly | Better for gapped | O(N) | not available | + | | systems (sparse) | | | + +--------+-------------------+--------------------+---------------+ + The PEXSI solver is not included in the condaforge binaries, but can be built separately.