Skip to content

Commit 0dbb82f

Browse files
committed
Merge branch 'release/v0.2.0'
* release/v0.2.0: polish up release notes examples: scalar: a few little cleanups removed const keywords in scalar_sweeper; they should be there, no idea why it worked even with them more documentation for scalar example; added mathjax directives at multiple points improved docu for scalar example; added ** at several points extended documentation for scalar example docu: extending/fixing/cleaning docu for upcoming release some enhancements of the coverage generation script fix for aggegrated coverage results cmake and tests: enable and provide test coverage analysis cmake: add option for GCC profiling sweeper: incorporate @memmett's remarks exceptions must be thrown to be effective some code formatting tweaks docu: some docu on IMEXSweeper::predict encap: some templatization tweaks tests: further tweaking MPI advec test Travis: explicitly setting occasions of Travis' notification emails QUAD: fixed accuracy of QmatTest changelog: Add Dr. Speck/Bacon/Pancetta to contributors. high precision test for scalar now running: tolerance set to 5e-12 removed old test_scalar; now called test_scalar_conv renamed test_scalar into test_scalar_conv; added new file that will provide the high precision test suggested by michael added tests for clenshaw curtis and equidistant nodes but they are NOT working; not sure why tests: mpi-fix for GTest tests: using another matcher tests: on MPI run do not execute GTest::run() on all ranks tests: stupid namespaces... tests: advec: using different matcher travis: enable APT caching and make tests more verbose travis: different repos for different versions travis: even more stupid... stupidity... travis: switch to other Boost PPA and test 1.53 and 1.55 merged torbjoerns improved test_scalar and added tests for radau nodes: now, lobatto, legendre and radau are tested tests: scalar: Yo Dawg, I herd you like better tests scalar_test is now running and tests legendre and lobatto nodes added some comments to test_scalar test_scalar now also checks legendre nodes, but the test with DoubleNear fail, because we encounter better-than-expected convergence. Need a DoubleMore, but I did not get a corresponding matcher to run properly test_scalar: computation of convergence rate moved from TEST_P script into ConvergenceTest class ; started to add some lines for legendre node testing (not yet complete) run_scalar_sdc now gets and pfasst::QuadratureType argument to specify the type of used nodes TESTS: added quadrature test comparing Qmat and nodes QUAD: uniform -> Uniform QUAD: enum class for quadrature types as well.. QUAD: changed type to enum class, containing S and Q so far Add .dir-locals.el for emacs users. tests: examples: scalar: rewamped to be parameterized scalar: some further cleanup Style. doc: Tweak README.md, begin adding notes for v0.2.0 to CHANGELOG.md. quadrature: Initialize matrix with zeros. imex: Support virtual nodes (0 and 1). test_scalar now used DoubleNear and checks directly within loop computing convergence rates in test_scalar, should now use size_t instead of int removed first version of run_scalar_sdc function from scalar_sdc.cpp; instead, the main routine sets default values and calls the run function with these as parameter added a test for the scalar example that verifies convergence orders for up to six lobatto nodes updated scalar example to fit into testing enviroment; added test routine for scalar example, but so far without any tests examples: scalar: some code cleanup cmake: little tweaks on example run targets quadrature: Add `pfasst::augment_nodes` and handle `is_proper` flags appropriately. scalar: Update to new naming convention. cmake: Restore and flesh out comments. scalar: Put 3rdpart_INCLUDES back. incorporating @memmett's suggestions scalar: Don't need FFTW. a couple of code formatting tweaks pfasst: Add `tag` helper and state V-cycle on finest level. interp: Flense. interfaces: Split out `restrict_initial` from `restrict`. cmake: Cut some comments. test: Loosen tolerances. tests: Update expected solutions and tighten tolerances. mpi_pfasst: Set nsweeps on coarse level to 2. pfasst: Fix predictor. mlsdc: Add `set_nsweeps`. poly_interp: Split `interpolate` and `interpolate_initial` routines. interfaces: Add `spread` interface and split interpolation. encap_sweeper: Add `spread` and `as_encap_sweeper`. tests: Add test_mpi_advection_diffusion.cpp. renaming a few variables Untabify. doc: Fix explanation of `impl_solv`. travis: Tidy and add full path for MPI example. cmake: Change how we're handling MPI. examples: some docu and variable renaming for the AdVecSweeper further documentation for interfaces sweeper: cleanup of IMEXSweeper add UNUSED(expr) makro to denote unused parameters sweeper: rename f_solve to impl_solve adding 'override' identifier where valid sweeper: better names for function evaluations code style: whitespaces travis: make travis use Ubuntu's libfftw3 cmake: try find system-wide FFTW3 before self-compiling it travis: Echo more compiler info. cmake: some more output on compiler selection 3rdparty: using tar file instead of SVN checkout for GMock travis: Punt. travis: Another shot... travis: Use mpich2. travis: Fix 'if' statement. reordering tests for examples into subfolder different parameters in scalar example Untabify. cmake: Fix typo. pfasst/mpi: Flesh out broadcasting. style: Applied astyle throughout. encap: Provide default implementation of mat_apply. docs: Add troubleshooting.md. cmake: add make targets to run compiled examples travis: another try on enabling MPI on Travis cmake: introducing automatic MPI selection controller: Go back to `int` vs `size_t` for level iterator. docs: Add troubleshooting.md. travis: Use mpic++. travis: Take a stab at adding MPICH2 support. advection-diffusion: Add MPI-PFASST example (mpi_pfasst.cpp). style: Untabify. controller: Revert back to `size_t` instead of `int`. pfasst: Update loops to use new controller state routines. style: Tidy and silence some compiler warnings. removed scalar example; to be put in through merge with scalar branch scalar example pfasst: Get PFASST working. Needs to be flensed. mpi_vector: Call MPI_Wait when doing a non-blocking send. interp: Add interp_initial_only flag. added a sweeper for the scalar test equation mpi/pfasst: Flesh out MPI send/recv. send/recv: Add `tag` and `blocking` flags to send/recv. poly_interp: Add `restrict_initial_only` flag to `restrict`. interfaces: Add `initial_only` flag to `save`. controller: Use `int` instead of `size_t` in `LevelIter`. DEBUG: echo mag of q in f1eval. mlsdc: Fix IMEX sweeper to get MLSDC working again. pfasst: Add pfasst.hpp. mpi: Add mpi_communicator.hpp and mpi_vector.hpp. interfaces: Pass ICommunicator to send/recv.
2 parents f31a44b + d5d735c commit 0dbb82f

