The SEISM-IO library is designed to reduce the amount of optimization efforts and lower the barrier of parallel I/O implementation. Currently, SEISM-IO library only works with structured meshes, because unstructured meshes require much more complexed partitioning. Compared with other generalized I/O libraries, our SEISM-IO library has many specialized functions which aim at improving the programming efficiency of seismic applications, such as grid partition and buffering output. We also develop an easy-to-use application programming interface (API) for both C and Fortran language, which integrates different initialization, open, read, write and finalize processes in underlying MPI-IO, PHDF5, PnetCDF and ADIOS I/O libraries. By calling this light-weight interface instead of calling the SEISM-IO directly, we hide complex low-level operation in the SEISM-IO framework and high-level operations in the underlying libraries from user so they can focus on their scientific difficulties. Although the target application we focused on are mostly seismic applications, the SEISM-IO library can be used by many HPC applications based on structured meshes.
The SEISM-IO library requires multiple 3rd party software packages, We strongly recommend our user use the software packages listed as followings.
- szip-2.1.1
wget https://support.hdfgroup.org/ftp/lib-external/szip/2.1.1/src/szip-2.1.1.tar.gz
tar -zxvf szip-2.1.1.tar.gz
cd szip-2.1.1
./configure --prefix=/path/to/szip-2.1.1
make install
- zlib-1.2.11
wget https://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=/path/to/zlib-1.2.11
make install
- phdf5-1.8.19
wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.19/src/hdf5-1.8.19.tar.gz
tar -zxvf hdf5-1.8.19.tar.gz
cd hdf5-1.8.19
CC=mpicc FC=mpif90 ./configure --enable-parallel --prefix=/path/to/phdf5-1.8.19 --enable-fortran
make install
- pnetcdf-1.7.0
wget http://cucis.ece.northwestern.edu/projects/PnetCDF/Release/parallel-netcdf-1.7.0.tar.gz
tar -zxvf parallel-netcdf-1.7.0.tar.gz
cd parallel-netcdf-1.7.0
./configure --prefix=/path/to/pnetcdf-1.7.0
make
make install prefix=/path/to/pnetcdf-1.7.0
- mxml-2.11
wget https://github.com/michaelrsweet/mxml/releases/download/v2.11/mxml-2.11.tar.gz
mkdir mxml-2.11
tar -zxvf mxml-2.11.tar.gz -C mxml-2.11
cd mxml-2.11
./configure --prefix=/path/to/mxml-2.11
make install
- adios-1.9.0
wget http://users.nccs.gov/~pnorbert/adios-1.9.0.tar.gz
tar -zxvf adios-1.9.0.tar.gz
cd adios-1.9.0
CC=mpicc FC=mpif90 ./configure --prefix=/path/to/adios-1.9.0 --with-mxml=/path/to/mxml-2.11
make
make install
note: if "./src/core/adios_internals.c" complains about "isnan" or "isfinite", replace line 4970
isnan ( data [size] ) => isnan ( (float)data [size] )
isfinite ( data [size] ) => isfinite ( (float)data [size] )
After installed all software packages above, add all libraries' path into environment as followings,
export PATH=/path/to/phdf5-1.8.19/bin:$PATH
export LD_LIBRARY_PATH=/path/to/phdf5-1.8.19/lib:$LD_LIBRARY_PATH
export PATH=/path/to/pnetcdf-1.7.0/bin:$PATH
export LD_LIBRARY_PATH=/path/to/pnetcdf-1.7.0/lib:$LD_LIBRARY_PATH
export PATH=/path/to/adios-1.9.0/bin:$PATH
export LD_LIBRARY_PATH=/path/to/adios-1.9.0/lib:$LD_LIBRARY_PATH
export PATH=/path/to/mxml-2.11/bin:$PATH
export LD_LIBRARY_PATH=/path/to/mxml-2.11/lib:$LD_LIBRARY_PATH
- general Install
git clone https://github.com/HPGeoC/seism-io.git
cd seism-io
autoreconf -fi
CC=mpicc FC=mpif90 ./configure --prefix=/path/to/seismio \
--with-phdf5=/path/to/phdf5-1.8.19 --with-pnetcdf=/path/to/pnetcdf-1.7.0 \
--with-adios=/path/to/adios-1.9.0 --with-mxml=/path/to/mxml-2.11
make
make install
- Install on Comet
git clone https://github.com/HPGeoC/seism-io.git
cd seism-io
autoreconf -fi
CC=mpicc FC=mpif90 ./configure --prefix=/path/to/seismio \
--with-phdf5=/opt/hdf5/intel/mvapich2_ib --with-pnetcdf=/opt/netcdf/4.3.2/intel/mvapich2_ib \
--with-adios=/path/to/adios --with-mxml=/path/to/local
make
make install
- Install on BlueWaters
git clone https://github.com/HPGeoC/seism-io.git
cd seism-io
autoreconf -fi
CC=cc FC=ftn ./configure --prefix=/path/to/seismio \
--with-phdf5=/opt/cray/hdf5-parallel/1.8.16/gnu/4.9 --with-pnetcdf=/opt/cray/parallel-netcdf/1.7.0/gnu/4.9 \
--with-adios=/path/to/adios --with-mxml=/sw/xe/mxml/2.7/cnl4.2_gnu4.8.2
make
make install
- Install on Titan
git clone https://github.com/HPGeoC/seism-io.git
cd seism-io
autoreconf -fi
CC=cc FC=ftn ./configure --prefix=/path/to/seismio \
--with-phdf5=/opt/cray/hdf5-parallel/1.8.16/gnu/4.9 \
--with-pnetcdf=/opt/cray/parallel-netcdf/1.7.0/gnu/4.9 \
--with-adios=/ccs/home/dmu/project/Tools --with-mxml=/sw/xk6/mxml/2.9/cle5.2_gcc4.8.2
make
make install
cd examples/c
[modify libraries path in the Makefile]
make
./clean.sh
mpirun -np 8 ./testInterface
OR
cd examples/f
[modify libraries path in the Makefile]
make
./clean.sh
mpirun -np 8 ./testInterface
SEISM-IO is licensed under BSD-2
If you have any question, please contact yfcui@sdsc.edu or visit our homepage hpgeoc.ucsd.edu.
Yifeng Cui
2017.01