|
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