Some content is hidden

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

49 files changed

+2943
-554
lines changed

.dir-locals.el

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
; Adapted from PETSc
2+
3+
((nil . ((indent-tabs-mode . nil)
4+
(show-trailing-whitespace . t)))
5+
6+
(c++-mode . ((c-tab-always-indent . t)
7+
(fill-column . 100)
8+
(c-basic-offset . 2)
9+
(c-comment-only-line-offset . 0)
10+
(c-hanging-braces-alist . ((substatement-open after)
11+
(brace-list-open after)
12+
(brace-entry-open)
13+
(defun-open after)
14+
(class-open after)
15+
(inline-open after)
16+
(block-open after)
17+
(block-close . c-snug-do-while)
18+
(statement-case-open after)
19+
(substatement after)))
20+
(c-hanging-colons-alist . ((member-init-intro before)
21+
(inher-intro)
22+
(case-label after)
23+
(label after)
24+
(access-label after)))
25+
(c-cleanup-list . (scope-operator
26+
brace-else-brace
27+
brace-elseif-brace
28+
brace-catch-brace
29+
empty-defun-braces
30+
list-close-comma
31+
defun-close-semi))
32+
(c-offsets-alist . ((inexpr-class . +)
33+
(inexpr-statement . +)
34+
(lambda-intro-cont . +)
35+
(inlambda . c-lineup-inexpr-block)
36+
(template-args-cont c-lineup-template-args +)
37+
(incomposition . +)
38+
(inmodule . +)
39+
(innamespace . +)
40+
(inextern-lang . +)
41+
(composition-close . 0)
42+
(module-close . 0)
43+
(namespace-close . 0)
44+
(extern-lang-close . 0)
45+
(composition-open . 0)
46+
(module-open . 0)
47+
(namespace-open . 0)
48+
(extern-lang-open . 0)
49+
(friend . 0)
50+
(cpp-define-intro c-lineup-cpp-define +)
51+
(cpp-macro-cont . +)
52+
(cpp-macro . [0])
53+
(inclass . ++)
54+
(stream-op . c-lineup-streamop)
55+
(arglist-cont-nonempty c-lineup-gcc-asm-reg c-lineup-arglist)
56+
(arglist-cont c-lineup-gcc-asm-reg 0)
57+
(arglist-intro . +)
58+
(catch-clause . 0)
59+
(else-clause . 0)
60+
(do-while-closure . 0)
61+
(label . 2)
62+
(access-label . -)
63+
(substatement-label . 2)
64+
(substatement . +)
65+
(statement-case-open . 0)
66+
(statement-case-intro . +)
67+
(statement-block-intro . +)
68+
(statement-cont . +)
69+
(statement . 0)
70+
(brace-entry-open . 0)
71+
(brace-list-entry . 0)
72+
(brace-list-intro . +)
73+
(brace-list-close . 0)
74+
(brace-list-open . 0)
75+
(block-close . 0)
76+
(inher-cont . c-lineup-multi-inher)
77+
(inher-intro . +)
78+
(member-init-cont . c-lineup-multi-inher)
79+
(member-init-intro . +)
80+
(annotation-var-cont . +)
81+
(annotation-top-cont . 0)
82+
(topmost-intro-cont . c-lineup-topmost-intro-cont)
83+
(topmost-intro . 0)
84+
(knr-argdecl . 0)
85+
(func-decl-cont . +)
86+
(inline-close . 0)
87+
(inline-open . 0)
88+
(class-close . 0)
89+
(class-open . 0)
90+
(defun-block-intro . +)
91+
(defun-close . 0)
92+
(defun-open . 0)
93+
(string . c-lineup-dont-change)
94+
(arglist-close . c-lineup-arglist)
95+
(substatement-open . 0)
96+
(case-label . 0)
97+
(block-open . 0)
98+
(c . 1)
99+
(comment-intro . 0)
100+
(knr-argdecl-intro . -)))
101+
)))

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
/doc/build
33
/build*
44
/dist
5+
/coverage
6+
*.info
57

