mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-12-09 07:32:32 +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_init_term.c
|
||||
./testpar/testpar.h
|
||||
./testpar/testpflush.sh.in
|
||||
./testpar/testphdf5.c
|
||||
./testpar/testphdf5.h
|
||||
|
||||
|
@ -249,7 +249,7 @@ build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
|
||||
echo "**** Hint ****"; \
|
||||
echo "Parallel test files reside in the current directory" \
|
||||
"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 " export HDF5_PARAPREFIX"; \
|
||||
echo " make check"; \
|
||||
|
@ -3411,6 +3411,7 @@ AC_CONFIG_FILES([src/libhdf5.settings
|
||||
test/test_usecases.sh
|
||||
test/test_vol_plugin.sh
|
||||
testpar/Makefile
|
||||
testpar/testpflush.sh
|
||||
tools/Makefile
|
||||
tools/lib/Makefile
|
||||
tools/src/Makefile
|
||||
|
@ -102,7 +102,7 @@ qsub -I -q debug -l mppwidth=8
|
||||
- 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 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:
|
||||
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
|
||||
RUNPARALLEL then configure chooses `mpiexec' from the same directory as `mpicc':
|
||||
|
||||
RUNSERIAL: /usr/local/mpi/bin/mpiexec -np 1
|
||||
RUNPARALLEL: /usr/local/mpi/bin/mpiexec -np $${NPROCS:=6}
|
||||
RUNSERIAL: mpiexec -n 1
|
||||
RUNPARALLEL: mpiexec -n $${NPROCS:=6}
|
||||
|
||||
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).
|
||||
|
||||
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
|
||||
----------------------
|
||||
|
@ -613,7 +613,7 @@ h5_fixname_real(const char *base_name, hid_t fapl, const char *_suffix,
|
||||
printf("*** Hint ***\n"
|
||||
"You can use environment variable HDF5_PARAPREFIX to "
|
||||
"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"
|
||||
" export HDF5_PARAPREFIX\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
|
||||
|
||||
# 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_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 \
|
||||
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