|
1 | | -This directory contains three one-dimensional partial differential equation |
2 | | -(PDE) solvers that exercise the parallel programming features of Fortran |
3 | | -2008: coarrays and "do concurrent". The solvers are in the following three |
4 | | -directories: |
5 | | - |
6 | | - (1) coarrayHeatSimplified |
7 | | - (2) coarrayBurgers |
8 | | - (3) coarrayBurgersStaticTau |
9 | | - |
10 | | -The first second and third directories above depend on files in the include-files |
11 | | -and library directories. |
12 | | - |
13 | | -The heat equation solver (1) is the most stringent in terms of correctness |
14 | | -because it checks for the exact solution at every point across the problem |
15 | | -domain. I suggest starting with the heat equation solver to check compiler |
16 | | -correctness before moving to the other solvers. |
17 | | - |
18 | | -The raw Burgers equation solver (2) is slightly more complicated than the |
19 | | -heat equation solver in that the Burgers solver adds one additional term |
20 | | -(a nonlinear term), the calculation of which imposes an additional |
21 | | -synchronization requirement. However, the correctness test in the Burgers |
22 | | -equation solver is weak: it checks only one value in the problem domain and |
23 | | -that point is a point that should remain zero for all time. |
24 | | - |
25 | | -The instrumented Burgers solver (3) is best for performance studies. It has |
26 | | -been instrumented for performance analysis witih the Tuning and Analysis |
27 | | -Utilities (TAU), which is open-source software available at |
28 | | -http://tau.uoregon.edu. Because of a memory leak in the Intel compiler, |
29 | | -the instrumented solver uses static rather than dynamic memory. For this |
30 | | -reason, the code needs to be recompiled for each desired problem size. See |
31 | | -coarrayBurgersStaticTau/math_constants.F90 for an important comment regarding |
32 | | -matching the problem size with the number of images. |
33 | | - |
34 | | -The instrumented Burgers solver has been demonstrated to execute with 99% |
35 | | -parallel efficiency on over 13,000 cores and 87% parallel efficiency on 16,384 |
| 1 | +[This document is formatted with GitHub-Flavored Markdown. ]:# |
| 2 | +[For better viewing, including hyperlinks, read it online at ]:# |
| 3 | +[https://github.com/sourceryinstitute/opencoarrays/edit/master/src/tests/integration/pde_solvers/README.txt]:# |
| 4 | + |
| 5 | +Partial Differential Equation (PDE) Solvers |
| 6 | +=========================================== |
| 7 | + |
| 8 | +This directory contains three PDE solvers listed here in order from simplest to most complex: |
| 9 | + |
| 10 | +* A one-dimensional (1D) finite-difference, unsteady [heat equation solver], |
| 11 | +* A 1D finite-difference, unsteady, nonlinear [Burgers equation solver], and |
| 12 | +* A three-dimensional (3D), unsteady, spectral [Navier-Stokes equation solver]. |
| 13 | + |
| 14 | +The first two solvers contain correctness checks that result in the printing of the |
| 15 | +message "Test passed" before terminating a correct execution. For more details on the |
| 16 | +heat equation solver please view the [Sourcery Institute] [tutorial videos] online. |
| 17 | + |
| 18 | +For more details on the Burgers solver, please see Chapter 12 of the textbook |
| 19 | +[Scientific Sofware Design] or the open-access journal article |
| 20 | +"[High Performance Design Patterns for Modern Fortran]." The [coarrayBurgers] |
| 21 | +subdirectory includes a [run.sh] launch script that works inside the open-source |
| 22 | +Linux virtual machine available in the Sourcery Institute [store]. |
| 23 | + |
| 24 | +The launch script instruments the Burgers solver for performance analysis using the |
| 25 | +open-source Tuning and Analysis Utilities ([TAU]) package. The instrumented Burgers |
| 26 | +solver has been demonstrated to execute with 87% parallel efficiency on 16,384 |
36 | 27 | cores in weak scaling when compiled with the Cray Compiler Environment. For |
37 | 28 | new scalabiliby studies, it is important to run problems of sufficient size. |
38 | | -See one of the following two publications for additional information: |
39 | | - |
40 | | -[1] Haveraaen, M., K. Morris, D. W. I. Rouson, H. Radhakrishnan, and C. Carson |
41 | | -(2014) “High- performance design patterns for modern Fortran,” Scientific |
42 | | -Programming, in review. |
43 | 29 |
|
44 | | -[2] Haveraaen, M., K. Morris, and D. W. I. Rouson (2013) “High-performance design |
45 | | -patterns for modern Fortran,” First International Workshop on Software |
46 | | -Engineering for High Performance Computing in Computational Science and |
47 | | -Engineering, Denver, Colorado, USA. November 22. |
| 30 | +The Navier-Stokes solver uses Fourier-spectral methods and Runge-Kutta time advancement |
| 31 | +to simulate the evolution of statistically homogeneous turbulent flow in a 3D box with |
| 32 | +periodic boundary conditions. For performance and complexity comparisons, the |
| 33 | +[navier-stokes] subdirectory contains both a Message Passing Interface (MPI) version |
| 34 | +and a coarray Fortran (CAF) version of the same solution algorithm. |
| 35 | + |
| 36 | +[heat equation solver]: ./coarrayHeatSimplified |
| 37 | +[Burgers equation solver]: ./coarrayBurgers |
| 38 | +[Navier-Stokes equation solver]: ./navier-stokes |
| 39 | +[Sourcery Institute]: http://www.sourceryinstitute.org |
| 40 | +[tutorial videos]: http://www.sourceryinstitute.org/videos |
| 41 | +[Scientific Sofwtware Design]: http://www.cambridge.org/rouson |
| 42 | +[High Performance Design Patterns for Modern Fortran]: http://www.hindawi.com/journals/sp/2015/942059/ |
| 43 | +[store]: http://www.sourceryinstitute.org/store |
| 44 | +[coarrayBurgers]: ./coarrayBurgers |
| 45 | +[run.sh]: ./coarrayBurgers/run.sh |
| 46 | +[TAU]: http://tau.uoregon.edu |
| 47 | +[navier-stokes]: ./navier-stokes |
0 commit comments