68
# Created by http://www.gitignore.io
79

.travis.yml

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,46 @@
11
language:
22
- cpp
33

4-
compiler:
5-
- gcc
6-
- clang
4+
cache: apt
75

6+
notifications:
7+
email:
8+
on_success: change # default: change
9+
on_failure: always # default: always
10+
11+
# why does Travis not allow for multi-dimensional build matrices?!?
12+
# -> https://github.com/travis-ci/travis-ci/issues/1519
813
env:
9-
- CMAKE_BUILD_TYPE="Release"
10-
- CMAKE_BUILD_TYPE="Debug"
14+
matrix:
15+
- CMAKE_BUILD_TYPE="Release" WITH_MPI=OFF CXX=clang++ BOOST_VERSION=1.53
16+
- CMAKE_BUILD_TYPE="Release" WITH_MPI=OFF CXX=g++ BOOST_VERSION=1.53
17+
- CMAKE_BUILD_TYPE="Release" WITH_MPI=ON CXX=g++ BOOST_VERSION=1.53
18+
- CMAKE_BUILD_TYPE="Debug" WITH_MPI=OFF CXX=clang++ BOOST_VERSION=1.53
19+
- CMAKE_BUILD_TYPE="Debug" WITH_MPI=OFF CXX=g++ BOOST_VERSION=1.53
20+
- CMAKE_BUILD_TYPE="Debug" WITH_MPI=ON CXX=g++ BOOST_VERSION=1.53
21+
- CMAKE_BUILD_TYPE="Release" WITH_MPI=OFF CXX=clang++ BOOST_VERSION=1.55
22+
- CMAKE_BUILD_TYPE="Release" WITH_MPI=OFF CXX=g++ BOOST_VERSION=1.55
23+
- CMAKE_BUILD_TYPE="Release" WITH_MPI=ON CXX=g++ BOOST_VERSION=1.55
24+
- CMAKE_BUILD_TYPE="Debug" WITH_MPI=OFF CXX=clang++ BOOST_VERSION=1.55
25+
- CMAKE_BUILD_TYPE="Debug" WITH_MPI=OFF CXX=g++ BOOST_VERSION=1.55
26+
- CMAKE_BUILD_TYPE="Debug" WITH_MPI=ON CXX=g++ BOOST_VERSION=1.55
1127

