Skip to content

Commit ae4584f

Browse files
authored
Merge pull request pnorbert#4 from pnorbert/brusselator
Brusselator
2 parents 5ae4a35 + ce138b0 commit ae4584f

Some content is hidden

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

89 files changed

+17212
-0
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Installation instructions at http://www.2decomp.org/install.html .
2+
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
2DECOMP_DIR=$(CURDIR)
2+
3+
.PHONY: lib examples clean install_dir
4+
5+
all: lib basic_test
6+
7+
lib:
8+
cd lib; $(MAKE) $@
9+
10+
examples:
11+
cd $@ ; $(MAKE) $@
12+
13+
basic_test: examples
14+
@echo "Basic Test target is examples"
15+
16+
clean:
17+
cd src; $(MAKE) $@
18+
cd lib; $(MAKE) $@
19+
cd include; rm -f *.mod
20+
cd examples; $(MAKE) $@
21+
22+
install_dir:
23+
mkdir -p $(DESTDIR)$(prefix)
24+
mkdir -p $(DESTDIR)$(prefix)/include
25+
mkdir -p $(DESTDIR)$(prefix)/lib
26+
mkdir -p $(DESTDIR)$(prefix)/doc
27+
28+
install: all install_dir
29+
cp $(2DECOMP_DIR)/include/*.mod $(DESTDIR)$(prefix)/include
30+
cp $(2DECOMP_DIR)/lib/lib*.a $(DESTDIR)$(prefix)/lib
31+
cp $(2DECOMP_DIR)/README $(DESTDIR)$(prefix)/README_2DECOMP
32+
cp $(2DECOMP_DIR)/doc/* $(DESTDIR)$(prefix)/doc
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
2DECOMP&FFT - Library for 2D pencil decomposition and highly scalable
2+
distributed 3D Fast Fourier Transforms
3+
4+
Version 1.5
5+
6+
Copyright (C) 2009-2012 Ning Li
7+
The Numerical Algorithms Group (NAG)
8+
9+
http://www.2decomp.org
10+
11+
2DECOMP&FFT is part of the Open Petascale Libraries.
12+
13+
http://www.openpetascale.org/2decomp
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3+
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
4+
<head>
5+
<title>Documentation: Open Petascale Libraries Project</title>
6+
</head>
7+
<body>
8+
<h1>The Open Petascale Libraries Project Documentation</h1>
9+
<h2>Sub-project: Library for 2D pencil decomposition and distributed Fast Fourier Transform
10+
</h2>
11+
12+
<h3>Introduction</h3>
13+
14+
The 2DECOMP&amp;FFT library is a software framework in 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 distributed-memory platforms. On top it provides a highly scalable and efficient interface to perform three-dimensional distributed FFTs. The library is optimised for supercomputers and scales well to hundreds of thousands of cores. It relies on MPI but provides a user-friendly programming interface that hides communication details from application developers.
15+
16+
<h3>Features</h3>
17+
18+
<p>Here is a list of 2DECOMP&amp;FFT's main features: </p>
19+
<ul>
20+
<li>General-purpose 2D pencil decomposition module to support building large-scale parallel applications on distributed memory systems.</li>
21+
<li>Highly scalable and efficient distributed Fast Fourier Transform module, supporting three dimensional FFTs (both complex-to-complex and real-to-complex/complex-to-real).</li>
22+
<li>Halo-cell support allowing explicit message passing between neighbouring blocks.</li>
23+
<li>Parallel I/O module to support the handling of large data sets.</li>
24+
25+
<li>Shared-memory optimisation on the communication code for multi-code systems.</li>
26+
<li>Interface with most popular external FFT libraries.</li>
27+
</ul>
28+
29+
<p>2DECOMP&amp;FFT is designed to be:</p>
30+
<ul>
31+
<li><b>Scalable</b> - The library and applications built upon it are known to scale to o(10^5) cores on major supercomputers.</li>
32+
33+
<li><b>Flexible</b> - Software framework to support building higher-level libraries and many types of applications.</li>
34+
<li><b>User-friendly</b> - Black-box implementation and very clean application programming interface hiding most communication details from applications.</li>
35+
<li><b>Portable</b> - Code tested on major hardware architectures, including Cray XT/XE, IBM Blue Gene and many others.</li>
36+
</ul>
37+
38+
<h3>Publication</h3>
39+
40+
<p>If you wish to cite this work, you are recommended to use the following paper:</p>
41+
<ul>
42+
<li>N. Li and S. Laizet, "2DECOMP&amp;FFT – A highly scalable 2D decomposition library and FFT interface", <i>Cray User Group 2010 conference</i>, Edinburgh, <b>2010</b>.
43+
44+
</ul>
45+
46+
<h3>Project Website</h3>
47+
48+
Please visit the official project website <a href="http://www.2decomp.org">http://www.2decomp.org</a> where more background information, source download and up-to-date documentations can be found. While the binary distribution as part of the Open Petascale Libraries can offer a quick start, for building serious applications, it is recommended to compile this library from source so that many more software features (such as hardware dependent optimisations, programming interface with multiple external libraries) can be explored.
49+
50+
<h3>Feedback</h3>
51+
52+
You are welcome to contact the developer Dr. Ning Li (ning.li at nag.co.uk) with
53+
bug reports, comments and suggestions.
54+
55+
</body>
56+
</html>
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
.PHONY: test2d fft_test_c2c fft_test_r2c timing halo_test io_test
2+
3+
# Just build the examples
4+
examples: test2d fft_test_c2c fft_test_r2c timing halo_test io_test
5+
@echo "Built the examples"
6+
7+
test2d:
8+
cd test2d; $(MAKE) $@
9+
fft_test_c2c:
10+
cd fft_test_c2c; $(MAKE) $@
11+
fft_test_r2c:
12+
cd fft_test_r2c; $(MAKE) $@
13+
timing:
14+
cd timing; $(MAKE) $@
15+
halo_test:
16+
cd halo_test; $(MAKE) $@
17+
io_test:
18+
cd io_test; $(MAKE) $@
19+
20+
# test all the examples (individual Makefiels should take care of updating)
21+
basic_test:
22+
cd test2d; $(MAKE) $@
23+
cd fft_test_c2c; $(MAKE) $@
24+
cd fft_test_r2c; $(MAKE) $@
25+
cd timing; $(MAKE) $@
26+
cd halo_test; $(MAKE) $@
27+
cd io_test; $(MAKE) $@
28+
29+
clean:
30+
cd test2d; $(MAKE) $@
31+
cd fft_test_c2c; $(MAKE) $@
32+
cd fft_test_r2c; $(MAKE) $@
33+
cd timing; $(MAKE) $@
34+
cd halo_test; $(MAKE) $@
35+
cd io_test; $(MAKE) $@
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
Examples
2+
========
3+
4+
test2d - to test the base 2D pencil decomposition module
5+
6+
fft_test_c2c - to test the complex-to-complex FFTs
7+
8+
fft_test_r2c - to test the real-to-complex/complex-to-real FFTs
9+
10+
timing - to benchmark the FFT library
11+
12+
halo_test - to test the halo-cell exchange code
13+
14+
io_test - to test various IO functions
15+
16+
p3dfft - to crosscheck the library against P3DFFT
17+
18+
non_blocking - to test the idea of overlap communication and computation
19+
20+
tecplot_view - to generate Tecplot visualisation of the decomposition
21+
22+
23+
Some examples may require external libraries to be built first. Refer to the
24+
README files for each example for details.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
include ../../src/Makefile.inc
2+
3+
INCLUDE = -I../../include
4+
LIBS = -L../../lib -l2decomp_fft $(LIBFFT)
5+
6+
OBJ = fft_test_c2c.o
7+
8+
fft_test_c2c: $(OBJ)
9+
$(F90) -o $@ $(OBJ) $(LIBS)
10+
11+
clean:
12+
rm -f *.o fft_test_c2c
13+
14+
%.o : %.f90
15+
$(F90) $(INCLUDE) $(OPTIONS) $(F90FLAGS) -c $<
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
fft_test_c2c
2+
------------
3+
4+
This example demonstrates the use of the FFT c2c interface. The test uses the
5+
input of NAG routine 'c06fxf' (also for c2c transform) and attempts to
6+
reproduce the output.
7+
8+
To run: use 4 MPI processes.
9+
10+
What to expect: the output should match what is in 'c06fxfe.r'.
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
C06FXF Example Program Results
2+
3+
Original data values
4+
5+
z(i,j,k) for i = 1
6+
7+
Real 1.000 0.999 0.987 0.936
8+
Imag 0.000 -0.040 -0.159 -0.352
9+
10+
Real 0.994 0.989 0.963 0.891
11+
Imag -0.111 -0.151 -0.268 -0.454
12+
13+
Real 0.903 0.885 0.823 0.694
14+
Imag -0.430 -0.466 -0.568 -0.720
15+
16+
z(i,j,k) for i = 2
17+
18+
Real 0.500 0.499 0.487 0.436
19+
Imag 0.500 0.040 0.159 0.352
20+
21+
Real 0.494 0.489 0.463 0.391
22+
Imag 0.111 0.151 0.268 0.454
23+
24+
Real 0.403 0.385 0.323 0.194
25+
Imag 0.430 0.466 0.568 0.720
26+
27+
Components of discrete Fourier transform
28+
29+
z(i,j,k) for i = 1
30+
31+
Real 3.292 0.051 0.113 0.051
32+
Imag 0.102 -0.042 0.102 0.246
33+
34+
Real 0.143 0.016 -0.024 -0.050
35+
Imag -0.086 0.153 0.127 0.086
36+
37+
Real 0.143 -0.050 -0.024 0.016
38+
Imag 0.290 0.118 0.077 0.051
39+
40+
z(i,j,k) for i = 2
41+
42+
Real 1.225 0.355 0.000 -0.355
43+
Imag -1.620 0.083 0.162 0.083
44+
45+
Real 0.424 0.020 0.013 -0.007
46+
Imag 0.320 -0.115 -0.091 -0.080
47+
48+
Real -0.424 0.007 -0.013 -0.020
49+
Imag 0.320 -0.080 -0.091 -0.115
50+
51+
Original sequence as restored by inverse transform
52+
53+
z(i,j,k) for i = 1
54+
55+
Real 1.000 0.999 0.987 0.936
56+
Imag 0.000 -0.040 -0.159 -0.352
57+
58+
Real 0.994 0.989 0.963 0.891
59+
Imag -0.111 -0.151 -0.268 -0.454
60+
61+
Real 0.903 0.885 0.823 0.694
62+
Imag -0.430 -0.466 -0.568 -0.720
63+
64+
z(i,j,k) for i = 2
65+
66+
Real 0.500 0.499 0.487 0.436
67+
Imag 0.500 0.040 0.159 0.352
68+
69+
Real 0.494 0.489 0.463 0.391
70+
Imag 0.111 0.151 0.268 0.454
71+
72+
Real 0.403 0.385 0.323 0.194
73+
Imag 0.430 0.466 0.568 0.720

0 commit comments

Comments
 (0)