Skip to content

Commit 26a10e3

Browse files
author
Daniel Ruprecht
committed
Initial commit.
0 parents  commit 26a10e3

File tree

113 files changed

+8153
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

113 files changed

+8153
-0
lines changed

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
*.out
2+
*.mod
3+
*.o
4+
*.dat
5+
*~
6+
*.*~
7+
*.pyc
8+
*.out.dSYM

Doxyfile

Lines changed: 1869 additions & 0 deletions
Large diffs are not rendered by default.

Makefile

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
include makefile.defs
2+
3+
all: compile
4+
5+
compile:
6+
cd $(CURDIR)/obj; make
7+
cd $(CURDIR)/test/obj; make
8+
cd $(CURDIR)/bin; make
9+
cd $(CURDIR)/test/bin; make
10+
cd $(CURDIR)/scaling/obj; make
11+
cd $(CURDIR)/scaling/bin; make
12+
13+
clean:
14+
cd $(CURDIR)/obj; make clean
15+
cd $(CURDIR)/test/obj; make clean
16+
cd $(CURDIR)/bin; make clean
17+
cd $(CURDIR)/test/bin; make clean
18+
cd $(CURDIR)/test/scripts; make clean
19+
cd $(CURDIR)/scaling/obj; make clean
20+
cd $(CURDIR)/scaling/bin; make clean
21+
rm -f *.dat
22+
rm -f *.pyc
23+
rm -f scripts/*.pyc
24+
rm -f *.out
25+
rm -f submit_*.sh
26+
27+
cleandata:
28+
rm -f *.dat
29+
rm -f *.out
30+
rm -f rename.sh
31+
rm -f *.in
32+
rm -f rur.*
33+
rm -f *.rur
34+
rm -f *.out
35+
rm -f submit_*.sh
36+
37+
.PHONY: test
38+
test:
39+
python run_tests.py

README.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
Parareal F90 {#mainpage}
2+
============
3+
4+
This is a lightweight standalone implementation of Parareal solving 3D Burger's equation using a forward Euler and a RK3SSP method as coarse and fine integrators. It contains three different implementations of Parareal, one based on MPI, one using OpenMP without pipelining and one using OpenMP with pipelining. All three versions compute the same result, the purpose of the code is to compare different implement strategies with respect to speedup, memory footprint and energy consumption.
5+
6+
Documentation
7+
-------------
8+
9+
If you have Doxygen installed, you can run *doxygen Doxyfile* in the base directory to generate HTML documentation of the code.
10+
11+
How do I get set up?
12+
--------------------
13+
14+
15+
To build, you will need the following files in the base directory:
16+
- preprocessor.f90
17+
- makefile.defs
18+
19+
In preprocessor.f90, a flag is defined that switch between linear advection and nonlinear advection (only the latter case is really Burger's equation, the other is a linear advection-diffusion problem).
20+
21+
In makefile.defs, the compiler is specified and compiler flags are set. The code needs no libraries, only a MPI compiler with -enable-threads and the correct flag to allow for OpenMP directives (e.g. -fopenmp for GCC). Just specify the compiler and the flags in makefile.defs and type make in the base directory.
22+
23+
To run, need file
24+
- system.defs
25+
26+
The entries in system.defs are used to automatically build scripts to run the code on different platforms (see e.g. build_runscript.py in /scripts). There are several examples provided. If you want to include your own system, you will need to modify the following python scripts
27+
- get_run_cmd.py
28+
- build_runscript.py
29+
- run_parareal.py
30+
- ...
31+
32+
Python runscripts
33+
-----------------
34+
There is a collection of python scripts that automatically run the code with different configurations to generate different sets of data. The script run_parareal_scaling.py for example runs Parareal with different numbers of processors plus the fine integrator as reference and generates all data necessary to plot speedup.
35+
36+
Test harness
37+
------------
38+
There is a set of tests, some written in Fortran and some in Python. Just type *python run_tests* in the base directory to start testing. If you add the flag *nof90* then only the high level python test scripts will be run.
39+
40+
41+
Who do I talk to?
42+
-----------------
43+
44+
This code is written by Daniel Ruprecht.

bin/Makefile

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
include ../makefile.defs
2+
include dependencies
3+
4+
all: objects run_timestepper.out run_parareal_mpi.out run_parareal_openmp.out run_parareal_openmp_pipe.out
5+
6+
# Update objects where necessary
7+
objects:
8+
cd $(CURDIR)/../obj; make
9+
10+
run_timestepper.out: ../obj/run_timestepper.o ../obj/timestepper.o
11+
$(F90) $(FCFLAGS) $(DEP) ../obj/run_timestepper.o -o run_timestepper.out
12+
13+
run_parareal_mpi.out: ../obj/run_parareal_mpi.o ../obj/parareal_mpi.o
14+
$(F90) $(FCFLAGS) $(DEP) ../obj/run_parareal_mpi.o -o run_parareal_mpi.out
15+
16+
run_parareal_openmp.out: ../obj/run_parareal_openmp.o ../obj/parareal_openmp.o
17+
$(F90) $(FCFLAGS) $(DEP) ../obj/run_parareal_openmp.o -o run_parareal_openmp.out
18+
19+
run_parareal_openmp_pipe.out: ../obj/run_parareal_openmp_pipe.o ../obj/parareal_openmp_pipe.o
20+
$(F90) $(FCFLAGS) $(DEP) ../obj/run_parareal_openmp_pipe.o -o run_parareal_openmp_pipe.out
21+
22+
clean:
23+
rm -f *.out

bin/dependencies

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
DEP=../obj/fluxes.o
2+
DEP+=../obj/params.o
3+
DEP+=../obj/upwind.o
4+
DEP+=../obj/weno5.o
5+
DEP+=../obj/advection.o
6+
DEP+=../obj/diffusion.o
7+
DEP+=../obj/boundaries.o
8+
DEP+=../obj/timestepper.o
9+
DEP+=../obj/parareal_mpi.o
10+
DEP+=../obj/parareal_openmp.o
11+
DEP+=../obj/parareal_openmp_pipe.o

collect_rur.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
./rename.sh
2+
./rename_timings.sh $1
3+
zip -m rur_dora_$1.zip $1_*.rur

contributors.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Daniel Ruprecht

data/energy/rur_dora.zip

62.7 KB
Binary file not shown.

data/memory/memory_dora.zip

15.7 KB
Binary file not shown.

0 commit comments

Comments
 (0)