1998-02-16 13:28:33 +08:00
|
|
|
Installation instructions for Parallel HDF5
|
|
|
|
-------------------------------------------
|
|
|
|
|
2001-05-24 22:35:11 +08:00
|
|
|
|
1999-05-22 11:58:47 +08:00
|
|
|
1. Overview
|
|
|
|
-----------
|
2001-05-24 22:35:11 +08:00
|
|
|
|
1998-02-16 13:28:33 +08:00
|
|
|
This file contains instructions for the installation of parallel
|
2001-05-24 22:35:11 +08:00
|
|
|
HDF5. Platforms supported by this release are SGI Origin 2000, IBM SP2,
|
|
|
|
Intel TFLOPs, and Linux version 2.4 and greater. The steps are kind of
|
|
|
|
unnatural and will be more automized in the next release. If you have
|
|
|
|
difficulties installing the software in your system, please send mail to
|
|
|
|
|
1998-02-16 13:28:33 +08:00
|
|
|
hdfparallel@ncsa.uiuc.edu
|
1998-04-24 08:02:08 +08:00
|
|
|
|
2001-05-24 22:35:11 +08:00
|
|
|
In your mail, please include the output of "uname -a". Also attach the
|
|
|
|
content of "config.log" if you ran the "configure" command.
|
|
|
|
|
|
|
|
First, you must obtain and unpack the HDF5 source as described in the
|
|
|
|
INSTALL file. You also need to obtain the information of the include and
|
|
|
|
library paths of MPI and MPIO software installed in your system since the
|
|
|
|
parallel HDF5 library uses them for parallel I/O access.
|
1998-02-16 13:28:33 +08:00
|
|
|
|
|
|
|
|
1999-05-22 11:58:47 +08:00
|
|
|
2. Quick Instruction for known systems
|
|
|
|
--------------------------------------
|
2001-05-24 22:35:11 +08:00
|
|
|
|
1999-05-22 11:58:47 +08:00
|
|
|
The following shows particular steps to run the parallel HDF5
|
2001-05-24 22:35:11 +08:00
|
|
|
configure for a few machines we've tested. If your particular platform
|
1999-05-22 11:58:47 +08:00
|
|
|
is not shown or somehow the steps do not work for yours, please go
|
2001-05-24 22:35:11 +08:00
|
|
|
to the next section for more detailed explanations.
|
1999-05-22 11:58:47 +08:00
|
|
|
|
2000-12-21 23:54:34 +08:00
|
|
|
------
|
|
|
|
TFLOPS
|
|
|
|
------
|
2001-05-24 22:35:11 +08:00
|
|
|
|
|
|
|
Follow the instuctions in INSTALL_TFLOPS.
|
1999-05-22 11:58:47 +08:00
|
|
|
|
2000-12-21 23:54:34 +08:00
|
|
|
-------
|
2002-06-05 06:49:24 +08:00
|
|
|
IBM SP
|
2000-12-21 23:54:34 +08:00
|
|
|
-------
|
2001-05-24 22:35:11 +08:00
|
|
|
|
2000-12-21 23:54:34 +08:00
|
|
|
First of all, make sure your environment variables are set correctly
|
2002-06-05 06:49:24 +08:00
|
|
|
to compile and execute a single process mpi applications for the SP
|
|
|
|
machine. Unfortunately, the setting varies from machine to machine.
|
|
|
|
E.g., the following works for the Blue machine of LLNL.
|
|
|
|
|
|
|
|
setenv CC mpcc_r
|
|
|
|
setenv F9X mpxlf_r # if parallel Fortran API is wanted
|
|
|
|
setenv MP_PROCS 1
|
|
|
|
setenv MP_NODES 1
|
|
|
|
setenv MP_LABELIO no
|
|
|
|
setenv MP_RMPOOL 0
|
|
|
|
setenv RUNPARALLEL "MP_PROCS=2 MP_TASKS_PER_NODE=2 poe"
|
2000-12-21 23:54:34 +08:00
|
|
|
setenv LLNL_COMPILE_SINGLE_THREADED TRUE
|
|
|
|
|
2001-05-24 22:35:11 +08:00
|
|
|
The shared library configuration for this version is broken. So, only
|
|
|
|
static library is supported.
|
|
|
|
|
2000-12-21 23:54:34 +08:00
|
|
|
Then do the following steps:
|
|
|
|
|
2001-05-24 22:35:11 +08:00
|
|
|
$ ./configure --disable-shared --prefix=<install-directory>
|
|
|
|
$ make # build the library
|
|
|
|
$ make check # verify the correctness
|
|
|
|
$ make install
|
2000-12-21 23:54:34 +08:00
|
|
|
|
|
|
|
|
|
|
|
---------------
|
|
|
|
SGI Origin 2000
|
|
|
|
Cray T3E
|
1999-05-22 11:58:47 +08:00
|
|
|
(where MPI-IO is part of system MPI library such as mpt 1.3)
|
2000-12-21 23:54:34 +08:00
|
|
|
---------------
|
1999-05-22 11:58:47 +08:00
|
|
|
|
|
|
|
#!/bin/sh
|
|
|
|
|
2001-03-20 06:31:06 +08:00
|
|
|
RUNPARALLEL="mpirun -np 3"
|
1999-05-22 11:58:47 +08:00
|
|
|
export RUNPARALLEL
|
|
|
|
LIBS="-lmpi"
|
|
|
|
export LIBS
|
2002-06-05 06:49:24 +08:00
|
|
|
./configure --enable-parallel --prefix=$PWD/installdir
|
1999-05-22 11:58:47 +08:00
|
|
|
make
|
|
|
|
make check
|
|
|
|
make install
|
|
|
|
|
|
|
|
|
2002-06-05 06:49:24 +08:00
|
|
|
***Known problem***
|
|
|
|
Some O2K system may encounter an error during make.
|
|
|
|
ld32: FATAL 9: I/O error (-lmpi): No such file or directory
|
|
|
|
|
|
|
|
This is because libtool tries too hard to locate the loader 'ld'
|
|
|
|
but ends up with one that does not know where to find the right
|
|
|
|
version of libmpi.a for the particular ABI requested.
|
|
|
|
The fix is to edit the file 'libtool' at the top of the build directory.
|
|
|
|
Search for a string that looks like the following:
|
|
|
|
LD="/opt/MIPSpro/MIPSpro_default/opt/MIPSpro/bin/ld -n32"
|
|
|
|
|
|
|
|
Replace it with something that knows how to find the right libmpi.a.
|
|
|
|
E.g.,
|
|
|
|
LD="/opt/MIPSpro/MIPSpro_default/opt/MIPSpro/bin/cc -n32"
|
|
|
|
|
|
|
|
|
2000-12-21 23:54:34 +08:00
|
|
|
---------------
|
|
|
|
SGI Origin 2000
|
|
|
|
Cray T3E
|
2001-05-24 22:35:11 +08:00
|
|
|
(where MPI-IO is not part of system MPI library or I want to use my own
|
|
|
|
version of MPIO)
|
2000-12-21 23:54:34 +08:00
|
|
|
---------------
|
1999-05-22 11:58:47 +08:00
|
|
|
|
|
|
|
mpi1_inc="" #mpi-1 include
|
|
|
|
mpi1_lib="" #mpi-1 library
|
|
|
|
mpio_inc=-I$HOME/ROMIO/include #mpio include
|
|
|
|
mpio_lib="-L$HOME/ROMIO/lib/IRIX64" #mpio library
|
|
|
|
|
|
|
|
MPI_INC="$mpio_inc $mpi1_inc"
|
|
|
|
MPI_LIB="$mpio_lib $mpi1_lib"
|
|
|
|
|
|
|
|
#for version 1.1
|
|
|
|
CPPFLAGS=$MPI_INC
|
|
|
|
export CPPFLAGS
|
|
|
|
LDFLAGS=$MPI_LIB
|
|
|
|
export LDFLAGS
|
2001-03-20 06:31:06 +08:00
|
|
|
RUNPARALLEL="mpirun -np 3"
|
1999-05-22 11:58:47 +08:00
|
|
|
export RUNPARALLEL
|
|
|
|
LIBS="-lmpio -lmpi"
|
|
|
|
export LIBS
|
|
|
|
|
2002-06-05 06:49:24 +08:00
|
|
|
./configure --enable-parallel --prefix=$PWD/installdir
|
1999-05-22 11:58:47 +08:00
|
|
|
make
|
|
|
|
make check
|
|
|
|
make install
|
|
|
|
|
|
|
|
|
2001-05-31 03:51:39 +08:00
|
|
|
---------------------
|
2001-05-24 22:35:11 +08:00
|
|
|
Linux 2.4 and greater
|
2001-05-31 03:51:39 +08:00
|
|
|
---------------------
|
2001-05-24 22:35:11 +08:00
|
|
|
|
|
|
|
Be sure that your installation of MPICH was configured with the following
|
|
|
|
configuration command-line option:
|
|
|
|
|
|
|
|
-cflags="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
|
|
|
|
|
|
|
|
This allows for >2GB sized files on Linux systems and is only available
|
|
|
|
with Linux kernels 2.4 and greater.
|
|
|
|
|
|
|
|
|
2001-05-31 03:51:39 +08:00
|
|
|
------------------
|
|
|
|
HP V2500 and N4000
|
|
|
|
------------------
|
|
|
|
|
|
|
|
Follow the instructions in section 3.
|
|
|
|
|
|
|
|
|
1999-05-22 11:58:47 +08:00
|
|
|
3. Detail explanation
|
|
|
|
---------------------
|
2001-05-24 22:35:11 +08:00
|
|
|
|
|
|
|
The HDF5 library can be configured to use MPI and MPI-IO for parallelism
|
|
|
|
on a distributed multi-processor system. The easiest way to do this is to
|
|
|
|
have a properly installed parallel compiler (e.g., MPICH's mpicc or IBM's
|
|
|
|
mpcc) and supply that executable as the value of the CC environment
|
|
|
|
variable:
|
1999-08-03 03:51:13 +08:00
|
|
|
|
|
|
|
$ CC=mpcc ./configure
|
|
|
|
$ CC=/usr/local/mpi/bin/mpicc ./configure
|
|
|
|
|
2001-05-24 22:35:11 +08:00
|
|
|
If no such wrapper script is available then you must specify your normal
|
|
|
|
C compiler along with the distribution of MPI/MPI-IO which is to be used
|
|
|
|
(values other than `mpich' will be added at a later date):
|
1999-08-03 03:51:13 +08:00
|
|
|
|
|
|
|
$ ./configure --enable-parallel=mpich
|
|
|
|
|
2001-05-24 22:35:11 +08:00
|
|
|
If the MPI/MPI-IO include files and/or libraries cannot be found by the
|
|
|
|
compiler then their directories must be given as arguments to CPPFLAGS
|
|
|
|
and/or LDFLAGS:
|
1999-08-03 03:51:13 +08:00
|
|
|
|
|
|
|
$ CPPFLAGS=-I/usr/local/mpi/include \
|
|
|
|
LDFLAGS=-L/usr/local/mpi/lib/LINUX/ch_p4 \
|
|
|
|
./configure --enable-parallel=mpich
|
|
|
|
|
2001-05-24 22:35:11 +08:00
|
|
|
If a parallel library is being built then configure attempts to determine
|
|
|
|
how to run a parallel application on one processor and on many
|
|
|
|
processors. If the compiler is `mpicc' and the user hasn't specified
|
|
|
|
values for RUNSERIAL and RUNPARALLEL then configure chooses `mpirun' from
|
|
|
|
the same directory as `mpicc':
|
1999-08-03 03:51:13 +08:00
|
|
|
|
|
|
|
RUNSERIAL: /usr/local/mpi/bin/mpirun -np 1
|
2001-03-20 06:31:06 +08:00
|
|
|
RUNPARALLEL: /usr/local/mpi/bin/mpirun -np $${NPROCS:=3}
|
1999-08-03 03:51:13 +08:00
|
|
|
|
2001-05-24 22:35:11 +08:00
|
|
|
The `$${NPROCS:=3}' will be substituted with the value of the NPROCS
|
|
|
|
environment variable at the time `make check' is run (or the value 3).
|
2001-08-15 01:07:07 +08:00
|
|
|
|
|
|
|
|
|
|
|
4. Parallel tests
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
The testpar/ directory contains tests for Parallel HDF5 and MPI-IO.
|
|
|
|
The t_mpi tests the basic functionalities of some MPI-IO features used by
|
|
|
|
Parallel HDF5. It usually exits with non-zero code if a required MPI-IO
|
|
|
|
feature does not succeed as expected. One exception is the testing of
|
|
|
|
accessing files larger than 2GB. If the underlaying filesystem or if
|
|
|
|
the MPI-IO library fails to handle file sizes larger than 2GB, the test
|
|
|
|
will print informational essages stating the failure but will not exit
|
|
|
|
with non-zero code. Failure to support file size greater than 2GB is
|
|
|
|
not a fatal error for HDF5 becuase HDF5 can use other file-drivers such
|
|
|
|
as families of files to by pass the file size limit.
|