1228
before_install:
13-
- sudo add-apt-repository ppa:apokluda/boost1.53 --yes
14-
- sudo add-apt-repository ppa:ubuntu-toolchain-r/test --yes # libstdc++-4.8
15-
- if [ "${CXX}" == "clang++" ]; then sudo add-apt-repository --yes ppa:h-rayflood/llvm; fi # clang++-3.2
29+
# boost packages
30+
- if [ "${BOOST_VERSION}" == "1.53" ]; then sudo add-apt-repository ppa:apokluda/boost1.53 --yes; fi
31+
- if [ "${BOOST_VERSION}" == "1.55" ]; then sudo add-apt-repository ppa:boost-latest/ppa --yes; fi
32+
# libstdc++-4.8
33+
- sudo add-apt-repository ppa:ubuntu-toolchain-r/test --yes
34+
# clang++-3.2
35+
- if [ "${CXX}" == "clang++" ]; then sudo add-apt-repository --yes ppa:h-rayflood/llvm; fi
1636
- sudo apt-get update
1737

1838
install:
39+
# note: clang needs g++-4.8 it for libstdc++ update
1940
- if [ "${CXX}" == "clang++" ]; then sudo apt-get -qq install clang-3.2; fi
20-
- sudo apt-get install g++-4.8 # clang need it for libstdc++ update
21-
- sudo apt-get install libboost1.53-all-dev
41+
- if [ "${WITH_MPI}" == "ON" ]; then sudo apt-get -qq install mpich2 libmpich2-dev; fi
42+
- sudo apt-get install g++-4.8
43+
- sudo apt-get install "libboost${BOOST_VERSION}-all-dev" libfftw3-3 libfftw3-dev
2244

2345
before_script:
2446
# update compilers
@@ -28,7 +50,7 @@ before_script:
2850
script:
2951
- mkdir build
3052
- cd build
31-
- cmake -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -Dpfasst_DISABLE_LIBCXX=ON -Dpfasst_BUILD_TESTS=ON -Dpfasst_BUILD_EXAMPLES=ON ..
53+
- cmake -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -Dpfasst_WITH_MPI=${WITH_MPI} -Dpfasst_DISABLE_LIBCXX=ON -Dpfasst_BUILD_TESTS=ON -Dpfasst_BUILD_EXAMPLES=ON ..
3254
- make
33-
- make test
34-
55+
- make test ARGS="-V"
56+
- make run_example_all

3rdparty/CMakeLists.txt

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -21,31 +21,40 @@ list(APPEND 3rdparty_INCLUDES ${Boost_INCLUDE_DIRS})
2121

2222

