GenericIO
GenericIO is a write-optimized library for writing self-describing scientific data files on large-scale parallel file systems.
- Repository: git.cels.anl.gov
- Documentation: CPACdocs
Reference
Habib, et al., HACC: Simulating Future Sky Surveys on State-of-the-Art Supercomputing Architectures, New Astronomy, 2015 (http://arxiv.org/abs/1410.2805).
Obtaining the Source Code
The most recent version of source is available by cloning this repo:
git clone https://git.cels.anl.gov/hacc/genericio.git
There is also a history of code releases: 2019-04-17 / 2017-09-25 / 2016-08-29 / 2016-04-12 / 2015-06-08 /
Building Executables / C++Library
The executables and libgenericio
can be built either with
CMake (minimum version 3.10) or with
GNUMake. The following executables will
be built:
-
frontend/GenericIOPrint
print data to stdout (non-MPI version) -
frontend/GenericIOVerify
verify and try reading data (non-MPI version) -
mpi/GenericIOBenchmarkRead
reading benchmark, works on data written withGenericIOBenchmarkWrite
-
mpi/GenericIOBenchmarkWrite
writing benchmark -
mpi/GenericIOPrint
print data to stdout -
mpi/genericIORewrite
rewrite data with a different number of ranks -
mpi/genericIOVerify
verify and try reading data
Using CMake
Note that the executables / libraries will be located in
build/<frontend/mpi>
. CMake will use the compiler pointed to in the CC
and CXX
environmental variables.
mkdir build && cd build
cmake ..
make -j4
Using Make
Make will create the executables / libraries under the main directory. Edit the
CC
, CXX
, MPICC
, and MPICXX
variables in the GNUmakefile to
change the compiler.
make
Installing the Python Library
The pygio
library is pip-installable and works with mpi4py
.
Requirements
- Currently, a CMake version >= 3.11.0 is required to fetch dependencies
during configuration. If the system does not provide a suitable
cmake
version,pip
should (theoretically) downloadcmake
from the PyPI repository. - The
pygio
module also requires MPI libraries to be detectable by CMake's FindMPI. The compiler needs to support C++17 (make sure thatCC
andCXX
point to the correct compiler).
Install
The python library can be installed by running pip in the main folder:
python -m pip install .
Alternatively, the library can also directly be installed from the git URL without having to clone the repository first:
python -m pip install git+https://git.cels.anl.gov/hacc/genericio.git
It will use the compiler referred by the CC
and CXX
environment
variable. In case the automatically detected compiler is incorrect, specify the
compiler path as
CC=/path/to/gcc CXX=/path/to/g++ python -m pip install .
If the compiler supports OpenMP, the library will be threaded. Make
sure to set OMP_NUM_THREADS
to an appropriate variable, in particluar when
using multiple MPI ranks per node.
Installing and running with VELOC support
Requirements
This mode requires a working VELOC installation. Instructions can be found here: https://veloc.readthedocs.io
Install
Set the VELOC_INSTALL_DIR variable in GNUMakefile to the root of the VELOC installation directory. Then proceed to compile and link GIO as usual.
Run
Define the GENERICIO_USE_VELOC environment variable as the path to the VELOC configuration file. An example is available here: veloc.cfg