You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The 2DECOMP&FFT library is a software framework written in modern Fortran to build large-scale parallel applications. It is designed for applications using three-dimensional structured mesh and spatially implicit numerical algorithms. At the foundation it implements a general-purpose 2D pencil decomposition for data distribution. On top it provides a highly scalable and efficient interface to perform three-dimensional distributed Fast Fourier Transforms. The library was originaly designed for CPUs only in the 2010's. The new version has be designed to work on CPUs and (NVIDIA) GPUs. We will aim to expend the capabilities of the library in the future (and to fix bugs!).
9
+
The 2DECOMP&FFT library is a software framework written in modern Fortran to build large-scale parallel applications.
10
+
It is designed for applications using three-dimensional structured mesh and spatially implicit numerical algorithms.
11
+
At the foundation it implements a general-purpose 2D pencil decomposition for data distribution.
12
+
On top it provides a highly scalable and efficient interface to perform three-dimensional distributed Fast Fourier Transforms.
13
+
The library was originaly designed for CPUs only in the 2010's.
14
+
The new version has be designed to work on CPUs and (NVIDIA) GPUs. We will aim to expend the capabilities of the library in the future (and to fix bugs!).
13
15
14
-
**Features**
15
-
=============
16
+
Features
17
+
========
16
18
17
19
Here is a list of 2DECOMP&FFT's main features:
18
20
19
-
-General-purpose 2D pencil decomposition module to support building large-scale parallel applications on supercomputers.
21
+
* General-purpose 2D pencil decomposition module to support building large-scale parallel applications on supercomputers.
20
22
21
-
-Highly scalable and efficient distributed Fast Fourier Transform module, supporting three dimensional FFTs (both complex-to-complex and real-to-complex/complex-to-real).
23
+
* Highly scalable and efficient distributed Fast Fourier Transform module,
24
+
supporting three dimensional FFTs (both complex-to-complex and real-to-complex/complex-to-real).
22
25
23
-
-Halo-cell support allowing explicit message passing between neighbouring blocks.
26
+
* Halo-cell support allowing explicit message passing between neighbouring blocks.
24
27
25
-
-Parallel I/O module to support the handling of large data sets.
28
+
* Parallel I/O module to support the handling of large data sets.
26
29
27
-
-Interface with most popular external FFT libraries.
30
+
* Interface with most popular external FFT libraries.
28
31
29
32
**2DECOMP&FFT is designed to be:**
30
33
31
-
**Scalable** - The library and applications built upon it are known to scale well on thousands of CPU cores.
34
+
* **Scalable** - The library and applications built upon it are known
35
+
to scale well on thousands of CPU cores.
32
36
33
-
**Flexible** - Software framework to support building higher-level libraries and many types of applications.
37
+
* **Flexible** - Software framework to support building higher-level
38
+
libraries and many types of applications.
34
39
35
-
**User-friendly** - Black-box implementation and very clean application programming interface hiding most communication details from applications.
40
+
* **User-friendly** - Black-box implementation and very clean application programming
41
+
interface hiding most communication details from applications.
36
42
37
-
**Portable** - Code tested on major hardware architectures, with different compilers.
43
+
* **Portable** - Code tested on major hardware architectures, with different compilers.
38
44
39
-
**Publication**
40
-
===============
45
+
Publication
46
+
===========
41
47
42
48
N. Li and S. Laizet, "2DECOMP&FFT – A highly scalable 2D decomposition library and FFT interface", Cray User Group 2010 conference, Edinburgh, 2010
43
49
44
50
**a new paper is in preparation to introduce the new capabilities of the library**
45
51
46
52
**Acknowledgements**
47
53
====================
48
-
The library was initially designed thanks to several projects funded under the HECToR Distributed Computational Science and Engineering (CSE) Service operated by NAG Ltd. The new library has been designed thanks to the support of EPSRC via the `CCP Turbulence <https://www.ukturbulence.co.uk/ccp-turbulence.html>`_ (EP/T026170/1).
54
+
The library was initially designed thanks to several projects funded under the
55
+
HECToR Distributed Computational Science and Engineering (CSE) Service operated by NAG Ltd.
56
+
The new library has been designed thanks to the support of EPSRC via the
Copy file name to clipboardExpand all lines: docs/source/pages/api_domain.rst
+14-8Lines changed: 14 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,8 @@
2
2
2D Pencil Decomposition API
3
3
===========================
4
4
5
-
This page explains the key public interfaces of the 2D decomposition library. After reading this section, users should be able to easily build applications using this domain decomposition strategy. The library interface is designed to be very simple. One can refer to the sample applications for a quick start.
5
+
This page explains the key public interfaces of the 2D decomposition library. After reading this section, users should be able to easily build applications using this domain decomposition strategy.
6
+
The library interface is designed to be very simple. One can refer to the sample applications for a quick start.
6
7
7
8
The 2D Pencil Decomposition API is defined in three Fortran module which should be used by applications as:
8
9
@@ -15,7 +16,8 @@ The 2D Pencil Decomposition API is defined in three Fortran module which should
15
16
The ``use decomp_2d_constants`` defines all the parameters, ``use decomp_2d_mpi`` introduces all the MPI
16
17
related interfaces and ``use decomp_2d`` cointains the main decomposition and transposition APIs.
17
18
18
-
**Module decomp_2d_constant: Global Variables**
19
+
Module **decomp_2d_constant**: Global Variables
20
+
_______________________________________________
19
21
20
22
The ``decomp_2d_constants`` cointains global parameters that used to define the KIND of floating
21
23
point data (e.g. single or double precision).
@@ -46,7 +48,8 @@ The module contains additional parameters to control :
46
48
47
49
* define the release major and minor version
48
50
49
-
**Module decomp_2d_mpi: MPI communication**
51
+
Module **decomp_2d_mpi**: MPI communication
52
+
___________________________________________
50
53
51
54
The ``decomp_2d_mpi`` cointains global parameters that are used for MPI operation:
52
55
@@ -60,9 +63,10 @@ The ``decomp_2d_mpi`` cointains global parameters that are used for MPI operatio
60
63
61
64
* ``decomp_2d_warning`` - interface to display error message together with line number and function.
62
65
63
-
**Module decomp_2d: decompostion module**
66
+
Module **decomp_2d**: decompostion module
67
+
_________________________________________
64
68
65
-
The ``decomp_2d`` cointains the variables and the routines to perform the global transpostion operations.
69
+
The ``decomp_2d`` module cointains the variables and the routines to perform the global transpostion operations.
66
70
The important variables are
67
71
68
72
* ``nx_global, ny_global, nz_global`` - size of the global data.
@@ -129,7 +133,8 @@ The allocation for a x pencil decomposition would be equivalent to the statement
129
133
130
134
Allocated arrays can be simply released with an ``deallocate(var)`` statement.
131
135
132
-
**Basic 2D Decomposition API**
136
+
Basic 2D Decomposition API
137
+
^^^^^^^^^^^^^^^^^^^^^^^^^^
133
138
134
139
All the global variables described above, the defualt common type ``decomp`` and the MPI initialization is done
135
140
using the following call
@@ -193,7 +198,8 @@ Finally, before exit, applications should clean up the memory by:
193
198
194
199
call decomp_2d_finalize
195
200
196
-
**Advanced 2D Decomposition API**
201
+
Advanced 2D Decomposition API
202
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
197
203
198
204
While the basic decomposition API is very user-friendly, there may be situations in which
199
205
applications need to handle more complex data structures. There are quite a few examples:
@@ -211,7 +217,7 @@ applications need to handle more complex data structures. There are quite a few
211
217
212
218
In all these examples, there are multiple global sizes and applications need to be able to distributed
213
219
different data sets as 2D pencils.
214
-
``2decomp&FFT`` provides a powerful and flexible programming interface to handle this:
220
+
2DECOMP&FFT provides a powerful and flexible programming interface to handle this:
0 commit comments