2323
if(pfasst_BUILD_EXAMPLES)
24-
message(STATUS "FFTW3")
25-
set(fftw3_SOURCE_DIR "${pfasst_BINARY_DIR}/3rdparty/src/fftw3")
26-
set(fftw3_INSTALL_DIR "${pfasst_BINARY_DIR}/3rdparty/src/fftw3-install")
24+
find_package(FFTW)
2725

28-
ExternalProject_Add(
29-
fftw3
30-
LIST_SEPARATOR " "
31-
URL http://fftw.org/fftw-3.3.4.tar.gz
32-
URL_MD5 2edab8c06b24feeb3b82bbb3ebf3e7b3
33-
TIMEOUT 30
34-
UPDATE_COMMAND ""
35-
PATCH_COMMAND ""
36-
BUILD_IN_SOURCE ON
37-
CONFIGURE_COMMAND ${fftw3_SOURCE_DIR}/configure CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} CXXFLAGS=${CMAKE_CXX_FLAGS} --prefix=${fftw3_INSTALL_DIR} --libdir=${fftw3_INSTALL_DIR}/lib
38-
BUILD_COMMAND make
39-
TEST_COMMAND ""
40-
INSTALL_DIR ${fftw3_SOURCE_DIR}-install
41-
INSTALL_COMMAND make install
42-
LOG_DOWNLOAD ON
43-
LOG_CONFIGURE ON
44-
LOG_BUILD ON
45-
)
46-
# Specify include dir
47-
set(fftw3_INCLUDES ${fftw3_INSTALL_DIR}/include PARENT_SCOPE)
48-
set(fftw3_LIBS ${fftw3_INSTALL_DIR}/lib/libfftw3.a PARENT_SCOPE)
26+
if(NOT FFTW_FOUND)
27+
message(STATUS "FFTW3 not found on your system.")
28+
message(STATUS "Going to download and compile it automatically.")
29+
set(fftw3_SOURCE_DIR "${pfasst_BINARY_DIR}/3rdparty/src/fftw3")
30+
set(fftw3_INSTALL_DIR "${pfasst_BINARY_DIR}/3rdparty/src/fftw3-install")
31+
32+
ExternalProject_Add(
33+
fftw3
34+
LIST_SEPARATOR " "
35+
URL http://fftw.org/fftw-3.3.4.tar.gz
36+
URL_MD5 2edab8c06b24feeb3b82bbb3ebf3e7b3
37+
TIMEOUT 30
38+
UPDATE_COMMAND ""
39+
PATCH_COMMAND ""
40+
BUILD_IN_SOURCE ON
41+
CONFIGURE_COMMAND ${fftw3_SOURCE_DIR}/configure CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} CXXFLAGS=${CMAKE_CXX_FLAGS} --prefix=${fftw3_INSTALL_DIR} --libdir=${fftw3_INSTALL_DIR}/lib
42+
BUILD_COMMAND make
43+
TEST_COMMAND ""
44+
INSTALL_DIR ${fftw3_SOURCE_DIR}-install
45+
INSTALL_COMMAND make install
46+
LOG_DOWNLOAD ON
47+
LOG_CONFIGURE ON
48+
LOG_BUILD ON
49+
)
50+
# Specify include dir
51+
set(FFTW_INCLUDE_PATH ${fftw3_INSTALL_DIR}/include PARENT_SCOPE)
52+
set(FFTW_LIBRARIES ${fftw3_INSTALL_DIR}/lib/libfftw3.a PARENT_SCOPE)
53+
else()
54+
set(FFTW_INCLUDE_PATH ${FFTW_INCLUDE_PATH} PARENT_SCOPE)
55+
set(FFTW_LIBRARIES ${FFTW_LIBRARIES} PARENT_SCOPE)
56+
endif()
57+
set(FFTW_FOUND ${FFTW_FOUND} PARENT_SCOPE)
4958

