Skip to content

Commit 8c7b02d

Browse files
author
f-schmitt-zih
committed
Merge pull request #228 from ComputationalRadiationPhysics/dev
Release: 1.3.1
2 parents 985e30a + d6fdcaf commit 8c7b02d

93 files changed

Lines changed: 2161 additions & 1923 deletions

File tree

Some content is hidden

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

.travis.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ before_script:
4444
- ls -hal /usr/include
4545
# PPA providing hdf5 >= 1.8.6 and OpenMPI >= 1.5.1
4646
# -> remove legacy hdf5 and mpi packages/deps from travis
47-
- sudo apt-get remove -qq libhdf5* libopenmpi* openmpi-bin
47+
- sudo apt-get remove -qq libhdf5*
48+
- sudo apt-get remove -qq libopenmpi* openmpi-bin || { echo "OpenMPI not installed"; }
4849
- echo "yes" | sudo add-apt-repository ppa:james-page/openmpi
4950
- echo "yes" | sudo add-apt-repository ppa:axel-huebl/libsplash
5051
- sudo apt-get update -qq

CHANGELOG.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,31 @@
11
Change Log for libSplash
22
================================================================
33

4+
Release 1.3.1
5+
-------------
6+
**Date:** 2016-04-12
7+
8+
This release contains bug fixes and serveral internal code
9+
clean-ups.
10+
11+
**Bug Fixes**
12+
13+
- `readMeta` now returns the correct `CollectionType` if more then
14+
one entry was used per iteration, detection for `ColTypeBool` was
15+
broken #224
16+
- exception parameters are now catched consequently by const
17+
reference #213
18+
19+
20+
**Misc**
21+
22+
- remove tabs and EOL white spaces #216 #217 #218
23+
- remove `_` prefixes from a few include guards #214
24+
- add example for the `ParallelDataCollector` class #14
25+
- remove beta notice for parallel HDF5 support #209
26+
- update travis-ci script #212
27+
28+
429
Release 1.3.0
530
-------------
631
**Date:** 2015-11-12

CMakeLists.txt

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
#
22
# Copyright 2013-2015 Felix Schmitt, Axel Huebl
33
#
4-
# This file is part of libSplash.
5-
#
6-
# libSplash is free software: you can redistribute it and/or modify
7-
# it under the terms of of either the GNU General Public License or
8-
# the GNU Lesser General Public License as published by
9-
# the Free Software Foundation, either version 3 of the License, or
4+
# This file is part of libSplash.
5+
#
6+
# libSplash is free software: you can redistribute it and/or modify
7+
# it under the terms of of either the GNU General Public License or
8+
# the GNU Lesser General Public License as published by
9+
# the Free Software Foundation, either version 3 of the License, or
1010
# (at your option) any later version.
1111
#
12-
# libSplash is distributed in the hope that it will be useful,
13-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
14-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15-
# GNU General Public License and the GNU Lesser General Public License
16-
# for more details.
17-
#
18-
# You should have received a copy of the GNU General Public License
19-
# and the GNU Lesser General Public License along with libSplash.
12+
# libSplash is distributed in the hope that it will be useful,
13+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+
# GNU General Public License and the GNU Lesser General Public License
16+
# for more details.
17+
#
18+
# You should have received a copy of the GNU General Public License
19+
# and the GNU Lesser General Public License along with libSplash.
2020
# If not, see <http://www.gnu.org/licenses/>.
2121

2222
cmake_minimum_required(VERSION 2.8.5)
@@ -48,7 +48,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/ ${CMAKE_MODULE_PATH})
4848
IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
4949
SET(CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}" CACHE PATH "install prefix"
5050
FORCE)
51-
ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
51+
ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
5252

5353
#-------------------------------------------------------------------------------
5454

@@ -113,7 +113,7 @@ SET(SPLASH_LIBS z ${HDF5_LIBRARIES})
113113
# serial or parallel version of libSplash
114114
SET(SPLASH_CLASSES logging DCAttribute DCDataSet DCGroup HandleMgr SerialDataCollector DomainCollector SDCHelper)
115115
IF(HDF5_IS_PARALLEL)
116-
#parallel version
116+
#parallel version
117117
MESSAGE(STATUS "Parallel HDF5 found. Building parallel version")
118118

