mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-01-18 15:15:56 +08:00
Merging in latest from upstream (HDFFV/hdf5:refs/heads/develop)
* commit 'b30a1fe44aa804a67f2291005bf8135ac5c2dc99': Updated the parallel install docs. Eliminated the need for a separate script variable. Added a helpful message to the flush script. Added a shell script so we can run the parallel flush test on OpenMPI.
This commit is contained in:
commit
0e6cf18b06
1
MANIFEST
1
MANIFEST
@ -1295,6 +1295,7 @@
|
|||||||
./testpar/t_span_tree.c
|
./testpar/t_span_tree.c
|
||||||
./testpar/t_init_term.c
|
./testpar/t_init_term.c
|
||||||
./testpar/testpar.h
|
./testpar/testpar.h
|
||||||
|
./testpar/testpflush.sh.in
|
||||||
./testpar/testphdf5.c
|
./testpar/testphdf5.c
|
||||||
./testpar/testphdf5.h
|
./testpar/testphdf5.h
|
||||||
|
|
||||||
|
@ -249,7 +249,7 @@ build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
|
|||||||
echo "**** Hint ****"; \
|
echo "**** Hint ****"; \
|
||||||
echo "Parallel test files reside in the current directory" \
|
echo "Parallel test files reside in the current directory" \
|
||||||
"by default."; \
|
"by default."; \
|
||||||
echo "Set HDF5_PARAPREFIX to use another directory. E.g.,"; \
|
echo "Set HDF5_PARAPREFIX to use another directory. e.g.,"; \
|
||||||
echo " HDF5_PARAPREFIX=/PFS/user/me"; \
|
echo " HDF5_PARAPREFIX=/PFS/user/me"; \
|
||||||
echo " export HDF5_PARAPREFIX"; \
|
echo " export HDF5_PARAPREFIX"; \
|
||||||
echo " make check"; \
|
echo " make check"; \
|
||||||
|
@ -3411,6 +3411,7 @@ AC_CONFIG_FILES([src/libhdf5.settings
|
|||||||
test/test_usecases.sh
|
test/test_usecases.sh
|
||||||
test/test_vol_plugin.sh
|
test/test_vol_plugin.sh
|
||||||
testpar/Makefile
|
testpar/Makefile
|
||||||
|
testpar/testpflush.sh
|
||||||
tools/Makefile
|
tools/Makefile
|
||||||
tools/lib/Makefile
|
tools/lib/Makefile
|
||||||
tools/src/Makefile
|
tools/src/Makefile
|
||||||
|
@ -102,7 +102,7 @@ qsub -I -q debug -l mppwidth=8
|
|||||||
- configure HDF5:
|
- configure HDF5:
|
||||||
RUNSERIAL="aprun -q -n 1" RUNPARALLEL="aprun -q -n 6" FC=ftn CC=cc /path/to/source/configure --enable-fortran --enable-parallel --disable-shared
|
RUNSERIAL="aprun -q -n 1" RUNPARALLEL="aprun -q -n 6" FC=ftn CC=cc /path/to/source/configure --enable-fortran --enable-parallel --disable-shared
|
||||||
|
|
||||||
RUNSERIAL and RUNPARALLEL tells the library how it should launch programs that are part of the build procedure.
|
RUNSERIAL and RUNPARALLEL tell the library how it should launch programs that are part of the build procedure.
|
||||||
|
|
||||||
- Compile HDF5:
|
- Compile HDF5:
|
||||||
gmake
|
gmake
|
||||||
@ -155,12 +155,16 @@ 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
|
compiler is `mpicc' and the user hasn't specified values for RUNSERIAL and
|
||||||
RUNPARALLEL then configure chooses `mpiexec' from the same directory as `mpicc':
|
RUNPARALLEL then configure chooses `mpiexec' from the same directory as `mpicc':
|
||||||
|
|
||||||
RUNSERIAL: /usr/local/mpi/bin/mpiexec -np 1
|
RUNSERIAL: mpiexec -n 1
|
||||||
RUNPARALLEL: /usr/local/mpi/bin/mpiexec -np $${NPROCS:=6}
|
RUNPARALLEL: mpiexec -n $${NPROCS:=6}
|
||||||
|
|
||||||
The `$${NPROCS:=6}' will be substituted with the value of the NPROCS
|
The `$${NPROCS:=6}' will be substituted with the value of the NPROCS
|
||||||
environment variable at the time `make check' is run (or the value 6).
|
environment variable at the time `make check' is run (or the value 6).
|
||||||
|
|
||||||
|
Note that some MPI implementations (e.g. OpenMPI 4.0) disallow oversubscribing
|
||||||
|
nodes by default so you'll have to either set NPROCS equal to the number of
|
||||||
|
processors available (or fewer) or redefine RUNPARALLEL with appropriate
|
||||||
|
flag(s) (--oversubscribe in OpenMPI).
|
||||||
|
|
||||||
4. Parallel test suite
|
4. Parallel test suite
|
||||||
----------------------
|
----------------------
|
||||||
|
@ -613,7 +613,7 @@ h5_fixname_real(const char *base_name, hid_t fapl, const char *_suffix,
|
|||||||
printf("*** Hint ***\n"
|
printf("*** Hint ***\n"
|
||||||
"You can use environment variable HDF5_PARAPREFIX to "
|
"You can use environment variable HDF5_PARAPREFIX to "
|
||||||
"run parallel test files in a\n"
|
"run parallel test files in a\n"
|
||||||
"different directory or to add file type prefix. E.g.,\n"
|
"different directory or to add file type prefix. e.g.,\n"
|
||||||
" HDF5_PARAPREFIX=pfs:/PFS/user/me\n"
|
" HDF5_PARAPREFIX=pfs:/PFS/user/me\n"
|
||||||
" export HDF5_PARAPREFIX\n"
|
" export HDF5_PARAPREFIX\n"
|
||||||
"*** End of Hint ***\n");
|
"*** End of Hint ***\n");
|
||||||
|
@ -21,11 +21,19 @@ include $(top_srcdir)/config/commence.am
|
|||||||
|
|
||||||
AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/test
|
AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/test
|
||||||
|
|
||||||
|
# Test scripts--
|
||||||
|
# testpflush.sh:
|
||||||
|
TEST_SCRIPT_PARA = testpflush.sh
|
||||||
|
SCRIPT_DEPEND = t_pflush1$(EXEEXT) t_pflush2$(EXEEXT)
|
||||||
|
|
||||||
|
check_SCRIPTS = $(TEST_SCRIPT_PARA)
|
||||||
|
|
||||||
# Test programs. These are our main targets.
|
# Test programs. These are our main targets.
|
||||||
#
|
#
|
||||||
TEST_PROG_PARA=t_mpi t_bigio testphdf5 t_cache t_cache_image t_pflush1 t_pflush2 t_pread t_pshutdown t_prestart t_init_term t_shapesame t_filters_parallel
|
TEST_PROG_PARA=t_mpi t_bigio testphdf5 t_cache t_cache_image t_pread t_pshutdown t_prestart t_init_term t_shapesame t_filters_parallel
|
||||||
|
|
||||||
check_PROGRAMS = $(TEST_PROG_PARA)
|
# t_pflush1 and t_pflush2 are used by testpflush.sh
|
||||||
|
check_PROGRAMS = $(TEST_PROG_PARA) t_pflush1 t_pflush2
|
||||||
|
|
||||||
testphdf5_SOURCES=testphdf5.c t_dset.c t_file.c t_file_image.c t_mdset.c \
|
testphdf5_SOURCES=testphdf5.c t_dset.c t_file.c t_file_image.c t_mdset.c \
|
||||||
t_ph5basic.c t_coll_chunk.c t_span_tree.c t_chunk_alloc.c t_filter_read.c \
|
t_ph5basic.c t_coll_chunk.c t_span_tree.c t_chunk_alloc.c t_filter_read.c \
|
||||||
|
64
testpar/testpflush.sh.in
Normal file
64
testpar/testpflush.sh.in
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
#
|
||||||
|
# Copyright by The HDF Group.
|
||||||
|
# Copyright by the Board of Trustees of the University of Illinois.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This file is part of HDF5. The full HDF5 copyright notice, including
|
||||||
|
# terms governing use, modification, and redistribution, is contained in
|
||||||
|
# the COPYING file, which can be found at the root of the source code
|
||||||
|
# distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases.
|
||||||
|
# If you do not have access to either file, you may request a copy from
|
||||||
|
# help@hdfgroup.org.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Test script for the parallel flush test
|
||||||
|
#
|
||||||
|
# The parallel flush test uses two programs to test flush operations
|
||||||
|
# in parallel HDF5. The first program purposely exits without calling
|
||||||
|
# MPI_Finalize(), which is an error under the MPI standard and mpiexec
|
||||||
|
# in some implementations will return an error code even though all
|
||||||
|
# processes exit successfully. This script lets us swallow the error
|
||||||
|
# from the first program.
|
||||||
|
#
|
||||||
|
# True errors in the first program will be detected as errors in the
|
||||||
|
# second program, so watch out for that.
|
||||||
|
#
|
||||||
|
# Programmer: Dana Robinson
|
||||||
|
# Fall 2018
|
||||||
|
|
||||||
|
# The build (current) directory might be different than the source directory.
|
||||||
|
if test -z "$srcdir"; then
|
||||||
|
srcdir=.
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Turn the $$ we use to avoid Autotools munging into $
|
||||||
|
#
|
||||||
|
# Allowing $$ to substitute in both the RUNPARALLEL string and the
|
||||||
|
# regexp is intentional. There doesn't seem to be a way around
|
||||||
|
# this using quote shenanigans. The downside is that there is a remote
|
||||||
|
# chance that the shell's pid will match a number in the RUNPARALLEL
|
||||||
|
# variable, but that seems less likely to cause problems than expecting
|
||||||
|
# library builders to specify two almost identical versions of the
|
||||||
|
# RUNPARALLEL command, one for use in scripts and one via Makefiles.
|
||||||
|
RUNPARALLELSCRIPT=`echo "@RUNPARALLEL@" | sed "s/$$/\$/g"`
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# Run the first parallel flush test program
|
||||||
|
# (note that we ignore any errors here)
|
||||||
|
# ==========================================
|
||||||
|
echo "*** NOTE ***********************************************************"
|
||||||
|
echo "You may see complaints from mpiexec et al. that not all processes"
|
||||||
|
echo "called MPI_Finalize(). This is an intended characteristic of the"
|
||||||
|
echo "test and should not be considered an error."
|
||||||
|
echo "********************************************************************"
|
||||||
|
eval ${RUNPARALLELSCRIPT} ./t_pflush1
|
||||||
|
|
||||||
|
|
||||||
|
# ===========================================
|
||||||
|
# Run the second parallel flush test program
|
||||||
|
# The return code of this call is the return
|
||||||
|
# code of the script.
|
||||||
|
# ===========================================
|
||||||
|
eval ${RUNPARALLELSCRIPT} ./t_pflush2
|
||||||
|
|
Loading…
Reference in New Issue
Block a user