5059
if(pfasst_BUILD_TESTS)
5160
message(STATUS "--------------------------------------------------------------------------------")
@@ -58,10 +67,9 @@ if(pfasst_BUILD_TESTS)
5867
# Add gmock
5968
ExternalProject_Add(
6069
googlemock
61-
SVN_REPOSITORY http://googlemock.googlecode.com/svn/trunk/
62-
SVN_REVISION -r 449 # release 1.7.0
63-
TIMEOUT 10
64-
# Disable SVN update
70+
URL http://googlemock.googlecode.com/files/gmock-1.7.0.zip
71+
URL_MD5 073b984d8798ea1594f5e44d85b20d66
72+
TIMEOUT 30
6573
UPDATE_COMMAND ""
6674
PATCH_COMMAND ""
6775
CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release

CHANGELOG.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,62 @@
11
# Changelog {#page_changelog}
22

3+
## v0.2.0 -- MPI PFASST (2014/08/XX)
4+
5+
DOI: [10.5281/zenodo.11047](http://dx.doi.org/10.5281/zenodo.11047)
6+
7+
### Notable Features
8+
9+
* Addition of MPI based PFASST.
10+
11+
### Details
12+
13+
* Addition of MPI based PFASST algorithm using the standard predictor stage in a block mode with
14+
fixed iterations.
15+
([#46][], [#57][], [#59][])
16+
17+
* Addition of a simple scalar example and appropriate tests.
18+
([#61][], [#63][], [#76][], [#81][])
19+
20+
* Further tests on proper calculation of quadrature nodes and weights
21+
([#74][])
22+
23+
* Better handling of 3rd-party dependencies
24+
([#53][], [#55][])
25+
26+
* Various tidying
27+
([#56][], [#60][], [#77][])
28+
29+
* Basic Profiling support and test coverage report
30+
([#78][])
31+
32+
[#46]: https://github.com/Parallel-in-Time/PFASST/pull/46
33+
[#57]: https://github.com/Parallel-in-Time/PFASST/pull/56
34+
[#59]: https://github.com/Parallel-in-Time/PFASST/pull/59
35+
[#53]: https://github.com/Parallel-in-Time/PFASST/pull/53
36+
[#55]: https://github.com/Parallel-in-Time/PFASST/pull/55
37+
[#56]: https://github.com/Parallel-in-Time/PFASST/pull/56
38+
[#60]: https://github.com/Parallel-in-Time/PFASST/pull/60
39+
[#61]: https://github.com/Parallel-in-Time/PFASST/pull/61
40+
[#63]: https://github.com/Parallel-in-Time/PFASST/pull/63
41+
[#74]: https://github.com/Parallel-in-Time/PFASST/pull/74
42+
[#76]: https://github.com/Parallel-in-Time/PFASST/pull/76
43+
[#77]: https://github.com/Parallel-in-Time/PFASST/pull/77
44+
[#78]: https://github.com/Parallel-in-Time/PFASST/pull/78
45+
[#78]: https://github.com/Parallel-in-Time/PFASST/pull/81
46+
47+
### Contributors
48+
49+
* Matthew Emmett, Lawrence Berkeley National Laboratory ([memmett][])
50+
* Torbjörn Klatt, Jülich Supercomputing Centre ([torbjoernk][])
51+
* Daniel Ruprecht, Institute of Computational Science, University of Lugano ([danielru][])
52+
* Robert Speck, Jülich Supercomputing Centre ([pancetta][])
53+
54+
[memmett]: https://github.com/memmett
55+
[torbjoernk]: https://github.com/torbjoernk
56+
[danielru]: https://github.com/danielru
57+
[pancetta]: https://github.com/pancetta
58+
59+
360
## v0.1.0 -- First Release (2014/07/25)
461

562
DOI: [10.5281/zenodo.11047](http://dx.doi.org/10.5281/zenodo.11047)

0 commit comments

Comments
 (0)