119119
OPTION(COLLECTIVE_IO "use HDF5 collective IO" ON)
@@ -361,7 +361,7 @@ ELSE(HDF5_IS_PARALLEL)
361361
SET(CPACK_DEBIAN_PACKAGE_DEPENDS
362362
"libhdf5-serial-dev (>= 1.8.6)"
363363
)
364-
IF(TOOLS_MPI)
364+
IF(TOOLS_MPI)
365365
SET(CPACK_DEBIAN_PACKAGE_DEPENDS
366366
"${CPACK_DEBIAN_PACKAGE_DEPENDS}, lib${MPI_FLAVOR}-dev (>= ${MPI_FLAVOR_MINVERSION})"
367367
)

INSTALL.md

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,43 @@ endif(Splash_FOUND)
100100
# target_link_libraries(yourBinary ${LIBS})
101101
```
102102

103+
Examples
104+
--------
105+
106+
To build the examples in the `examples` subdirectory, just run the following
107+
commands in an empty build directory:
108+
109+
```bash
110+
cmake -DWITH_MPI=ON <yourPathTo>/libSplash/examples/
111+
make
112+
```
113+
114+
`WITH_MPI` will enable/disable MPI based tests. Parallel libSplash examples
115+
will require a parallel HDF5 install.
116+
117+
```bash
118+
# MPI based serial (posix) writer
119+
# -> creates four h5_X_Y_Z.h5 files
120+
# depending on MPI topology;
121+
# iterations are appended in these files
122+
mpiexec -n 4 ./domain_write_mpi.cpp.out h5 2 2 1
123+
124+
# MPI based serial (posix) reader
125+
# -> reads h5_X_Y_Z.h5 files
126+
mpiexec -n 4 ./domain_read_mpi.cpp.out h5 2 2 1
127+
# serial (posix) reader
128+
# -> reads h5_X_Y_Z.h5 files
129+
./domain_read.cpp.out h5
130+
131+
# MPI based parallel (MPI-I/O) writer
132+
# -> creates ph5_10.h5 (iteration = 10);
133+
# each iteration creates a new file but
134+
# MPI parallel chunks of the same iteration
135+
# are aggregated to one file
136+
mpiexec -n 4 ./parallel_domain_write.cpp.out ph5 2 2 1
137+
```
138+
139+
103140
Tests
104141
-----
105142

@@ -122,14 +159,16 @@ You can create your own version of the HTML documentation by running
122159
Parallel libSplash
123160
------------------
124161

125-
libSplash has **beta** support for parallel I/O.
162+
libSplash has support for parallel I/O creating a single, aggregated file per iteration.
126163
To build the parallel version, you need to build a parallel HDF5 library first.
127164
Commonly, it should be sufficient to configure HDF5 `$ configure --enable-shared --enable-parallel ...`.
128165
Running [cmake](#Compiling), libSplash will automatically detect the parallel HDF5
129166
capabilities and informs you with a status message
130167
`Parallel HDF5 found. Building parallel version`.
131168

132169
This builds the *ParallelDataCollector* and *ParallelDomainCollector* classes.
133-
*Please note that this feature is beta stage and not fully tested!*
134-
See *IParallelDataCollector* and *IParallelDomainCollector* interfaces for further
135-
information on how to use the parallel version.
170+
See
171+
[IParallelDataCollector](https://computationalradiationphysics.github.io/libSplash/classsplash_1_1_i_parallel_data_collector.html)
172+
and
173+
[IParallelDomainCollector](https://computationalradiationphysics.github.io/libSplash/classsplash_1_1_i_parallel_domain_collector.html)
174+
interfaces for further information on how to use the parallel version.

examples/CMakeLists.txt

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1+
# Copyright 2013-2015 Felix Schmitt, Axel Huebl
12
#
2-
# Copyright 2013 Felix Schmitt
3+
# This file is part of libSplash.
34
#
4-
# This file is part of libSplash.
5-
#
6-
# libSplash is free software: you can redistribute it and/or modify
7-
# it under the terms of of either the GNU General Public License or
8-
# the GNU Lesser General Public License as published by
9-
# the Free Software Foundation, either version 3 of the License, or
10-
# (at your option) any later version.
11-
# libSplash is distributed in the hope that it will be useful,
12-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14-
# GNU General Public License and the GNU Lesser General Public License
15-
# for more details.
16-
#
17-
# You should have received a copy of the GNU General Public License
18-
# and the GNU Lesser General Public License along with libSplash.
5+
# libSplash is free software: you can redistribute it and/or modify
6+
# it under the terms of of either the GNU General Public License or
7+
# the GNU Lesser General Public License as published by
8+
# the Free Software Foundation, either version 3 of the License, or
9+
# (at your option) any later version.
10+
#
11+
# libSplash is distributed in the hope that it will be useful,
12+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+
# GNU General Public License and the GNU Lesser General Public License
15+
# for more details.
16+
#
17+
# You should have received a copy of the GNU General Public License
18+
# and the GNU Lesser General Public License along with libSplash.
1919
# If not, see <http://www.gnu.org/licenses/>.
2020

2121
cmake_minimum_required(VERSION 2.8.5)
@@ -40,6 +40,7 @@ OPTION(WITH_MPI "build MPI examples" OFF)
4040

4141
SET(EXAMPLES domain_read/domain_read)
4242
SET(MPI_EXAMPLES domain_read/domain_read_mpi domain_write/domain_write_mpi)
43+
SET(PARALLEL_EXAMPLES parallel_domain_write/parallel_domain_write)
4344

4445
FOREACH(EXAMPLE_NAME ${EXAMPLES})
4546
SET(EXAMPLE_FILES "${EXAMPLE_FILES};${EXAMPLE_NAME}.cpp")
@@ -48,6 +49,9 @@ ENDFOREACH()
4849
FOREACH(EXAMPLE_NAME ${MPI_EXAMPLES})
4950
SET(MPI_EXAMPLE_FILES "${MPI_EXAMPLE_FILES};${EXAMPLE_NAME}.cpp")
5051
ENDFOREACH()
52+
FOREACH(PARALLEL_EXAMPLE_NAME ${PARALLEL_EXAMPLES})
53+
SET(PARALLEL_EXAMPLE_FILES "${PARALLEL_EXAMPLE_FILES};${PARALLEL_EXAMPLE_NAME}.cpp")
54+
ENDFOREACH()
5155

5256
#-------------------------------------------------------------------------------
5357

@@ -66,8 +70,8 @@ INCLUDE_DIRECTORIES("${SPLASH_ROOT_DIR}/include")
6670

6771
# link static
6872
ADD_LIBRARY(splash_static STATIC IMPORTED)
69-
SET_TARGET_PROPERTIES(splash_static PROPERTIES
70-
IMPORTED_LOCATION "${SPLASH_ROOT_DIR}/lib/libsplash.a")
73+
SET_TARGET_PROPERTIES(splash_static PROPERTIES
74+
IMPORTED_LOCATION "${SPLASH_ROOT_DIR}/lib/libsplash.a")
7175
SET(LIBS splash_static ${LIBS})
7276

7377
# link dynamic
@@ -102,6 +106,10 @@ ENDFOREACH()
102106

103107
# build all MPI examples
104108
IF(WITH_MPI)
109+
# add parallel examples
110+
IF(HDF5_IS_PARALLEL)
111+
SET(MPI_EXAMPLE_FILES ${MPI_EXAMPLE_FILES} ${PARALLEL_EXAMPLE_FILES})
112+
ENDIF(HDF5_IS_PARALLEL)
105113
MESSAGE(STATUS "Building MPI examples")
106114
FOREACH(EXAMPLE_FILE ${MPI_EXAMPLE_FILES})
107115
GET_FILENAME_COMPONENT(FILE ${EXAMPLE_FILE} NAME)

examples/domain_read/domain_read.cpp

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
/**
22
* Copyright 2013 Felix Schmitt
33
*
4-
* This file is part of libSplash.
5-
*
6-
* libSplash is free software: you can redistribute it and/or modify
7-
* it under the terms of of either the GNU General Public License or
8-
* the GNU Lesser General Public License as published by
9-
* the Free Software Foundation, either version 3 of the License, or
10-
* (at your option) any later version.
4+
* This file is part of libSplash.
115
*
12-
* libSplash is distributed in the hope that it will be useful,
13-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15-
* GNU General Public License and the GNU Lesser General Public License
16-
* for more details.
17-
*
18-
* You should have received a copy of the GNU General Public License
19-
* and the GNU Lesser General Public License along with libSplash.
20-
* If not, see <http://www.gnu.org/licenses/>.
6+
* libSplash is free software: you can redistribute it and/or modify
7+
* it under the terms of of either the GNU General Public License or
8+
* the GNU Lesser General Public License as published by
9+
* the Free Software Foundation, either version 3 of the License, or
10+
* (at your option) any later version.
11+
*
12+
* libSplash is distributed in the hope that it will be useful,
13+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+
* GNU General Public License and the GNU Lesser General Public License
16+
* for more details.
17+
*
18+
* You should have received a copy of the GNU General Public License
19+
* and the GNU Lesser General Public License along with libSplash.
20+
* If not, see <http://www.gnu.org/licenses/>.
2121
*/
2222

2323
#include <iostream>
@@ -30,7 +30,7 @@ using namespace splash;
3030
* This libSplash example demonstrates on how to use the DomainCollector class
3131
* to read multiple, domain-annotated libSplash files transparently as a single
3232
* file.
33-
*
33+
*
3434
* The program expects the base part to a distributed libSplash file, i.e.
3535
* 'my_data', given that you have files like 'my_data_0_0_0.h5', ...
3636
*/
@@ -113,7 +113,7 @@ int main(int argc, char **argv)
113113
Dimensions size = subdomain->getSize();
114114

115115
std::cout << "subdomain " << d << " has size " << size.toString() << std::endl;
116-
116+
117117
// access the underlying buffer of a subdomain
118118
void *elements = subdomain->getData();
119119
}

examples/domain_read/domain_read_mpi.cpp

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
/**
22
* Copyright 2013 Felix Schmitt
33
*
4-
* This file is part of libSplash.
5-
*
6-
* libSplash is free software: you can redistribute it and/or modify
7-
* it under the terms of of either the GNU General Public License or
8-
* the GNU Lesser General Public License as published by
9-
* the Free Software Foundation, either version 3 of the License, or
10-
* (at your option) any later version.
4+
* This file is part of libSplash.
115
*
12-
* libSplash is distributed in the hope that it will be useful,
13-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15-
* GNU General Public License and the GNU Lesser General Public License
16-
* for more details.
17-
*
18-
* You should have received a copy of the GNU General Public License
19-
* and the GNU Lesser General Public License along with libSplash.
20-
* If not, see <http://www.gnu.org/licenses/>.
6+
* libSplash is free software: you can redistribute it and/or modify
7+
* it under the terms of of either the GNU General Public License or
8+
* the GNU Lesser General Public License as published by
9+
* the Free Software Foundation, either version 3 of the License, or
10+
* (at your option) any later version.
11+
*
12+
* libSplash is distributed in the hope that it will be useful,
13+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+
* GNU General Public License and the GNU Lesser General Public License
16+
* for more details.
17+
*
18+
* You should have received a copy of the GNU General Public License
19+
* and the GNU Lesser General Public License along with libSplash.
20+
* If not, see <http://www.gnu.org/licenses/>.
2121
*/
2222

2323
#include <mpi.h>
@@ -35,7 +35,7 @@ using namespace splash;
3535
/**
3636
* This libSplash example demonstrates on how to use the DomainCollector class
3737
* to read multiple, domain-annotated libSplash files using N MPI processes.
38-
*
38+
*
3939
* The program expects the base part to a distributed libSplash file, i.e.
4040
* 'my_data', given that you have files like 'my_data_0_0_0.h5', ...
4141
*/
@@ -185,7 +185,7 @@ int main(int argc, char **argv)
185185

186186
std::cout << " " << mpi_rank << ": subdomain " << d << " has size " <<
187187
size.toString() << std::endl;
188-
188+
189189
// access the underlying buffer of a subdomain
190190
void *elements = subdomain->getData();
191191
}

0 commit comments

Comments
 (0)