[svn-r12292] Purpose:

Code maintenance

Description:
    Remove flexible parallel code

Platforms tested:
    FreeBSD 4.11 (sleipnir)
    Linux 2.4 (heping)
    Solaris 2.9 (shanti)
    Linux 2.4/64 (mir)
This commit is contained in:
Quincey Koziol 2006-04-20 18:54:47 -05:00
parent ad790bfa3c
commit d7573cbc85
37 changed files with 128 additions and 7671 deletions

View File

@ -449,8 +449,6 @@
./src/H5FDcore.h
./src/H5FDfamily.c
./src/H5FDfamily.h
./src/H5FDfphdf5.c
./src/H5FDfphdf5.h
./src/H5FDlog.c
./src/H5FDlog.h
./src/H5FDmpi.c
@ -473,11 +471,6 @@
./src/H5FLprivate.h
./src/H5FO.c
./src/H5FOprivate.h
./src/H5FP.c
./src/H5FPclient.c
./src/H5FPprivate.h
./src/H5FPpublic.h
./src/H5FPserver.c
./src/H5FS.c
./src/H5FSprivate.h
./src/H5G.c
@ -753,7 +746,6 @@
./testpar/t_cache.c
./testpar/t_dset.c
./testpar/t_file.c
./testpar/t_fphdf5.c
./testpar/t_mdset.c
./testpar/t_mpi.c
./testpar/t_ph5basic.c

97
configure vendored
View File

@ -1078,8 +1078,6 @@ Optional Features:
--enable-instrument Enable library instrumentation of optimization
tracing. Default=no if debug is disabled.
--enable-parallel Search for MPI-IO and MPI support files
--enable-fphdf5 Enable the Flexible Parallel HDF5 interface
[default=no]
--enable-filters=all Turn on all internal I/O filters. One may also
specify a comma-separated list of filters or the
word no. The default is all internal I/O filters.
@ -3532,7 +3530,7 @@ fi
# Provide some information about the compiler.
echo "$as_me:3535:" \
echo "$as_me:3533:" \
"checking for Fortran compiler version" >&5
ac_compiler=`set X $ac_compile; echo $2`
{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
@ -3827,7 +3825,7 @@ _ACEOF
# flags.
ac_save_FFLAGS=$FCFLAGS
FCFLAGS="$FCFLAGS $ac_verb"
(eval echo $as_me:3830: \"$ac_link\") >&5
(eval echo $as_me:3828: \"$ac_link\") >&5
ac_fc_v_output=`eval $ac_link 5>&1 2>&1 | grep -v 'Driving:'`
echo "$ac_fc_v_output" >&5
FCFLAGS=$ac_save_FFLAGS
@ -3905,7 +3903,7 @@ _ACEOF
# flags.
ac_save_FFLAGS=$FCFLAGS
FCFLAGS="$FCFLAGS $ac_cv_prog_fc_v"
(eval echo $as_me:3908: \"$ac_link\") >&5
(eval echo $as_me:3906: \"$ac_link\") >&5
ac_fc_v_output=`eval $ac_link 5>&1 2>&1 | grep -v 'Driving:'`
echo "$ac_fc_v_output" >&5
FCFLAGS=$ac_save_FFLAGS
@ -6484,7 +6482,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
echo '#line 6487 "configure"' > conftest.$ac_ext
echo '#line 6485 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@ -7614,7 +7612,7 @@ fi
# Provide some information about the compiler.
echo "$as_me:7617:" \
echo "$as_me:7615:" \
"checking for Fortran 77 compiler version" >&5
ac_compiler=`set X $ac_compile; echo $2`
{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
@ -8683,11 +8681,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:8686: $lt_compile\"" >&5)
(eval echo "\"\$as_me:8684: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:8690: \$? = $ac_status" >&5
echo "$as_me:8688: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@ -8938,11 +8936,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:8941: $lt_compile\"" >&5)
(eval echo "\"\$as_me:8939: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:8945: \$? = $ac_status" >&5
echo "$as_me:8943: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@ -8998,11 +8996,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:9001: $lt_compile\"" >&5)
(eval echo "\"\$as_me:8999: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:9005: \$? = $ac_status" >&5
echo "$as_me:9003: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -11270,7 +11268,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 11273 "configure"
#line 11271 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -11368,7 +11366,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 11371 "configure"
#line 11369 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -13604,11 +13602,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:13607: $lt_compile\"" >&5)
(eval echo "\"\$as_me:13605: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:13611: \$? = $ac_status" >&5
echo "$as_me:13609: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@ -13664,11 +13662,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:13667: $lt_compile\"" >&5)
(eval echo "\"\$as_me:13665: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:13671: \$? = $ac_status" >&5
echo "$as_me:13669: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -15083,7 +15081,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 15086 "configure"
#line 15084 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -15181,7 +15179,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 15184 "configure"
#line 15182 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -16036,11 +16034,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:16039: $lt_compile\"" >&5)
(eval echo "\"\$as_me:16037: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:16043: \$? = $ac_status" >&5
echo "$as_me:16041: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@ -16096,11 +16094,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:16099: $lt_compile\"" >&5)
(eval echo "\"\$as_me:16097: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:16103: \$? = $ac_status" >&5
echo "$as_me:16101: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -18152,11 +18150,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:18155: $lt_compile\"" >&5)
(eval echo "\"\$as_me:18153: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:18159: \$? = $ac_status" >&5
echo "$as_me:18157: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@ -18407,11 +18405,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:18410: $lt_compile\"" >&5)
(eval echo "\"\$as_me:18408: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:18414: \$? = $ac_status" >&5
echo "$as_me:18412: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@ -18467,11 +18465,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:18470: $lt_compile\"" >&5)
(eval echo "\"\$as_me:18468: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:18474: \$? = $ac_status" >&5
echo "$as_me:18472: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -20739,7 +20737,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 20742 "configure"
#line 20740 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -20837,7 +20835,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 20840 "configure"
#line 20838 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -49546,36 +49544,6 @@ cat >>confdefs.h <<\_ACEOF
#define HAVE_MPE 1
_ACEOF
fi
echo "$as_me:$LINENO: checking if Flexible Parallel HDF5 interface enabled" >&5
echo $ECHO_N "checking if Flexible Parallel HDF5 interface enabled... $ECHO_C" >&6
# Check whether --enable-fphdf5 or --disable-fphdf5 was given.
if test "${enable_fphdf5+set}" = set; then
enableval="$enable_fphdf5"
FPHDF5=$enableval
else
FPHDF5="no"
fi;
if test "X$FPHDF5" = "Xyes"; then
if test "X$${FPHDF5}" != "X" && test "X${HDF_FORTRAN}" != "X"; then
{ { echo "$as_me:$LINENO: error: --enable-fphdf5 and --enable-fortran flags are incompatible" >&5
echo "$as_me: error: --enable-fphdf5 and --enable-fortran flags are incompatible" >&2;}
{ (exit 1); exit 1; }; }
fi
cat >>confdefs.h <<\_ACEOF
#define HAVE_FPHDF5 1
_ACEOF
echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6
else
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
fi
echo "$as_me:$LINENO: checking if MPI_File_set_size works for files over 2GB" >&5
@ -53092,9 +53060,6 @@ PRINT "---------"
PRINT_N " dmalloc"
IF_YES_NO "$HAVE_DMALLOC"
PRINT_N " Flexible Parallel HDF"
IF_YES_NO "$FPHDF5"
PRINT_N " Function Stack Tracing"
IF_ENABLED_DISABLED "$FUNCSTACK"

View File

@ -2315,32 +2315,6 @@ if test -n "$PARALLEL"; then
AC_DEFINE([HAVE_MPE], [1], [Define if we have MPE support])
fi
dnl ----------------------------------------------------------------------
dnl Check if they would like the "Flexible parallel" interface enabled
dnl
AC_MSG_CHECKING([if Flexible Parallel HDF5 interface enabled])
AC_ARG_ENABLE([fphdf5],
[AC_HELP_STRING([--enable-fphdf5],
[Enable the Flexible Parallel HDF5
interface [default=no]])],
[FPHDF5=$enableval],
[FPHDF5="no"])
if test "X$FPHDF5" = "Xyes"; then
dnl The --enable-fphdf5 flag is not compatible with --enable-fortran.
dnl If the user tried to specify both flags, throw an error.
if test "X$${FPHDF5}" != "X" && test "X${HDF_FORTRAN}" != "X"; then
AC_MSG_ERROR([--enable-fphdf5 and --enable-fortran flags are incompatible])
fi
AC_DEFINE(HAVE_FPHDF5, 1,
[Define if we want flexible parallel HDF5 support])
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
dnl ----------------------------------------------------------------------
dnl Set the flag to indicate that the MPI_File_set_size() function
dnl works with files over 2GB, unless it's already set in the cache.
@ -3528,9 +3502,6 @@ PRINT "---------"
PRINT_N " dmalloc"
IF_YES_NO "$HAVE_DMALLOC"
PRINT_N " Flexible Parallel HDF"
IF_YES_NO "$FPHDF5"
PRINT_N " Function Stack Tracing"
IF_ENABLED_DISABLED "$FUNCSTACK"

View File

@ -35,10 +35,13 @@ New Features
Configuration:
--------------
- Remove the flexible parallel code and the --enable-fphdf5
configure option, it was never up to production standards
anyway. -QAK 2006/4/20
- Added a --enable-group-revision option to configure, to enable
segregating the ongoing work on changing the file format. DO
NOT ENABLE THIS OPTION! It is strictly for internal library
development!
development! -QAK 2006/4/14
.-"""""-.
/ \

View File

@ -64,11 +64,6 @@
#include "H5MMprivate.h" /* Memory management */
#include "H5Pprivate.h" /* Property lists */
#ifdef H5_HAVE_FPHDF5
#include "H5FDfphdf5.h" /* FPHDF5 File Driver */
#include "H5FPprivate.h" /* Flexible PHDF5 */
#endif /* H5_HAVE_FPHDF5 */
#define H5AC_DEBUG_DIRTY_BYTES_CREATION 0
/*-------------------------------------------------------------------------
@ -1315,79 +1310,6 @@ H5AC_set(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr, void *
info->type = type;
info->is_protected = FALSE;
#ifdef H5_HAVE_PARALLEL
#ifdef H5_HAVE_FPHDF5
/* In the flexible parallel case, the cache is always empty. Thus
* we simply flush and destroy entry we have just received.
*/
{
H5FD_t * lf;
unsigned req_id;
H5FP_status_t status;
HDassert(f->shared->lf);
lf = f->shared->lf;
if ( H5FD_is_fphdf5_driver(lf) ) {
/* Newly inserted entry are presumed to be dirty */
info->is_dirty = TRUE;
/*
* This is the FPHDF5 driver. Grab a lock for this piece of
* metadata from the SAP. Bail-out quickly if we're unable to do
* that. In the case of the FPHDF5 driver, the local cache is
* turned off. We lock the address then write the data to the SAP.
* We do this because the cache is off and thus cannot retain the
* data which has just been added to it. We will get it from the
* SAP as needed in the future.
*/
result = H5FP_request_lock(H5FD_fphdf5_file_id(lf), addr,
H5FP_LOCK_WRITE, TRUE, &req_id, &status);
if ( result < 0 ) {
#if 0
HDfprintf(stdout, "H5AC_set: Lock failed.\n");
/*
* FIXME: Check the status variable. If the lock is got
* by some other process, we can loop and wait or bail
* out of this function
*/
HDfprintf(stderr,
"Couldn't get lock for metadata at address %a\n",
addr);
#endif /* 0 */
HGOTO_ERROR(H5E_FPHDF5, H5E_CANTLOCK, FAIL, \
"can't lock data on SAP!")
}
/* write the metadata to the SAP. */
result = (info->type->flush)(f, dxpl_id, TRUE,
info->addr, info);
if ( result < 0 ) {
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, \
"unable to flush entry")
}
/* and then release the lock */
result = H5FP_request_release_lock(H5FD_fphdf5_file_id(lf), addr,
TRUE, &req_id, &status);
if ( result < 0 ) {
HGOTO_ERROR(H5E_FPHDF5, H5E_CANTUNLOCK, FAIL, \
"can't unlock data on SAP!")
}
HGOTO_DONE(SUCCEED);
}
}
#endif /* H5_HAVE_FPHDF5 */
#endif /* H5_HAVE_PARALLEL */
#ifdef H5_HAVE_PARALLEL
if ( NULL != (aux_ptr = f->shared->cache->aux_ptr) ) {
@ -1502,46 +1424,6 @@ H5AC_rename(H5F_t *f, const H5AC_class_t *type, haddr_t old_addr, haddr_t new_ad
HDassert(H5F_addr_defined(new_addr));
HDassert(H5F_addr_ne(old_addr, new_addr));
#ifdef H5_HAVE_PARALLEL
#ifdef H5_HAVE_FPHDF5
/* In the flexible parallel case, the cache is always empty.
* Thus H5AC_rename() has nothing to do by definition.
*/
{
H5FD_t * lf;
HDassert(f->shared->lf);
lf = f->shared->lf;
if ( H5FD_is_fphdf5_driver(lf) ) {
/* We really should mark the target entry as dirty here, but
* the parameter list doesn't give us the information we need
* to do the job easily.
*
* Fortunately, this function is called exactly once in the
* the library, so it may be possible to finesse the issue.
* If not, I'll have to fix this properly.
*
* In any case, don't check this code in without revisiting this
* issue.
* JRM -- 6/6/05
*
* On reflection, the code was already broken, as there was no
* way to advise the SAP that a renamed entry had changed its
* address, or was dirty. I will not worry about it for now,
* but the matter must be addressed if we ever get serious
* about FPHDF5.
* JRM -- 7/5/05
*/
HGOTO_DONE(SUCCEED);
}
}
#endif /* H5_HAVE_FPHDF5 */
#endif /* H5_HAVE_PARALLEL */
#ifdef H5_HAVE_PARALLEL
if ( NULL != (aux_ptr = f->shared->cache->aux_ptr) ) {
@ -1657,11 +1539,7 @@ H5AC_protect(H5F_t *f,
haddr_t addr,
const void *udata1,
void *udata2,
H5AC_protect_t
#ifndef H5_HAVE_FPHDF5
UNUSED
#endif /* H5_HAVE_FPHDF5 */
rw)
H5AC_protect_t UNUSED rw)
{
void * thing = NULL;
void * ret_value; /* Return value */
@ -1676,100 +1554,6 @@ H5AC_protect(H5F_t *f,
HDassert(type->load);
HDassert(H5F_addr_defined(addr));
#ifdef H5_HAVE_PARALLEL
#ifdef H5_HAVE_FPHDF5
/* The following code to support flexible parallel is a direct copy
* from the old version of the cache with slight edits. It should
* be viewed with as much suspicion as the rest of the FP code.
* JRM - 5/26/04
*/
{
H5FD_t * lf;
unsigned req_id;
H5FP_status_t status;
H5AC_info_t * info;
HDassert(f->shared->lf);
lf = f->shared->lf;
if ( H5FD_is_fphdf5_driver(lf) ) {
/*
* This is the FPHDF5 driver. Grab a lock for this piece of
* metadata from the SAP. Bail-out quickly if we're unable to do
* that. In the case of the FPHDF5 driver, the local cache is
* effectively turned off. We lock the address then load the data
* from the SAP (or file) directly. We do this because at any one
* time the data on the SAP will be different than what's on the
* local process.
*/
if ( H5FP_request_lock(H5FD_fphdf5_file_id(lf), addr,
rw == H5AC_WRITE ? H5FP_LOCK_WRITE : H5FP_LOCK_READ,
TRUE, &req_id, &status) < 0) {
#if 0
HDfprintf(stdout, "H5AC_protect: Lock failed.\n");
/*
* FIXME: Check the status variable. If the lock is got
* by some other process, we can loop and wait or bail
* out of this function
*/
HDfprintf(stderr,
"Couldn't get lock for metadata at address %a\n",
addr);
#endif /* 0 */
HGOTO_ERROR(H5E_FPHDF5, H5E_CANTLOCK, NULL, \
"can't lock data on SAP!")
}
/* Load a thing from the SAP. */
if ( NULL == (thing = type->load(f, dxpl_id, addr,
udata1, udata2)) ) {
#if 0
HDfprintf(stdout,
"%s: Load failed. addr = %a, type->id = %d.\n",
"H5AC_protect",
addr,
(int)(type->id));
#endif /* 0 */
HCOMMON_ERROR(H5E_CACHE, H5E_CANTLOAD, "unable to load object")
if (H5FP_request_release_lock(H5FD_fphdf5_file_id(lf), addr,
TRUE, &req_id, &status) < 0)
HGOTO_ERROR(H5E_FPHDF5, H5E_CANTUNLOCK, NULL, \
"can't unlock data on SAP!")
HGOTO_DONE(NULL)
}
info = (H5AC_info_t *)thing;
HDassert(info->is_dirty == FALSE);
info->addr = addr;
info->type = type;
info->is_protected = TRUE;
if ( (type->size)(f, thing, &(info->size)) < 0 ) {
HGOTO_ERROR(H5E_RESOURCE, H5E_CANTGETSIZE, NULL, \
"Can't get size of thing")
}
HDassert(info->size < H5C_MAX_ENTRY_SIZE);
info->next = NULL;
info->prev = NULL;
info->aux_next = NULL;
info->aux_prev = NULL;
HGOTO_DONE(thing)
}
}
#endif /* H5_HAVE_FPHDF5 */
#endif /* H5_HAVE_PARALLEL */
thing = H5C_protect(f,
dxpl_id,
H5AC_noblock_dxpl_id,
@ -1921,79 +1705,6 @@ H5AC_unprotect(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr,
}
}
#ifdef H5_HAVE_PARALLEL
#ifdef H5_HAVE_FPHDF5
/* The following code to support flexible parallel is a direct copy
* from the old version of the cache with slight edits. It should
* be viewed with as much suspicion as the rest of the FP code.
* JRM - 5/26/04
*/
{
H5FD_t * lf;
unsigned req_id;
H5FP_status_t status;
HDassert(f->shared->lf);
lf = f->shared->lf;
if ( H5FD_is_fphdf5_driver(lf) ) {
HDassert( ((H5AC_info_t *)thing)->is_protected );
((H5AC_info_t *)thing)->is_protected = FALSE;
/* mark the entry as dirty if appropriate. JRM - 6/6/05 */
((H5AC_info_t *)thing)->is_dirty |=
(flags & H5AC__DIRTIED_FLAG) ? TRUE : FALSE;
/*
* FIXME: If the metadata is *really* deleted at this point
* (deleted == TRUE), we need to send a request to the SAP
* telling it to remove that bit of metadata from its cache.
*/
/* the deleted parameter has been replaced with the flags
* parameter. The actual value of deleted is still passed
* in as a bit in flags. If it is needed, it can be extracted
* as follows:
*
* deleted = ( (flags & H5C__DELETED_FLAG) != 0 );
*
* JRM -- 1/6/05
*/
if ( H5FP_request_release_lock(H5FD_fphdf5_file_id(lf), addr,
TRUE, &req_id, &status) < 0 )
HGOTO_ERROR(H5E_FPHDF5, H5E_CANTUNLOCK, FAIL, \
"can't unlock data on SAP!")
/* Flush a thing to the SAP */
if ( thing ) {
if ( ((H5AC_info_t *)thing)->is_dirty ) {
if ( type->flush(f, dxpl_id, FALSE, addr, thing) < 0 ) {
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, \
"unable to flush object")
}
}
/* Always clear/delete the object from the local cache */
if ( type->clear(f, thing, TRUE) < 0 ) {
HGOTO_ERROR(H5E_CACHE, H5E_CANTFREE, FAIL, \
"unable to free object")
}
}
/* Exit now. The FPHDF5 stuff is finished. */
HGOTO_DONE(SUCCEED)
}
}
#endif /* H5_HAVE_FPHDF5 */
#endif /* H5_HAVE_PARALLEL */
#ifdef H5_HAVE_PARALLEL
if ( ( dirtied ) && ( ((H5AC_info_t *)thing)->is_dirty == FALSE ) &&
( NULL != (aux_ptr = f->shared->cache->aux_ptr) ) ) {

View File

@ -80,8 +80,7 @@ const H5AC_class_t H5AC_BT[1] = {{
/*-------------------------------------------------------------------------
* Function: H5B_serialize
*
* Purpose: Serialize the data structure for writing to disk or
* storing on the SAP (for FPHDF5).
* Purpose: Serialize the data structure for writing to disk.
*
* Return: Success: SUCCEED
* Failure: FAIL

View File

@ -7026,7 +7026,7 @@ H5C_flush_single_entry(H5F_t * f,
}
/* Sanity check transfer mode */
HDassert( xfer_mode == H5FD_MPIO_COLLECTIVE || IS_H5FD_FPHDF5(f) );
HDassert( xfer_mode == H5FD_MPIO_COLLECTIVE );
}
#endif /* NDEBUG */

View File

@ -4068,7 +4068,7 @@ H5D_flush(const H5F_t *f, hid_t dxpl_id, unsigned flags)
case H5D_CHUNKED:
/* Flush the raw data cache */
if (H5D_istore_flush(dataset, dxpl_id, flags & (H5F_FLUSH_INVALIDATE | H5F_FLUSH_CLEAR_ONLY)) < 0)
if (H5D_istore_flush(dataset, dxpl_id, flags & H5F_FLUSH_INVALIDATE) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush raw data cache")
break;

View File

@ -1352,11 +1352,7 @@ H5D_istore_flush (H5D_t *dset, hid_t dxpl_id, unsigned flags)
for (ent=rdcc->head; ent; ent=next) {
next = ent->next;
if ((flags&H5F_FLUSH_CLEAR_ONLY)) {
/* Just mark cache entry as clean */
ent->dirty = FALSE;
} /* end if */
else if ((flags&H5F_FLUSH_INVALIDATE)) {
if ((flags&H5F_FLUSH_INVALIDATE)) {
if (H5D_istore_preempt(&io_info, ent, TRUE )<0)
nerrors++;
} else {

View File

@ -24,7 +24,6 @@ hid_t H5E_DATASET_g = FAIL; /* Dataset */
hid_t H5E_FUNC_g = FAIL; /* Function entry/exit */
hid_t H5E_STORAGE_g = FAIL; /* Data storage */
hid_t H5E_FILE_g = FAIL; /* File accessability */
hid_t H5E_FPHDF5_g = FAIL; /* Flexible Parallel HDF5 */
hid_t H5E_SYM_g = FAIL; /* Symbol table */
hid_t H5E_VFL_g = FAIL; /* Virtual File Layer */
hid_t H5E_INTERNAL_g = FAIL; /* Internal error (too specific to document in detail) */
@ -61,6 +60,7 @@ hid_t H5E_FCNTL_g = FAIL; /* File control (fcntl) failed */
/* Resource errors */
hid_t H5E_NOSPACE_g = FAIL; /* No space available for allocation */
hid_t H5E_CANTALLOC_g = FAIL; /* Can't allocate space */
hid_t H5E_CANTCOPY_g = FAIL; /* Unable to copy object */
hid_t H5E_CANTFREE_g = FAIL; /* Unable to free object */
hid_t H5E_ALREADYEXISTS_g = FAIL; /* Object already exists */
@ -93,12 +93,6 @@ hid_t H5E_CANTDELETE_g = FAIL; /* Can't delete message */
hid_t H5E_BADITER_g = FAIL; /* Iteration failed */
hid_t H5E_CANTPACK_g = FAIL; /* Can't pack messages */
/* FPHDF5 errors */
hid_t H5E_CANTRECV_g = FAIL; /* Can't receive messages from processes */
hid_t H5E_CANTSENDMDATA_g = FAIL; /* Can't send metadata message */
hid_t H5E_CANTCHANGE_g = FAIL; /* Can't register change with server */
hid_t H5E_CANTALLOC_g = FAIL; /* Can't allocate from file */
/* System level errors */
hid_t H5E_SYSERRSTR_g = FAIL; /* System error message */

View File

@ -43,11 +43,6 @@ if((msg = H5E_create_msg(cls, H5E_MAJOR, "File accessability"))==NULL)
HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed")
if((H5E_FILE_g = H5I_register(H5I_ERROR_MSG, msg))<0)
HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message")
assert(H5E_FPHDF5_g==(-1));
if((msg = H5E_create_msg(cls, H5E_MAJOR, "Flexible Parallel HDF5"))==NULL)
HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed")
if((H5E_FPHDF5_g = H5I_register(H5I_ERROR_MSG, msg))<0)
HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message")
assert(H5E_SYM_g==(-1));
if((msg = H5E_create_msg(cls, H5E_MAJOR, "Symbol table"))==NULL)
HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed")
@ -207,6 +202,11 @@ if((msg = H5E_create_msg(cls, H5E_MINOR, "No space available for allocation"))==
HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed")
if((H5E_NOSPACE_g = H5I_register(H5I_ERROR_MSG, msg))<0)
HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message")
assert(H5E_CANTALLOC_g==(-1));
if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't allocate space"))==NULL)
HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed")
if((H5E_CANTALLOC_g = H5I_register(H5I_ERROR_MSG, msg))<0)
HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message")
assert(H5E_CANTCOPY_g==(-1));
if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to copy object"))==NULL)
HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed")
@ -331,28 +331,6 @@ if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't pack messages"))==NULL)
if((H5E_CANTPACK_g = H5I_register(H5I_ERROR_MSG, msg))<0)
HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message")
/* FPHDF5 errors */
assert(H5E_CANTRECV_g==(-1));
if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't receive messages from processes"))==NULL)
HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed")
if((H5E_CANTRECV_g = H5I_register(H5I_ERROR_MSG, msg))<0)
HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message")
assert(H5E_CANTSENDMDATA_g==(-1));
if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't send metadata message"))==NULL)
HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed")
if((H5E_CANTSENDMDATA_g = H5I_register(H5I_ERROR_MSG, msg))<0)
HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message")
assert(H5E_CANTCHANGE_g==(-1));
if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't register change with server"))==NULL)
HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed")
if((H5E_CANTCHANGE_g = H5I_register(H5I_ERROR_MSG, msg))<0)
HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message")
assert(H5E_CANTALLOC_g==(-1));
if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't allocate from file"))==NULL)
HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed")
if((H5E_CANTALLOC_g = H5I_register(H5I_ERROR_MSG, msg))<0)
HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message")
/* System level errors */
assert(H5E_SYSERRSTR_g==(-1));
if((msg = H5E_create_msg(cls, H5E_MINOR, "System error message"))==NULL)

View File

@ -27,7 +27,6 @@
#define H5E_FUNC (H5OPEN H5E_FUNC_g)
#define H5E_STORAGE (H5OPEN H5E_STORAGE_g)
#define H5E_FILE (H5OPEN H5E_FILE_g)
#define H5E_FPHDF5 (H5OPEN H5E_FPHDF5_g)
#define H5E_SYM (H5OPEN H5E_SYM_g)
#define H5E_VFL (H5OPEN H5E_VFL_g)
#define H5E_INTERNAL (H5OPEN H5E_INTERNAL_g)
@ -55,7 +54,6 @@ H5_DLLVAR hid_t H5E_DATASET_g; /* Dataset */
H5_DLLVAR hid_t H5E_FUNC_g; /* Function entry/exit */
H5_DLLVAR hid_t H5E_STORAGE_g; /* Data storage */
H5_DLLVAR hid_t H5E_FILE_g; /* File accessability */
H5_DLLVAR hid_t H5E_FPHDF5_g; /* Flexible Parallel HDF5 */
H5_DLLVAR hid_t H5E_SYM_g; /* Symbol table */
H5_DLLVAR hid_t H5E_VFL_g; /* Virtual File Layer */
H5_DLLVAR hid_t H5E_INTERNAL_g; /* Internal error (too specific to document in detail) */
@ -100,6 +98,7 @@ H5_DLLVAR hid_t H5E_FCNTL_g; /* File control (fcntl) failed */
/* Resource errors */
#define H5E_NOSPACE (H5OPEN H5E_NOSPACE_g)
#define H5E_CANTALLOC (H5OPEN H5E_CANTALLOC_g)
#define H5E_CANTCOPY (H5OPEN H5E_CANTCOPY_g)
#define H5E_CANTFREE (H5OPEN H5E_CANTFREE_g)
#define H5E_ALREADYEXISTS (H5OPEN H5E_ALREADYEXISTS_g)
@ -108,6 +107,7 @@ H5_DLLVAR hid_t H5E_FCNTL_g; /* File control (fcntl) failed */
#define H5E_CANTGC (H5OPEN H5E_CANTGC_g)
#define H5E_CANTGETSIZE (H5OPEN H5E_CANTGETSIZE_g)
H5_DLLVAR hid_t H5E_NOSPACE_g; /* No space available for allocation */
H5_DLLVAR hid_t H5E_CANTALLOC_g; /* Can't allocate space */
H5_DLLVAR hid_t H5E_CANTCOPY_g; /* Unable to copy object */
H5_DLLVAR hid_t H5E_CANTFREE_g; /* Unable to free object */
H5_DLLVAR hid_t H5E_ALREADYEXISTS_g; /* Object already exists */
@ -156,16 +156,6 @@ H5_DLLVAR hid_t H5E_CANTDELETE_g; /* Can't delete message */
H5_DLLVAR hid_t H5E_BADITER_g; /* Iteration failed */
H5_DLLVAR hid_t H5E_CANTPACK_g; /* Can't pack messages */
/* FPHDF5 errors */
#define H5E_CANTRECV (H5OPEN H5E_CANTRECV_g)
#define H5E_CANTSENDMDATA (H5OPEN H5E_CANTSENDMDATA_g)
#define H5E_CANTCHANGE (H5OPEN H5E_CANTCHANGE_g)
#define H5E_CANTALLOC (H5OPEN H5E_CANTALLOC_g)
H5_DLLVAR hid_t H5E_CANTRECV_g; /* Can't receive messages from processes */
H5_DLLVAR hid_t H5E_CANTSENDMDATA_g; /* Can't send metadata message */
H5_DLLVAR hid_t H5E_CANTCHANGE_g; /* Can't register change with server */
H5_DLLVAR hid_t H5E_CANTALLOC_g; /* Can't allocate from file */
/* System level errors */
#define H5E_SYSERRSTR (H5OPEN H5E_SYSERRSTR_g)
H5_DLLVAR hid_t H5E_SYSERRSTR_g; /* System error message */

View File

@ -25,7 +25,6 @@ H5E_DATASET_g=
H5E_FUNC_g=
H5E_STORAGE_g=
H5E_FILE_g=
H5E_FPHDF5_g=
H5E_SYM_g=
H5E_VFL_g=
H5E_INTERNAL_g=
@ -63,6 +62,7 @@ H5E_FCNTL_g=
/* Resource errors */
H5E_NOSPACE_g=
H5E_CANTALLOC_g=
H5E_CANTCOPY_g=
H5E_CANTFREE_g=
H5E_ALREADYEXISTS_g=
@ -95,12 +95,6 @@ H5E_CANTDELETE_g=
H5E_BADITER_g=
H5E_CANTPACK_g=
/* FPHDF5 errors */
H5E_CANTRECV_g=
H5E_CANTSENDMDATA_g=
H5E_CANTCHANGE_g=
H5E_CANTALLOC_g=
/* System level errors */
H5E_SYSERRSTR_g=

226
src/H5F.c
View File

@ -27,7 +27,6 @@
#include "H5Fpkg.h" /* File access */
#include "H5FDprivate.h" /* File drivers */
#include "H5FLprivate.h" /* Free lists */
#include "H5FPprivate.h" /* Flexible parallel */
#include "H5Gprivate.h" /* Groups */
#include "H5Iprivate.h" /* IDs */
#include "H5MMprivate.h" /* Memory management */
@ -1889,127 +1888,35 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id, hid_t d
* empty or not.
*/
if (0==H5FD_get_eof(lf) && (flags & H5F_ACC_RDWR)) {
#ifdef H5_HAVE_FPHDF5
hsize_t buf_size=0; /* Size of buffer needed to hold superblock info */
#endif /* H5_HAVE_FPHDF5 */
void *buf=NULL; /* Buffer to hold superblock info */
/*
* We've just opened a fresh new file (or truncated one). We need
* to create & write the superblock.
*/
#ifdef H5_HAVE_FPHDF5
if (!H5FD_is_fphdf5_driver(lf) || H5FD_fphdf5_is_captain(lf)) {
#endif /* H5_HAVE_FPHDF5 */
/* Initialize information about the superblock and allocate space for it */
if ((
#ifdef H5_HAVE_FPHDF5
buf_size=
#endif /* H5_HAVE_FPHDF5 */
H5F_init_superblock(file, dxpl_id)) == 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, NULL, "unable to allocate file superblock")
/* Initialize information about the superblock and allocate space for it */
if (H5F_init_superblock(file, dxpl_id) == 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, NULL, "unable to allocate file superblock")
/* Create and open the root group */
/* (This must be after the space for the superblock is allocated in
* the file)
*/
if (H5G_mkroot(file, dxpl_id, NULL)<0)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, NULL, "unable to create/open root group")
#ifdef H5_HAVE_FPHDF5
if (H5FD_is_fphdf5_driver(lf)) {
/* Allocate room for the superblock buffer */
H5_CHECK_OVERFLOW(buf_size, hsize_t, size_t);
if((buf=H5MM_malloc((size_t)buf_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed for superblock buffer")
} /* end if */
#endif /* H5_HAVE_FPHDF5 */
/* Write the superblock to the file */
/* (This must be after the root group is created, since the root
* group's symbol table entry is part of the superblock)
*/
if (H5F_write_superblock(file, dxpl_id, buf) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, NULL, "unable to write file superblock")
#ifdef H5_HAVE_FPHDF5
} /* end if */
/* If this file is using the FPHDF5 driver, broadcast the superblock
* from the captain to the other clients
/* Create and open the root group */
/* (This must be after the space for the superblock is allocated in
* the file)
*/
if (H5FD_is_fphdf5_driver(lf)) {
int mrc; /*MPI return code */
H5FP_super_t super_info; /* Superblock information */
if (H5G_mkroot(file, dxpl_id, NULL)<0)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, NULL, "unable to create/open root group")
/* Captain sets up the information */
if (H5FD_fphdf5_is_captain(lf)) {
super_info.addr=shared->super_addr;
super_info.size=buf_size;
} /* end if */
/* Write the superblock to the file */
/* (This must be after the root group is created, since the root
* group's symbol table entry is part of the superblock)
*/
if (H5F_write_superblock(file, dxpl_id, buf) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, NULL, "unable to write file superblock")
/* Broadcast the superblock information */
if ((mrc = MPI_Bcast(&super_info, 1, H5FP_super, (int)H5FP_capt_barrier_rank,
H5FP_SAP_BARRIER_COMM)) != MPI_SUCCESS)
HMPI_GOTO_ERROR(NULL, "MPI_Bcast failed", mrc)
/* Non-captain clients allocate the buffer now */
if (!H5FD_fphdf5_is_captain(lf)) {
/* Allocate room for the superblock buffer */
H5_CHECK_OVERFLOW(super_info.size, hsize_t, size_t);
if((buf = H5MM_malloc((size_t)super_info.size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed for superblock buffer")
} /* end if */
/* Broadcast the actual superblock */
H5_CHECK_OVERFLOW(super_info.size, hsize_t, int);
if ((mrc = MPI_Bcast(buf, (int)super_info.size, MPI_BYTE, (int)H5FP_capt_barrier_rank,
H5FP_SAP_BARRIER_COMM)) != MPI_SUCCESS)
HMPI_GOTO_ERROR(NULL, "MPI_Bcast failed", mrc)
if (!H5FD_fphdf5_is_captain(lf)) {
if (H5F_read_superblock(file, dxpl_id, &root_loc, super_info.addr,
buf, (size_t)super_info.size) < 0)
HGOTO_ERROR(H5E_FILE, H5E_READERROR, NULL, "unable to read superblock")
}
/* The following barrier ensures that all set eoa operations
* associated with creating the superblock are complete before
* we attempt any allocations.
* JRM - 4/13/04
*/
if ( (mrc = MPI_Barrier(H5FP_SAP_BARRIER_COMM)) != MPI_SUCCESS )
HMPI_GOTO_ERROR(NULL, "MPI_Barrier failed", mrc)
if (!H5FD_fphdf5_is_captain(lf)) {
if (H5G_mkroot(file, dxpl_id, &root_loc) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, NULL, "unable to create/open root group")
}
/* All clients free the buffer used for broadcasting the superblock */
buf = H5MM_xfree (buf);
} /* end if */
#endif /* H5_HAVE_FPHDF5 */
} else if (1 == shared->nrefs) {
#ifdef H5_HAVE_FPHDF5
int mrc; /*MPI return code */
#endif /* H5_HAVE_FPHDF5 */
/* Read the superblock if it hasn't been read before. */
if(H5F_read_superblock(file, dxpl_id, &root_loc, HADDR_UNDEF, NULL, (size_t)0) < 0)
HGOTO_ERROR(H5E_FILE, H5E_READERROR, NULL, "unable to read superblock")
#ifdef H5_HAVE_FPHDF5
if (H5FD_is_fphdf5_driver(lf)) {
/* reading the superblock generates lots of set_eoa calls. To avoid
* race conditions with allocations, make sure that everyone is done
* reading the superblock before we proceed.
*/
if ( (mrc = MPI_Barrier(H5FP_SAP_BARRIER_COMM)) != MPI_SUCCESS )
HMPI_GOTO_ERROR(NULL, "MPI_Barrier failed", mrc)
} /* end if */
#endif /* H5_HAVE_FPHDF5 */
/* Make sure we can open the root group */
if (H5G_mkroot(file, dxpl_id, &root_loc)<0)
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to read root group")
@ -2430,21 +2337,9 @@ H5F_flush(H5F_t *f, hid_t dxpl_id, H5F_scope_t scope, unsigned flags)
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush dataset cache")
/* flush (and invalidate) the entire meta data cache */
/*
* FIXME: This should be CLEAR_ONLY for non-captain processes.
* Need to fix the H5G_mkroot() call so that only the captain
* allocates object headers (calls the H5O_init function...via a
* lot of other functions first)....
*/
H5AC_flags = 0;
if ( (flags & H5F_FLUSH_INVALIDATE) != 0 )
H5AC_flags |= H5AC__FLUSH_INVALIDATE_FLAG;
if ( (flags & H5F_FLUSH_CLEAR_ONLY) != 0 )
H5AC_flags |= H5AC__FLUSH_CLEAR_ONLY_FLAG;
if (H5AC_flush(f, dxpl_id, H5AC_flags) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush meta data cache")
@ -2454,53 +2349,29 @@ H5F_flush(H5F_t *f, hid_t dxpl_id, H5F_scope_t scope, unsigned flags)
* "small data" blocks back to the free lists in the file.
*/
if (flags & H5F_FLUSH_INVALIDATE) {
#ifdef H5_HAVE_FPHDF5
/*
* If this is not the SAP, then we want to send a "free"
* command to the SAP to free up the EOMA and EOSDA
* information. This might also update the EOA information on
* the clients...
*/
if (H5FD_is_fphdf5_driver(f->shared->lf) && !H5FD_fphdf5_is_sap(f->shared->lf)) {
unsigned req_id = 0;
H5FP_status_t status = H5FP_STATUS_OK;
if (f->shared->lf->feature_flags & H5FD_FEAT_AGGREGATE_METADATA) {
/* Return the unused portion of the metadata block to a free list */
if (f->shared->lf->eoma != 0)
if (H5FD_free(f->shared->lf, H5FD_MEM_DEFAULT, dxpl_id,
f->shared->lf->eoma, f->shared->lf->cur_meta_block_size) < 0)
HGOTO_ERROR(H5E_VFL, H5E_CANTFREE, FAIL, "can't free metadata block")
/* Send the request to the SAP */
if (H5FP_request_update_eoma_eosda(f->shared->lf,
&req_id, &status) != SUCCEED)
/* FIXME: Should we check the "status" variable here? */
HGOTO_ERROR(H5E_FPHDF5, H5E_CANTFREE, FAIL,
"server couldn't free from file")
} else {
#endif /* H5_HAVE_FPHDF5 */
/* Reset metadata block information, just in case */
f->shared->lf->eoma=0;
f->shared->lf->cur_meta_block_size=0;
} /* end if */
if (f->shared->lf->feature_flags & H5FD_FEAT_AGGREGATE_METADATA) {
/* Return the unused portion of the metadata block to a free list */
if (f->shared->lf->eoma != 0)
if (H5FD_free(f->shared->lf, H5FD_MEM_DEFAULT, dxpl_id,
f->shared->lf->eoma, f->shared->lf->cur_meta_block_size) < 0)
HGOTO_ERROR(H5E_VFL, H5E_CANTFREE, FAIL, "can't free metadata block")
if (f->shared->lf->feature_flags & H5FD_FEAT_AGGREGATE_SMALLDATA) {
/* Return the unused portion of the "small data" block to a free list */
if (f->shared->lf->eosda != 0)
if (H5FD_free(f->shared->lf, H5FD_MEM_DRAW, dxpl_id,
f->shared->lf->eosda, f->shared->lf->cur_sdata_block_size) < 0)
HGOTO_ERROR(H5E_VFL, H5E_CANTFREE, FAIL, "can't free 'small data' block")
/* Reset metadata block information, just in case */
f->shared->lf->eoma=0;
f->shared->lf->cur_meta_block_size=0;
} /* end if */
if (f->shared->lf->feature_flags & H5FD_FEAT_AGGREGATE_SMALLDATA) {
/* Return the unused portion of the "small data" block to a free list */
if (f->shared->lf->eosda != 0)
if (H5FD_free(f->shared->lf, H5FD_MEM_DRAW, dxpl_id,
f->shared->lf->eosda, f->shared->lf->cur_sdata_block_size) < 0)
HGOTO_ERROR(H5E_VFL, H5E_CANTFREE, FAIL, "can't free 'small data' block")
/* Reset "small data" block information, just in case */
f->shared->lf->eosda=0;
f->shared->lf->cur_sdata_block_size=0;
} /* end if */
#ifdef H5_HAVE_FPHDF5
}
#endif /* H5_HAVE_FPHDF5 */
/* Reset "small data" block information, just in case */
f->shared->lf->eosda=0;
f->shared->lf->cur_sdata_block_size=0;
} /* end if */
} /* end if */
/* Write the superblock to disk */
@ -2737,31 +2608,10 @@ H5F_try_close(H5F_t *f)
/* Flush at this point since the file will be closed */
/* (Only try to flush the file if it was opened with write access) */
if(f->intent&H5F_ACC_RDWR) {
#ifdef H5_HAVE_FPHDF5
/*
* We only want the captain to perform the flush of the metadata
* to the file.
*/
if (!H5FD_is_fphdf5_driver(f->shared->lf) ||
H5FD_fphdf5_is_captain(f->shared->lf)) {
#endif /* H5_HAVE_FPHDF5 */
/* Flush and destroy all caches */
if (H5F_flush(f, H5AC_dxpl_id, H5F_SCOPE_LOCAL,
H5F_FLUSH_INVALIDATE | H5F_FLUSH_CLOSING) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush cache")
#ifdef H5_HAVE_FPHDF5
} else {
/*
* If this isn't the captain process, flush but only clear
* the flags.
*/
if (H5F_flush(f, H5AC_dxpl_id, H5F_SCOPE_LOCAL,
H5F_FLUSH_INVALIDATE | H5F_FLUSH_CLOSING | H5F_FLUSH_CLEAR_ONLY) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush cache")
} /* end if */
#endif /* H5_HAVE_FPHDF5 */
/* Flush and destroy all caches */
if (H5F_flush(f, H5AC_dxpl_id, H5F_SCOPE_LOCAL,
H5F_FLUSH_INVALIDATE | H5F_FLUSH_CLOSING) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush cache")
} /* end if */
/*

View File

@ -44,9 +44,6 @@
#include "H5FDstdio.h" /* Standard C buffered I/O */
#include "H5FDstream.h" /* In-memory files streamed via sockets */
#include "H5FLprivate.h" /* Free lists */
#ifdef H5_HAVE_FPHDF5
#include "H5FPprivate.h" /* Flexible Parallel HDF5 */
#endif /* H5_HAVE_FPHDF5 */
#include "H5Iprivate.h" /* IDs */
#include "H5MMprivate.h" /* Memory management */
#include "H5Pprivate.h" /* Property lists */
@ -169,9 +166,6 @@ H5FD_term_interface(void)
#ifdef H5_HAVE_PARALLEL
H5FD_mpio_term();
H5FD_mpiposix_term();
#ifdef H5_HAVE_FPHDF5
H5FD_fphdf5_term();
#endif /* H5_HAVE_FPHDF5 */
#endif /* H5_HAVE_PARALLEL */
#ifdef H5_HAVE_STREAM
H5FD_stream_term();
@ -1484,14 +1478,6 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_alloc
* Purpose: Private version of H5FDalloc().
*
* For FPHDF5, the dxpl_id is meaningless. The only place it
* is likely to be used is in the H5FD_free() function where
* it can make a call to H5FD_write() (which needs this
* property list). FPHDF5 doesn't have metadata accumulation
* turned on, so it won't ever call the H5FD_write()
* function.
*
* Return: Success: The format address of the new file memory.
* Failure: The undefined address HADDR_UNDEF
* Programmer: Robb Matzke
@ -1526,25 +1512,6 @@ H5FD_alloc(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size)
assert(type >= H5FD_MEM_DEFAULT && type < H5FD_MEM_NTYPES);
assert(size > 0);
#ifdef H5_HAVE_FPHDF5
/*
* When we're using the FPHDF5 driver, allocate from the SAP. If this
* is the SAP executing this code, then skip the send to the SAP and
* try to do the actual allocations.
*/
if ( H5FD_is_fphdf5_driver(file) && !H5FD_fphdf5_is_sap(file) ) {
haddr_t addr;
if ( (addr = H5FP_client_alloc(file, type, dxpl_id, size))
== HADDR_UNDEF) {
HGOTO_ERROR(H5E_FPHDF5, H5E_CANTALLOC, HADDR_UNDEF,
"allocation failed.")
} else {
HGOTO_DONE(addr)
}
}
#endif /* H5_HAVE_FPHDF5 */
#ifdef H5F_DEBUG
if (H5DEBUG(F))
HDfprintf(H5DEBUG(F), "%s: alignment=%Hd, threshold=%Hd, size=%Hd\n",
@ -2251,26 +2218,6 @@ H5FD_free(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, hsize_t si
assert(file->cls);
assert(type >= H5FD_MEM_DEFAULT && type < H5FD_MEM_NTYPES);
#ifdef H5_HAVE_FPHDF5
/*
* When we're using the FPHDF5 driver, free with the SAP. If this
* is the SAP executing this code, then skip the send to the SAP and
* try to do the actual free.
*/
if (H5FD_is_fphdf5_driver(file) && !H5FD_fphdf5_is_sap(file)) {
unsigned req_id;
H5FP_status_t status;
/* Send the request to the SAP */
if (H5FP_request_free(file, type, addr, size, &req_id, &status) != SUCCEED)
/* FIXME: Should we check the "status" variable here? */
HGOTO_ERROR(H5E_FPHDF5, H5E_CANTFREE, FAIL, "server couldn't free from file")
/* We've succeeded -- return the value */
HGOTO_DONE(ret_value)
}
#endif /* H5_HAVE_FPHDF5 */
if (!H5F_addr_defined(addr) || addr>file->maxaddr ||
H5F_addr_overflow(addr, size) || addr+size>file->maxaddr)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid region")

File diff suppressed because it is too large Load Diff

View File

@ -1,122 +0,0 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* 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 files COPYING and Copyright.html. COPYING can be found at the root *
* of the source code distribution tree; Copyright.html can be found at the *
* root level of an installed copy of the electronic HDF5 document set and *
* is linked from the top-level documents page. It can also be found at *
* http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
* access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef H5FDFPHDF5_H__
#define H5FDFPHDF5_H__
#ifdef H5_HAVE_FPHDF5
# define H5FD_FPHDF5 (H5FD_fphdf5_init())
#else
# define H5FD_FPHDF5 (-1)
#endif /* H5_HAVE_FPHDF5 */
/* Macros */
#ifndef H5_HAVE_FPHDF5
/* If FPHDF5 isn't specified, make this a "FALSE" value */
#define IS_H5FD_FPHDF5(f) (0)
#else
#define IS_H5FD_FPHDF5(f) (H5F_get_driver_id(f) == H5FD_FPHDF5)
/* Turn on H5FDfphdf5_debug if H5F_DEBUG is on */
#if defined(H5F_DEBUG) && !defined(H5FDfphdf5_DEBUG)
# define H5FDfphdf5_DEBUG
#endif /* H5F_DEBUG && ! H5FDfphdf5_DEBUG */
#define H5FD_FPHDF5_XFER_DUMPING_METADATA "H5FD_fphdf5_dumping_metadata"
#define H5FD_FPHDF5_XFER_DUMPING_SIZE sizeof(unsigned)
/*
* For specifying that only the captain is allowed to allocate things at
* this time.
*/
#define H5FD_FPHDF5_CAPTN_ALLOC_ONLY "Only_Captain_Alloc"
#define H5FD_FPHDF5_CAPTN_ALLOC_SIZE sizeof(unsigned)
/*
* The description of a file belonging to this driver.
*
* The FILE_ID field is an SAP defined value. When reading/writing to the
* SAP, this value should be sent.
*
* The EOF field is only used just after the file is opened in order for
* the library to determine whether the file is empty, truncated, or
* okay. The FPHDF5 driver doesn't bother to keep it updated since it's
* an expensive operation.
*/
typedef struct H5FD_fphdf5_t {
H5FD_t pub; /*Public stuff, must be first (ick!) */
unsigned file_id; /*ID used by the SAP */
MPI_File f; /*MPIO file handle */
MPI_Comm comm; /*Communicator */
MPI_Comm barrier_comm; /*Barrier communicator */
MPI_Info info; /*File information */
int mpi_rank; /*This process's rank */
int mpi_size; /*Total number of processes */
haddr_t eof; /*End-of-file marker */
haddr_t eoa; /*End-of-address marker */
haddr_t last_eoa; /*Last known end-of-address marker */
} H5FD_fphdf5_t;
extern const H5FD_class_mpi_t H5FD_fphdf5_g;
/* Function prototypes */
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/*
*==--------------------------------------------------------------------------==
* API Functions
*==--------------------------------------------------------------------------==
*/
H5_DLL herr_t H5Pset_dxpl_fphdf5(hid_t dxpl_id, H5FD_mpio_xfer_t xfer_mode);
H5_DLL herr_t H5Pget_dxpl_fphdf5(hid_t dxpl_id, H5FD_mpio_xfer_t *xfer_mode);
H5_DLL herr_t H5Pset_fapl_fphdf5(hid_t fapl_id, MPI_Comm comm,
MPI_Comm barrier_comm, MPI_Info info,
unsigned sap_rank);
H5_DLL herr_t H5Pget_fapl_fphdf5(hid_t fapl_id, MPI_Comm *comm,
MPI_Comm *barrier_comm, MPI_Info *info,
unsigned *sap_rank, unsigned *capt_rank);
/*
*==--------------------------------------------------------------------------==
* Private Library Functions
*==--------------------------------------------------------------------------==
*/
/* Forward declarations for prototype arguments */
struct H5P_genplist_t;
H5_DLL hid_t H5FD_fphdf5_init(void);
H5_DLL void H5FD_fphdf5_term(void);
H5_DLL unsigned H5FD_fphdf5_file_id(H5FD_t *_file);
H5_DLL hbool_t H5FD_fphdf5_is_sap(const H5FD_t *_file);
H5_DLL hbool_t H5FD_fphdf5_is_captain(H5FD_t *_file);
H5_DLL hbool_t H5FD_is_fphdf5_driver(H5FD_t *_file);
H5_DLL herr_t H5FD_fphdf5_write_real(H5FD_t *_file, H5FD_mem_t mem_type,
struct H5P_genplist_t *plist,
haddr_t addr, int size,
const void *buf);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* H5_HAVE_PARALLEL */
#endif /* H5FDFPHDF5_H__ */

View File

@ -61,7 +61,6 @@ typedef struct H5FD_class_mpi_t {
#endif /* H5_HAVE_PARALLEL */
/* Include all the MPI VFL headers */
#include "H5FDfphdf5.h" /* Flexible PHDF5 file driver */
#include "H5FDmpio.h" /* MPI I/O file driver */
#include "H5FDmpiposix.h" /* MPI/posix I/O file driver */
@ -69,7 +68,7 @@ typedef struct H5FD_class_mpi_t {
/* Single macro to check for all file drivers that use MPI */
#define IS_H5FD_MPI(file) \
(IS_H5FD_MPIO(file) || IS_H5FD_MPIPOSIX(file) || IS_H5FD_FPHDF5(file))
(IS_H5FD_MPIO(file) || IS_H5FD_MPIPOSIX(file))
#ifdef H5_HAVE_PARALLEL
/* ======== Temporary data transfer properties ======== */

View File

@ -1,513 +0,0 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* 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 files COPYING and Copyright.html. COPYING can be found at the root *
* of the source code distribution tree; Copyright.html can be found at the *
* root level of an installed copy of the electronic HDF5 document set and *
* is linked from the top-level documents page. It can also be found at *
* http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
* access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* Private header files */
#include "H5private.h" /* Generic Functions */
#include "H5Eprivate.h" /* Error Handling */
#include "H5MMprivate.h" /* Memory management */
#include "H5Oprivate.h" /* Object Headers */
#ifdef H5_HAVE_FPHDF5
#include "H5FPprivate.h" /* Flexible Parallel Functions */
MPI_Datatype H5FP_request; /* MPI datatype for the H5FP_request_t type */
MPI_Datatype H5FP_reply; /* MPI datatype for the H5FP_reply_t type */
MPI_Datatype H5FP_read; /* MPI datatype for the H5FP_read_t type */
MPI_Datatype H5FP_alloc; /* MPI datatype for the H5FP_alloc_t type */
MPI_Datatype H5FP_eoa; /* MPI datatype for the H5FP_eoa_t type */
MPI_Datatype H5FP_super; /* MPI datatype for the H5FP_super_t type */
/* SAP specific variables */
MPI_Comm H5FP_SAP_COMM; /* Comm we use: Supplied by user */
MPI_Comm H5FP_SAP_BARRIER_COMM; /* Comm if you want to do a barrier */
unsigned H5FP_sap_rank; /* The rank of the SAP: Supplied by user*/
unsigned H5FP_capt_rank; /* The rank which tells SAP of opens */
unsigned H5FP_capt_barrier_rank;/* Rank of captain in barrier comm */
/* local functions */
static herr_t H5FP_commit_sap_datatypes(void);
static herr_t H5FP_request_sap_stop(void);
/*
*===----------------------------------------------------------------------===
* Public (API) Functions
*===----------------------------------------------------------------------===
*/
/*
* Function: H5FPinit
* Purpose: Initialize the SAP environment: duplicate the COMM the user
* supplies to us, set aside the SAP_RANK as the SAP.
* Return: Success: SUCCEED
* Failure: FAIL
* Programmer: Bill Wendling, 26. July, 2002
* Modifications:
*/
herr_t
H5FPinit(MPI_Comm comm, int sap_rank, MPI_Comm *sap_comm, MPI_Comm *sap_barrier_comm)
{
MPI_Group sap_group = MPI_GROUP_NULL, sap_barrier_group = MPI_GROUP_NULL;
int mrc, comm_size, my_rank;
herr_t ret_value = SUCCEED;
FUNC_ENTER_API(H5FPinit, FAIL);
H5TRACE4("e","McIs*Mc*Mc",comm,sap_rank,sap_comm,sap_barrier_comm);
/* initialize to NULL so that we can release if an error occurs */
H5FP_request = MPI_DATATYPE_NULL;
H5FP_reply = MPI_DATATYPE_NULL;
H5FP_read = MPI_DATATYPE_NULL;
H5FP_alloc = MPI_DATATYPE_NULL;
H5FP_eoa = MPI_DATATYPE_NULL;
H5FP_super = MPI_DATATYPE_NULL;
*sap_comm = H5FP_SAP_COMM = MPI_COMM_NULL;
*sap_barrier_comm = H5FP_SAP_BARRIER_COMM = MPI_COMM_NULL;
/* Set the global variable to track the SAP's rank */
H5FP_sap_rank = sap_rank;
/* Make a private copy of the communicator passed to us */
if (MPI_Comm_dup(comm, &H5FP_SAP_COMM) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Comm_dup failed");
*sap_comm = H5FP_SAP_COMM;
if (MPI_Comm_group(H5FP_SAP_COMM, &sap_group) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Comm_group failed");
/* Exclude the SAP from the barrier group group */
if (MPI_Group_excl(sap_group, 1, (int *)&H5FP_sap_rank,
&sap_barrier_group) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Group_excl failed");
/* Create communicator for barrier group (all processes except the SAP) */
if (MPI_Comm_create(H5FP_SAP_COMM, sap_barrier_group,
&H5FP_SAP_BARRIER_COMM) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Comm_create failed");
*sap_barrier_comm = H5FP_SAP_BARRIER_COMM;
/* Get the size of all the processes (including the SAP) */
if (MPI_Comm_size(H5FP_SAP_COMM, &comm_size) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Comm_size failed");
/*
* We assign the process right after the sap_rank as the one which
* will tell the SAP that files have been opened or closed. We mod
* it so that we don't go over the size of the communicator.
*/
H5FP_capt_rank = (H5FP_sap_rank + 1) % comm_size;
/* Get this processes rank */
if ((mrc = MPI_Comm_rank(H5FP_SAP_COMM, (int *)&my_rank)) != MPI_SUCCESS)
HMPI_GOTO_ERROR(FAIL, "MPI_Comm_rank failed", mrc);
H5FP_capt_barrier_rank = 0;
/* Get the rank of the captain in the barrier Comm */
if (H5FP_capt_rank == (unsigned)my_rank)
if ((mrc = MPI_Comm_rank(H5FP_SAP_BARRIER_COMM,
(int *)&H5FP_capt_barrier_rank)) != MPI_SUCCESS)
HMPI_GOTO_ERROR(FAIL, "MPI_Comm_rank failed", mrc);
/* Broadcast the captain's barrier rank */
if ((mrc = MPI_Bcast(&H5FP_capt_barrier_rank, 1, MPI_UNSIGNED,
(int)H5FP_capt_rank,
H5FP_SAP_COMM)) != MPI_SUCCESS)
HMPI_GOTO_ERROR(FAIL, "MPI_Bcast failed", mrc);
/* Create the MPI types used for communicating with the SAP */
if (H5FP_commit_sap_datatypes() != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "H5FP_commit_sap_datatypes failed");
/* Go loop, if we are the SAP */
if ((unsigned)my_rank == H5FP_sap_rank)
H5FP_sap_receive_loop();
/* Fall through and return to user, if not SAP */
done:
if (ret_value == FAIL) {
/* we've encountered an error...clean up */
if (H5FP_request != MPI_DATATYPE_NULL)
if (MPI_Type_free(&H5FP_request) != MPI_SUCCESS)
HDONE_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
if (H5FP_reply != MPI_DATATYPE_NULL)
if (MPI_Type_free(&H5FP_reply) != MPI_SUCCESS)
HDONE_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
if (H5FP_read != MPI_DATATYPE_NULL)
if (MPI_Type_free(&H5FP_read) != MPI_SUCCESS)
HDONE_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
if (H5FP_alloc != MPI_DATATYPE_NULL)
if (MPI_Type_free(&H5FP_alloc) != MPI_SUCCESS)
HDONE_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
if (H5FP_eoa != MPI_DATATYPE_NULL)
if (MPI_Type_free(&H5FP_eoa) != MPI_SUCCESS)
HDONE_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
if (H5FP_super != MPI_DATATYPE_NULL)
if (MPI_Type_free(&H5FP_super) != MPI_SUCCESS)
HDONE_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
if (H5FP_SAP_BARRIER_COMM != MPI_COMM_NULL)
/* this comm will be NULL for the SAP */
if (MPI_Comm_free(&H5FP_SAP_BARRIER_COMM) != MPI_SUCCESS)
HDONE_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Comm_free failed");
if (H5FP_SAP_COMM != MPI_COMM_NULL)
if (MPI_Comm_free(&H5FP_SAP_COMM) != MPI_SUCCESS)
HDONE_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Comm_free failed");
}
if (sap_group != MPI_GROUP_NULL)
MPI_Group_free(&sap_group);
if (sap_barrier_group != MPI_GROUP_NULL)
MPI_Group_free(&sap_barrier_group);
FUNC_LEAVE_API(ret_value);
}
/*
* Function: H5FPfinalize
* Purpose: Get rid of the initilized environment we setup with H5FPinit.
* Mostly just freeing the duplicated COMM object and committed
* datatypes.
* Return: Success: SUCCEED
* Failure: FAIL
* Programmer: Bill Wendling, 26. July, 2002
* Modifications:
*/
herr_t
H5FPfinalize(void)
{
int mrc, my_rank;
herr_t ret_value = SUCCEED;
FUNC_ENTER_API(H5FPfinalize, FAIL);
H5TRACE0("e","");
/* Get this processes rank */
if ((mrc = MPI_Comm_rank(H5FP_SAP_COMM, (int *)&my_rank)) != MPI_SUCCESS)
HMPI_GOTO_ERROR(FAIL, "MPI_Comm_rank failed", mrc);
/* Stop the SAP */
if ((unsigned)my_rank != H5FP_sap_rank)
if (H5FP_request_sap_stop() < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Error stopping the SAP");
/* Release the MPI types we created */
if (H5FP_request != MPI_DATATYPE_NULL)
if (MPI_Type_free(&H5FP_request) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
if (H5FP_reply != MPI_DATATYPE_NULL)
if (MPI_Type_free(&H5FP_reply) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
if (H5FP_read != MPI_DATATYPE_NULL)
if (MPI_Type_free(&H5FP_read) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
if (H5FP_alloc != MPI_DATATYPE_NULL)
if (MPI_Type_free(&H5FP_alloc) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
if (H5FP_eoa != MPI_DATATYPE_NULL)
if (MPI_Type_free(&H5FP_eoa) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
if (H5FP_super != MPI_DATATYPE_NULL)
if (MPI_Type_free(&H5FP_super) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
/* Release the barrier communicator */
if (H5FP_SAP_BARRIER_COMM != MPI_COMM_NULL)
/* this comm will be NULL for the SAP */
if (MPI_Comm_free(&H5FP_SAP_BARRIER_COMM) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Comm_free failed");
/* Release the FPH5 communicator */
if (MPI_Comm_free(&H5FP_SAP_COMM) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Comm_free failed");
done:
FUNC_LEAVE_API(ret_value);
}
/*
*===----------------------------------------------------------------------===
* Public Library (non-API) Functions
*===----------------------------------------------------------------------===
*/
/*
* Function: H5FP_send_metadata
* Purpose: Send a string of metadata to a process.
* Return: Success: SUCCEED
* Failure: FAIL
* Programmer: Bill Wendling, 30. July, 2002
* Modifications:
*/
herr_t
H5FP_send_metadata(const char *mdata, int len, int to)
{
herr_t ret_value = SUCCEED;
FUNC_ENTER_NOAPI(H5FP_send_metadata, FAIL);
assert(mdata);
assert(len);
/* casts the CONST away: Okay */
if (MPI_Send((void *)mdata, len, MPI_BYTE, to, H5FP_TAG_METADATA, H5FP_SAP_COMM)
!= MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Send failed");
done:
FUNC_LEAVE_NOAPI(ret_value);
}
/*
* Function: H5FP_read_metadata
* Purpose: Read a string of metadata from process FROM.
* Return: Success: SUCCEED
* Failure: FAIL
* Programmer: Bill Wendling, 31. January, 2003
* Modifications:
*/
herr_t
H5FP_read_metadata(char **mdata, int len, int from)
{
MPI_Status status;
herr_t ret_value = SUCCEED;
int mrc;
FUNC_ENTER_NOAPI(H5FP_read_metadata, FAIL);
/* check args */
assert(mdata);
/*
* There is metadata associated with this request. Get it as a
* string (requires another read).
*/
if ((*mdata = (char *)H5MM_malloc((size_t)len + 1)) == NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "out of memory");
HDmemset(*mdata, 0, (size_t)len + 1);
if ((mrc = MPI_Recv(*mdata, len + 1, MPI_BYTE, from, H5FP_TAG_METADATA,
H5FP_SAP_COMM, &status)) != MPI_SUCCESS) {
HDfree(*mdata);
*mdata = NULL;
HMPI_GOTO_ERROR(FAIL, "MPI_Recv failed", mrc);
}
done:
FUNC_LEAVE_NOAPI(ret_value);
}
/*
*===----------------------------------------------------------------------===
* Private Functions
*===----------------------------------------------------------------------===
*/
/*
* Function: H5FP_commit_sap_datatypes
* Purpose: Commit the H5FP_request, H5FP_reply, H5FP_read,
* H5FP_alloc, H5FP_eoa and H5FP_super structure datatypes
* to MPI.
* Return: Success: SUCCEED
* Failure: FAIL
* Programmer: Bill Wendling, 26. July, 2002
* Modifications:
*/
static herr_t
H5FP_commit_sap_datatypes(void)
{
int block_length[5];
int i;
MPI_Aint displs[5];
MPI_Datatype old_types[5];
H5FP_request_t sap_req;
H5FP_reply_t sap_reply;
H5FP_read_t sap_read;
H5FP_alloc_t sap_alloc;
H5FP_eoa_t sap_eoa;
H5FP_super_t sap_super;
herr_t ret_value = SUCCEED;
FUNC_ENTER_NOAPI(H5FP_commit_sap_datatypes, FAIL);
/* Commit the H5FP_request datatype */
block_length[0] = 8;
block_length[1] = 1;
block_length[2] = 4;
block_length[3] = 2;
old_types[0] = MPI_UNSIGNED;
old_types[1] = MPI_UNSIGNED_LONG;
old_types[2] = MPI_LONG_LONG_INT;
old_types[3] = HADDR_AS_MPI_TYPE;
MPI_Address(&sap_req.req_id, &displs[0]);
MPI_Address(&sap_req.feature_flags, &displs[1]);
MPI_Address(&sap_req.meta_block_size, &displs[2]);
MPI_Address(&sap_req.addr, &displs[3]);
/* Calculate the displacements */
for (i = 4; i >= 0; --i)
displs[i] -= displs[0];
if (MPI_Type_struct(4, block_length, displs, old_types, &H5FP_request) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_struct failed");
if (MPI_Type_commit(&H5FP_request) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_commit failed");
/* Commit the H5FP_reply datatype */
block_length[0] = 4;
old_types[0] = MPI_UNSIGNED;
MPI_Address(&sap_reply.req_id, &displs[0]);
/* Calculate the displacements */
for (i = 0; i >= 0; --i)
displs[i] -= displs[0];
if (MPI_Type_struct(1, block_length, displs, old_types, &H5FP_reply) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_struct failed");
if (MPI_Type_commit(&H5FP_reply) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_commit failed");
/* Commit the H5FP_read datatype */
block_length[0] = 5;
block_length[1] = 1;
old_types[0] = MPI_UNSIGNED;
old_types[1] = HADDR_AS_MPI_TYPE;
MPI_Address(&sap_read.req_id, &displs[0]);
MPI_Address(&sap_read.addr, &displs[1]);
/* Calculate the displacements */
for (i = 1; i >= 0; --i)
displs[i] -= displs[0];
if (MPI_Type_struct(2, block_length, displs, old_types, &H5FP_read) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_struct failed");
if (MPI_Type_commit(&H5FP_read) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_commit failed");
/* Commit the H5FP_alloc datatype */
block_length[0] = 4;
block_length[1] = 2;
old_types[0] = MPI_UNSIGNED;
old_types[1] = HADDR_AS_MPI_TYPE;
MPI_Address(&sap_alloc.req_id, &displs[0]);
MPI_Address(&sap_alloc.addr, &displs[1]);
/* Calculate the displacements */
for (i = 1; i >= 0; --i)
displs[i] -= displs[0];
if (MPI_Type_struct(2, block_length, displs, old_types, &H5FP_alloc) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_struct failed");
if (MPI_Type_commit(&H5FP_alloc) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_commit failed");
/* Commit the H5FP_eoa datatype */
block_length[0] = 3;
block_length[1] = 1;
old_types[0] = MPI_UNSIGNED;
old_types[1] = HADDR_AS_MPI_TYPE;
MPI_Address(&sap_eoa.req_id, &displs[0]);
MPI_Address(&sap_eoa.eoa, &displs[1]);
/* Calculate the displacements */
for (i = 1; i >= 0; --i)
displs[i] -= displs[0];
if (MPI_Type_struct(2, block_length, displs, old_types, &H5FP_eoa) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_struct failed");
if (MPI_Type_commit(&H5FP_eoa) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_commit failed");
/* Commit the H5FP_super datatype */
block_length[0] = 1;
block_length[1] = 1;
old_types[0] = HADDR_AS_MPI_TYPE;
old_types[1] = MPI_LONG_LONG_INT;
MPI_Address(&sap_super.addr, &displs[0]);
MPI_Address(&sap_super.size, &displs[1]);
/* Calculate the displacements */
for (i = 1; i >= 0; --i)
displs[i] -= displs[0];
if (MPI_Type_struct(2, block_length, displs, old_types, &H5FP_super) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_struct failed");
if (MPI_Type_commit(&H5FP_super) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_commit failed");
done:
FUNC_LEAVE_NOAPI(ret_value);
}
/*
* Function: H5FP_request_sap_stop
* Purpose: Request that the SAP stop it's loop processing. Each
* process should send this to the SAP.
* Return: Success: SUCCEED
* Failure: FAIL
* Programmer: Bill Wendling, 02. August, 2002
* Modifications:
*/
static herr_t
H5FP_request_sap_stop(void)
{
H5FP_request_t req;
int mrc, my_rank;
herr_t ret_value = SUCCEED;
FUNC_ENTER_NOAPI(H5FP_request_sap_stop, FAIL);
/* Get this processes rank */
if ((mrc = MPI_Comm_rank(H5FP_SAP_COMM, (int *)&my_rank)) != MPI_SUCCESS)
HMPI_GOTO_ERROR(FAIL, "MPI_Comm_rank failed", mrc);
HDmemset(&req, 0, sizeof(req));
req.req_type = H5FP_REQ_STOP;
req.req_id = 0;
req.proc_rank = my_rank;
if (MPI_Send(&req, 1, H5FP_request, (int)H5FP_sap_rank,
H5FP_TAG_REQUEST, H5FP_SAP_COMM) != MPI_SUCCESS)
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Send failed");
done:
FUNC_LEAVE_NOAPI(ret_value);
}
#endif /* H5_HAVE_FPHDF5 */

File diff suppressed because it is too large Load Diff

View File

@ -1,349 +0,0 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* 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 files COPYING and Copyright.html. COPYING can be found at the root *
* of the source code distribution tree; Copyright.html can be found at the *
* root level of an installed copy of the electronic HDF5 document set and *
* is linked from the top-level documents page. It can also be found at *
* http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
* access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef H5FPPRIVATE_H__
#define H5FPPRIVATE_H__ 0
#ifdef H5_HAVE_FPHDF5
#include "H5ACpublic.h" /* Metadata Cache */
#include "H5FPpublic.h" /* Flexible Parallel HDF5 */
#include "H5Oprivate.h" /* Object Headers */
#include "H5Rprivate.h" /* References */
/*===----------------------------------------------------------------------===
* Request Types
*===----------------------------------------------------------------------===
*
* The H5FP_REQ_LOCK_END and H5FP_REQ_RELEASE_END are used to lock and
* release a collection of objects at the same time. The last object you
* need to lock is sent with the H5FP_REQ_LOCK_END request type (this can
* also be a null message - where you're just sending a message that has
* H5FP_REQ_LOCK_END as the request type with no data associated with it.
* In that case, the md_size *MUST* be set to 0). The SAP will then try
* to lock all of the objects you've requested to lock at once. If it
* cannot do so, then it will fail and you have to try again at a later
* time.
*
* Releasing locks is done in the exact same way, except that the action
* will always release locks (i.e., not fail) if there is a vaild lock
* for that object.
*/
typedef enum {
/* Metadata Requests */
H5FP_REQ_OPEN, /* Open a file (or eventually an object) */
H5FP_REQ_LOCK, /* Lock an object (in a sequence) */
H5FP_REQ_LOCK_END, /* Last lock request in lock sequence */
H5FP_REQ_RELEASE, /* Unlock an object (in a sequence) */
H5FP_REQ_RELEASE_END, /* Last unlock request in unlock sequence */
H5FP_REQ_WRITE, /* Writing a piece of metadata */
H5FP_REQ_READ, /* Reading a piece of metadata */
H5FP_REQ_FLUSH, /* Flush the metadata out to disk */
H5FP_REQ_CLOSE, /* Close a file (or eventually an object) */
H5FP_REQ_GET_EOA, /* Get end of address space information */
H5FP_REQ_SET_EOA, /* Set end of address space information */
H5FP_REQ_STOP, /* Stop SAP */
/* Allocation Requests */
H5FP_REQ_ALLOC, /* Allocate a region of metadata */
H5FP_REQ_FREE, /* Free a region of metadata */
H5FP_REQ_UPDATE_EOMA_EOSDA /* Update the EOMA and EOSDA information */
} H5FP_req_t;
/*===----------------------------------------------------------------------===
* Lock Types
*===----------------------------------------------------------------------===
*
* A ``read'' lock indicates that the process is busy reading the
* metadata of that object. It's non-exclusive, so any number of
* processes can have any number of locks on a given object. However, you
* cannot have a write and a read lock on an object.
*
* A ``write'' lock indicates that the process is busy writing to the
* metadata of that object. It's exclusive, so only one process can have
* a write lock on an object at any one time. However, that object can
* have any number of write locks on that object.
*
* It's up to the program to release all of the locks it has on a given
* object.
*/
typedef enum {
H5FP_LOCK_READ,
H5FP_LOCK_WRITE
} H5FP_lock_t;
/*===----------------------------------------------------------------------===
* Object Types
*===----------------------------------------------------------------------===
*
* The various types of objects we're able to get a lock on or which we
* want to modify/read.
*/
typedef enum {
H5FP_OBJ_FILE,
H5FP_OBJ_GROUP,
H5FP_OBJ_DATASET,
H5FP_OBJ_DATATYPE,
H5FP_OBJ_ATTRIBUTE,
H5FP_OBJ_MEMORY
} H5FP_obj_t;
/*===----------------------------------------------------------------------===
* MPI Message Tags
*===----------------------------------------------------------------------===
*
* Special tag numbers for requests, replies, and string passing
* messages.
*
* Certain actions (Open, Change, and Close) require a pathname to the
* object. This pathname is sent in a separate message and the SAP will
* search for it after getting the appropriate request.
*/
enum {
H5FP_TAG_REQUEST,
H5FP_TAG_REPLY,
H5FP_TAG_READ,
H5FP_TAG_METADATA,
H5FP_TAG_ALLOC,
H5FP_TAG_EOA,
H5FP_TAG_DUMP,
H5FP_TAG_FILE_ID
};
/*===----------------------------------------------------------------------===
* Status
*===----------------------------------------------------------------------===
*
* The status returned by the SAP. If the process receives an
* H5FP_STATUS_CATASTROPHIC status, then something *REALLY* bad happened
* on the set-aside process. The state of the program is then
* indeterminant and the only real course of action is for the program to
* abort operation.
*/
typedef enum sap_status {
H5FP_STATUS_OK,
/* For locking */
H5FP_STATUS_LOCK_ACQUIRED,
H5FP_STATUS_LOCK_FAILED,
/* For releasing locks */
H5FP_STATUS_LOCK_RELEASED,
H5FP_STATUS_LOCK_RELEASE_FAILED,
H5FP_STATUS_BAD_LOCK, /* Process doesn't own a lock on the OID */
/* For change requests */
H5FP_STATUS_FILE_CLOSING,
H5FP_STATUS_NO_LOCK,
/* For read requests */
H5FP_STATUS_MDATA_NOT_CACHED,
/* For dumping data to client */
H5FP_STATUS_DUMPING,
H5FP_STATUS_DUMPING_FINISHED,
H5FP_STATUS_DUMPING_FAILED,
/* Out of memory error */
H5FP_STATUS_OOM,
/* Bad file ID */
H5FP_STATUS_BAD_FILE_ID,
/* Can't do memory things */
H5FP_STATUS_CANT_ALLOC,
H5FP_STATUS_CANT_FREE,
/* Reserved for completely disasterous failures which require an abort */
H5FP_STATUS_CATASTROPHIC
} H5FP_status_t;
/*===----------------------------------------------------------------------===
* H5FP_request
*===----------------------------------------------------------------------===
*
* The structure sent to the SAP which holds all of the requested action
*/
typedef struct {
unsigned req_id; /* ID for request set by sending process */
H5FP_req_t req_type; /* Request type */
unsigned proc_rank; /* Rank of sending process */
unsigned file_id; /* SAP's file ID for the specific file */
H5FP_obj_t obj_type; /* Type of the object */
H5FP_lock_t rw_lock; /* Indicates read or write lock */
H5FD_mem_t mem_type; /* Type of memory updated, if req'd */
unsigned md_size; /* Size of the metadata sent in next msg */
unsigned long feature_flags; /* Feature flags for the file driver */
hsize_t meta_block_size; /* Metadata block size */
hsize_t sdata_block_size; /* Small data block size */
hsize_t threshold; /* Alignment threshold */
hsize_t alignment; /* Alignment (really!) */
haddr_t addr; /* Address of the metadata */
haddr_t oid; /* Buffer to store OID of object */
} H5FP_request_t;
extern MPI_Datatype H5FP_request; /* MPI datatype for the H5FP_request obj */
/*===----------------------------------------------------------------------===
* H5FP_reply
*===----------------------------------------------------------------------===
*
* Reply from the SAP on an H5FP_request send
*/
typedef struct {
unsigned req_id; /* Request ID copied from the SAP_request */
unsigned file_id; /* File ID assigned to an open file */
H5FP_status_t status; /* Status of the request */
unsigned md_size; /* Size of the metadata sent in next msg */
} H5FP_reply_t;
extern MPI_Datatype H5FP_reply; /* MPI datatype for the H5FP_reply obj */
/*===----------------------------------------------------------------------===
* H5FP_read
*===----------------------------------------------------------------------===
*
* The reply message from the SAP on an H5FP_request H5FP_REQ_READ send
*/
typedef struct {
unsigned req_id; /* Request ID copied from the SAP_request */
unsigned file_id; /* SAP's file ID for the specific file */
H5FP_status_t status; /* Status of the request */
H5FD_mem_t mem_type; /* Type of memory updated, if req'd */
unsigned md_size; /* Size of the metadata sent in next msg */
haddr_t addr; /* Address of the metadata */
} H5FP_read_t;
extern MPI_Datatype H5FP_read; /* MPI datatype for the H5FP_read obj */
/*===----------------------------------------------------------------------===
* H5FP_alloc
*===----------------------------------------------------------------------===
*
* The reply message from the SAP on an H5FP_alloc H5FP_REQ_ALLOC send.
*/
typedef struct {
unsigned req_id; /* Request ID copied from the SAP_request */
unsigned file_id; /* SAP's file ID for the specific file */
H5FP_status_t status; /* Status of the request */
H5FD_mem_t mem_type; /* Type of memory updated, if req'd */
haddr_t addr; /* Address of the metadata */
haddr_t eoa; /* End of address space */
} H5FP_alloc_t;
extern MPI_Datatype H5FP_alloc; /* MPI datatype for the H5FP_alloc obj */
/*===----------------------------------------------------------------------===
* H5FP_eoa
*===----------------------------------------------------------------------===
*
* The reply message from the SAP on an H5FP_alloc H5FP_REQ_ALLOC send.
*/
typedef struct {
unsigned req_id; /* Request ID copied from the SAP_request */
unsigned file_id; /* SAP's file ID for the specific file */
H5FP_status_t status; /* Status of the request */
haddr_t eoa; /* End of address space */
} H5FP_eoa_t;
extern MPI_Datatype H5FP_eoa; /* MPI datatype for the H5FP_eoa obj */
/*===----------------------------------------------------------------------===
* H5FP_super
*===----------------------------------------------------------------------===
*
* The message broadcast from the captain on creating a new file.
*/
typedef struct {
haddr_t addr; /* Address of the superblock */
hsize_t size; /* Size of superblock */
} H5FP_super_t;
extern MPI_Datatype H5FP_super; /* MPI datatype for the H5FP_super obj */
/* SAP specific variables */
extern MPI_Comm H5FP_SAP_COMM; /* Comm we use: Supplied by user */
extern MPI_Comm H5FP_SAP_BARRIER_COMM; /* Comm if you want to do a barrier */
extern unsigned H5FP_sap_rank; /* The rank of the SAP: Supplied by user */
extern unsigned H5FP_capt_rank; /* The rank which tells SAP of opens */
extern unsigned H5FP_capt_barrier_rank;/* Rank of captain in barrier comm */
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* Start the SAP */
extern herr_t H5FP_sap_receive_loop(void);
/* Use these functions to communicate with the SAP */
extern herr_t H5FP_request_open(H5FP_obj_t obj_type,
haddr_t maxaddr,
unsigned long feature_flags,
hsize_t meta_block_size,
hsize_t sdata_block_size,
hsize_t threshold,
hsize_t alignment,
unsigned *file_id,
unsigned *req_id);
extern herr_t H5FP_request_lock(unsigned sap_file_id, hobj_ref_t oid,
H5FP_lock_t rw_lock, int last, unsigned *req_id,
H5FP_status_t *status);
extern herr_t H5FP_request_release_lock(unsigned sap_file_id, hobj_ref_t oid,
int last, unsigned *req_id,
H5FP_status_t *status);
extern herr_t H5FP_request_read_metadata(H5FD_t *file, unsigned sap_file_id, hid_t dxpl_id,
H5FD_mem_t mem_type, haddr_t addr,
size_t size, uint8_t **buf,
unsigned *req_id, H5FP_status_t *status);
extern herr_t H5FP_request_write_metadata(H5FD_t *file, unsigned file_id, hid_t dxpl_id,
H5FD_mem_t mem_type, haddr_t addr,
int mdata_size, const char *mdata,
unsigned *req_id, H5FP_status_t *status);
extern herr_t H5FP_request_flush_metadata(H5FD_t *file, unsigned file_id,
hid_t dxpl_id, unsigned *req_id,
H5FP_status_t *status);
extern herr_t H5FP_request_close(H5FD_t *file, unsigned sap_file_id,
unsigned *req_id, H5FP_status_t *status);
/* the following function should probably become a private function
* in H5FPclient.c if H5FP_client_alloc() does the job. -- JRM
*/
extern herr_t H5FP_request_allocate(H5FD_t *file, H5FD_mem_t mem_type,
hsize_t size, haddr_t *addr,
haddr_t *eoa, unsigned *req_id,
H5FP_status_t *status);
extern haddr_t H5FP_client_alloc(H5FD_t *file, H5FD_mem_t type,
hid_t dxpl_id, hsize_t size);
extern herr_t H5FP_request_free(H5FD_t *file, H5FD_mem_t mem_type,
haddr_t addr, hsize_t size,
unsigned *req_id, H5FP_status_t *status);
extern herr_t H5FP_request_get_eoa(const H5FD_t *file, haddr_t *eoa, unsigned *req_id,
H5FP_status_t *status);
extern herr_t H5FP_request_set_eoa(H5FD_t *file, haddr_t eoa, unsigned *req_id,
H5FP_status_t *status);
extern herr_t H5FP_request_update_eoma_eosda(H5FD_t *file, unsigned *req_id,
H5FP_status_t *status);
/* NOTE: Don't use these functions outside of the H5FP* modules! */
extern herr_t H5FP_send_metadata(const char *mdata, int len, int to);
extern herr_t H5FP_read_metadata(char **mdata, int len, int from);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* H5_HAVE_FPHDF5 */
#endif /* H5FPPRIVATE_H__ */

View File

@ -1,35 +0,0 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* 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 files COPYING and Copyright.html. COPYING can be found at the root *
* of the source code distribution tree; Copyright.html can be found at the *
* root level of an installed copy of the electronic HDF5 document set and *
* is linked from the top-level documents page. It can also be found at *
* http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
* access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef H5FPPUBLIC_H__
#define H5FPPUBLIC_H__ 0
#include "H5public.h"
#ifdef H5_HAVE_FPHDF5
#ifdef __cplusplus
extern "C" {
#endif
H5_DLL herr_t H5FPinit(MPI_Comm comm, int sap_rank,
MPI_Comm *FP_comm, MPI_Comm *FP_barrier_comm);
H5_DLL herr_t H5FPfinalize(void);
#ifdef __cplusplus
}
#endif
#endif /* H5_HAVE_FPHDF5 */
#endif /* H5FPPUBLIC_H__ */

File diff suppressed because it is too large Load Diff

View File

@ -44,7 +44,6 @@ typedef struct H5F_t H5F_t;
#define H5F_FLUSH_NONE (0U) /* No flags specified */
#define H5F_FLUSH_INVALIDATE (1U << 0) /* Invalidate cached data */
#define H5F_FLUSH_CLOSING (1U << 1) /* Closing the file */
#define H5F_FLUSH_CLEAR_ONLY (1U << 2) /* Don't write, just clear dirty flags */
/*
* Encode and decode macros for file meta-data.

View File

@ -351,11 +351,8 @@ H5F_read_superblock(H5F_t *f, hid_t dxpl_id, H5G_loc_t *root_loc, haddr_t addr,
if (HADDR_UNDEF == (eof = H5FD_get_eof(lf)))
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, FAIL, "unable to determine file size")
#ifdef H5_HAVE_FPHDF5
if (!H5FD_is_fphdf5_driver(lf) || H5FD_fphdf5_is_captain(lf))
#endif /* !H5_HAVE_FPHDF5 */
if (eof < stored_eoa)
HGOTO_ERROR(H5E_FILE, H5E_TRUNCATED, FAIL, "truncated file")
if (eof < stored_eoa)
HGOTO_ERROR(H5E_FILE, H5E_TRUNCATED, FAIL, "truncated file")
/*
* Tell the file driver how much address space has already been

View File

@ -81,9 +81,6 @@
/* Define to 1 if you have the `fork' function. */
#undef HAVE_FORK
/* Define if we want flexible parallel HDF5 support */
#undef HAVE_FPHDF5
/* Define to 1 if you have the `frexpf' function. */
#undef HAVE_FREXPF

View File

@ -66,7 +66,6 @@ MAJOR, H5E_PLINE, Data filters
MAJOR, H5E_EFL, External file list
MAJOR, H5E_REFERENCE, References
MAJOR, H5E_VFL, Virtual File Layer
MAJOR, H5E_FPHDF5, Flexible Parallel HDF5
MAJOR, H5E_TST, Ternary Search Trees
MAJOR, H5E_RS, Reference Counted Strings
MAJOR, H5E_ERROR, Error API
@ -89,7 +88,6 @@ SECTION, DSPACE, Dataspace errors
SECTION, PLIST, Property list errors
SECTION, MPI, Parallel MPI errors
SECTION, HEAP, Heap errors
SECTION, FPH5, FPHDF5 errors
SECTION, PIPELINE, I/O pipeline errors
SECTION, SYSTEM, System level errors
SECTION, NONE, No error
@ -105,6 +103,7 @@ MINOR, ARGS, H5E_BADVALUE, Bad value
# Resource errors
MINOR, RESOURCE, H5E_NOSPACE, No space available for allocation
MINOR, RESOURCE, H5E_CANTALLOC, Can't allocate space
MINOR, RESOURCE, H5E_CANTCOPY, Unable to copy object
MINOR, RESOURCE, H5E_CANTFREE, Unable to free object
MINOR, RESOURCE, H5E_ALREADYEXISTS, Object already exists
@ -213,12 +212,6 @@ MINOR, HEAP, H5E_CANTRESTORE, Can't restore condition
MINOR, HEAP, H5E_CANTCOMPUTE, Can't compute value
MINOR, HEAP, H5E_CANTEXTEND, Can't extend heap's space
# FPHDF5 errors
MINOR, FPH5, H5E_CANTRECV, Can't receive messages from processes
MINOR, FPH5, H5E_CANTSENDMDATA, Can't send metadata message
MINOR, FPH5, H5E_CANTCHANGE, Can't register change with server
MINOR, FPH5, H5E_CANTALLOC, Can't allocate from file
# I/O pipeline errors
MINOR, PIPELINE, H5E_NOFILTER, Requested filter is not available
MINOR, PIPELINE, H5E_CALLBACK, Callback failed

View File

@ -47,9 +47,9 @@ libhdf5_la_SOURCES= H5.c H5dbg.c H5A.c H5AC.c H5B.c H5Bcache.c \
H5Defl.c H5Dio.c H5Distore.c H5Dmpio.c H5Doh.c H5Dselect.c H5Dtest.c \
H5E.c H5F.c \
H5Fdbg.c H5Fmount.c H5Fsfile.c H5Fsuper.c H5FD.c H5FDcore.c \
H5FDfamily.c H5FDfphdf5.c H5FDlog.c H5FDmpi.c H5FDmpio.c \
H5FDfamily.c H5FDlog.c H5FDmpi.c H5FDmpio.c \
H5FDmpiposix.c H5FDmulti.c H5FDsec2.c H5FDstdio.c \
H5FDstream.c H5FL.c H5FO.c H5FP.c H5FPclient.c H5FPserver.c H5FS.c \
H5FDstream.c H5FL.c H5FO.c H5FS.c \
H5G.c H5Gent.c H5Glink.c H5Gloc.c H5Gname.c H5Gnode.c H5Gobj.c \
H5Goh.c \
H5Gstab.c \
@ -83,8 +83,8 @@ libhdf5_la_SOURCES= H5.c H5dbg.c H5A.c H5AC.c H5B.c H5Bcache.c \
include_HEADERS =H5public.h H5Apublic.h H5ACpublic.h \
H5Cpublic.h H5Dpublic.h \
H5Epubgen.h H5Epublic.h H5Fpublic.h H5FDpublic.h H5FDcore.h H5FDfamily.h \
H5FDfphdf5.h H5FDlog.h H5FDmpi.h H5FDmpio.h H5FDmpiposix.h \
H5FDmulti.h H5FDsec2.h H5FDstdio.h H5FDstream.h H5FPpublic.h \
H5FDlog.h H5FDmpi.h H5FDmpio.h H5FDmpiposix.h \
H5FDmulti.h H5FDsec2.h H5FDstdio.h H5FDstream.h \
H5Gpublic.h H5Ipublic.h \
H5MMpublic.h H5Opublic.h H5Ppublic.h H5Rpublic.h H5Spublic.h \
H5Tpublic.h H5Zpublic.h H5pubconf.h hdf5.h H5api_adpt.h

View File

@ -88,28 +88,27 @@ am_libhdf5_la_OBJECTS = H5.lo H5dbg.lo H5A.lo H5AC.lo H5B.lo \
H5Dcontig.lo H5Defl.lo H5Dio.lo H5Distore.lo H5Dmpio.lo \
H5Doh.lo H5Dselect.lo H5Dtest.lo H5E.lo H5F.lo H5Fdbg.lo \
H5Fmount.lo H5Fsfile.lo H5Fsuper.lo H5FD.lo H5FDcore.lo \
H5FDfamily.lo H5FDfphdf5.lo H5FDlog.lo H5FDmpi.lo H5FDmpio.lo \
H5FDfamily.lo H5FDlog.lo H5FDmpi.lo H5FDmpio.lo \
H5FDmpiposix.lo H5FDmulti.lo H5FDsec2.lo H5FDstdio.lo \
H5FDstream.lo H5FL.lo H5FO.lo H5FP.lo H5FPclient.lo \
H5FPserver.lo H5FS.lo H5G.lo H5Gent.lo H5Glink.lo H5Gloc.lo \
H5Gname.lo H5Gnode.lo H5Gobj.lo H5Goh.lo H5Gstab.lo H5Gtest.lo \
H5Gtraverse.lo H5HF.lo H5HFcache.lo H5HFdbg.lo H5HFdblock.lo \
H5HFdtable.lo H5HFflist.lo H5HFhdr.lo H5HFiblock.lo H5HFint.lo \
H5HFstat.lo H5HFtest.lo H5HG.lo H5HGdbg.lo H5HL.lo H5HLdbg.lo \
H5HP.lo H5I.lo H5MF.lo H5MM.lo H5MP.lo H5MPtest.lo H5O.lo \
H5Oattr.lo H5Obogus.lo H5Ocache.lo H5Ocont.lo H5Odtype.lo \
H5Oefl.lo H5Ofill.lo H5Oginfo.lo H5Olayout.lo H5Olinfo.lo \
H5Olink.lo H5Omtime.lo H5Oname.lo H5Onull.lo H5Opline.lo \
H5Osdspace.lo H5Oshared.lo H5Ostab.lo H5P.lo H5Pacpl.lo \
H5Pdcpl.lo H5Pdxpl.lo H5Pfapl.lo H5Pfcpl.lo H5Pgcpl.lo \
H5Pocpl.lo H5Ptest.lo H5R.lo H5RC.lo H5RS.lo H5S.lo H5Sall.lo \
H5Shyper.lo H5Smpio.lo H5Snone.lo H5Spoint.lo H5Sselect.lo \
H5Stest.lo H5SL.lo H5ST.lo H5T.lo H5Tarray.lo H5Tbit.lo \
H5Tcommit.lo H5Tcompound.lo H5Tconv.lo H5Tcset.lo H5Tenum.lo \
H5Tfields.lo H5Tfixed.lo H5Tfloat.lo H5Tinit.lo H5Tnative.lo \
H5Toffset.lo H5Toh.lo H5Topaque.lo H5Torder.lo H5Tpad.lo \
H5Tprecis.lo H5Tstrpad.lo H5Tvlen.lo H5TS.lo H5V.lo H5Z.lo \
H5Zdeflate.lo H5Zfletcher32.lo H5Znbit.lo H5Zshuffle.lo \
H5FDstream.lo H5FL.lo H5FO.lo H5FS.lo H5G.lo H5Gent.lo \
H5Glink.lo H5Gloc.lo H5Gname.lo H5Gnode.lo H5Gobj.lo H5Goh.lo \
H5Gstab.lo H5Gtest.lo H5Gtraverse.lo H5HF.lo H5HFcache.lo \
H5HFdbg.lo H5HFdblock.lo H5HFdtable.lo H5HFflist.lo H5HFhdr.lo \
H5HFiblock.lo H5HFint.lo H5HFstat.lo H5HFtest.lo H5HG.lo \
H5HGdbg.lo H5HL.lo H5HLdbg.lo H5HP.lo H5I.lo H5MF.lo H5MM.lo \
H5MP.lo H5MPtest.lo H5O.lo H5Oattr.lo H5Obogus.lo H5Ocache.lo \
H5Ocont.lo H5Odtype.lo H5Oefl.lo H5Ofill.lo H5Oginfo.lo \
H5Olayout.lo H5Olinfo.lo H5Olink.lo H5Omtime.lo H5Oname.lo \
H5Onull.lo H5Opline.lo H5Osdspace.lo H5Oshared.lo H5Ostab.lo \
H5P.lo H5Pacpl.lo H5Pdcpl.lo H5Pdxpl.lo H5Pfapl.lo H5Pfcpl.lo \
H5Pgcpl.lo H5Pocpl.lo H5Ptest.lo H5R.lo H5RC.lo H5RS.lo H5S.lo \
H5Sall.lo H5Shyper.lo H5Smpio.lo H5Snone.lo H5Spoint.lo \
H5Sselect.lo H5Stest.lo H5SL.lo H5ST.lo H5T.lo H5Tarray.lo \
H5Tbit.lo H5Tcommit.lo H5Tcompound.lo H5Tconv.lo H5Tcset.lo \
H5Tenum.lo H5Tfields.lo H5Tfixed.lo H5Tfloat.lo H5Tinit.lo \
H5Tnative.lo H5Toffset.lo H5Toh.lo H5Topaque.lo H5Torder.lo \
H5Tpad.lo H5Tprecis.lo H5Tstrpad.lo H5Tvlen.lo H5TS.lo H5V.lo \
H5Z.lo H5Zdeflate.lo H5Zfletcher32.lo H5Znbit.lo H5Zshuffle.lo \
H5Zszip.lo H5Zscaleoffset.lo H5Ztrans.lo
libhdf5_la_OBJECTS = $(am_libhdf5_la_OBJECTS)
PROGRAMS = $(noinst_PROGRAMS)
@ -403,9 +402,9 @@ libhdf5_la_SOURCES = H5.c H5dbg.c H5A.c H5AC.c H5B.c H5Bcache.c \
H5Defl.c H5Dio.c H5Distore.c H5Dmpio.c H5Doh.c H5Dselect.c H5Dtest.c \
H5E.c H5F.c \
H5Fdbg.c H5Fmount.c H5Fsfile.c H5Fsuper.c H5FD.c H5FDcore.c \
H5FDfamily.c H5FDfphdf5.c H5FDlog.c H5FDmpi.c H5FDmpio.c \
H5FDfamily.c H5FDlog.c H5FDmpi.c H5FDmpio.c \
H5FDmpiposix.c H5FDmulti.c H5FDsec2.c H5FDstdio.c \
H5FDstream.c H5FL.c H5FO.c H5FP.c H5FPclient.c H5FPserver.c H5FS.c \
H5FDstream.c H5FL.c H5FO.c H5FS.c \
H5G.c H5Gent.c H5Glink.c H5Gloc.c H5Gname.c H5Gnode.c H5Gobj.c \
H5Goh.c \
H5Gstab.c \
@ -439,8 +438,8 @@ libhdf5_la_SOURCES = H5.c H5dbg.c H5A.c H5AC.c H5B.c H5Bcache.c \
include_HEADERS = H5public.h H5Apublic.h H5ACpublic.h \
H5Cpublic.h H5Dpublic.h \
H5Epubgen.h H5Epublic.h H5Fpublic.h H5FDpublic.h H5FDcore.h H5FDfamily.h \
H5FDfphdf5.h H5FDlog.h H5FDmpi.h H5FDmpio.h H5FDmpiposix.h \
H5FDmulti.h H5FDsec2.h H5FDstdio.h H5FDstream.h H5FPpublic.h \
H5FDlog.h H5FDmpi.h H5FDmpio.h H5FDmpiposix.h \
H5FDmulti.h H5FDsec2.h H5FDstdio.h H5FDstream.h \
H5Gpublic.h H5Ipublic.h \
H5MMpublic.h H5Opublic.h H5Ppublic.h H5Rpublic.h H5Spublic.h \
H5Tpublic.h H5Zpublic.h H5pubconf.h hdf5.h H5api_adpt.h
@ -592,7 +591,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FD.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDcore.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDfamily.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDfphdf5.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDlog.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDmpi.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDmpio.Plo@am__quote@
@ -603,9 +601,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDstream.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FL.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FO.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FP.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FPclient.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FPserver.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FS.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5Fdbg.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5Fmount.Plo@am__quote@

View File

@ -27,7 +27,6 @@
#include "H5Epublic.h" /* Errors */
#include "H5Fpublic.h" /* Files */
#include "H5FDpublic.h" /* File drivers */
#include "H5FPpublic.h" /* Flexible Parallel HDF5 */
#include "H5Gpublic.h" /* Groups */
#include "H5Ipublic.h" /* ID management */
#include "H5MMpublic.h" /* Memory management */

View File

@ -91,7 +91,6 @@
The following files have had their FUNC_ENTER, FUNC_LEAVE & HGOTO*
macros cleaned up, but have not been linted
due to their dependencies on features that we don't support on Windows:
H5FDfphdf5.c
H5FDmpio.c
H5FDmpiposix.c
H5FDstream.c

View File

@ -294,7 +294,7 @@ h5_fixname(const char *base_name, hid_t fapl, char *fullname, size_t size)
* could be of value -1 if it is not defined.
*/
isppdriver = H5P_DEFAULT != fapl &&
(H5FD_MPIO==driver || H5FD_MPIPOSIX==driver || H5FD_FPHDF5==driver);
(H5FD_MPIO==driver || H5FD_MPIPOSIX==driver);
/* Check HDF5_NOCLEANUP environment setting.
* (The #ifdef is needed to prevent compile failure in case MPI is not

View File

@ -24,7 +24,7 @@ INCLUDES+=-I$(top_srcdir)/src -I$(top_srcdir)/test
# Test programs and scripts. These are our main targets.
#
TEST_PROG_PARA=t_mpi t_posix_compliant t_fphdf5 testphdf5 t_cache
TEST_PROG_PARA=t_mpi t_posix_compliant testphdf5 t_cache
TEST_SCRIPT_PARA=testph5.sh
check_PROGRAMS = $(TEST_PROG_PARA)

View File

@ -29,7 +29,7 @@
#
# hdf5 Parallel Library Test Makefile(.in)
#
SOURCES = t_cache.c t_fphdf5.c t_mpi.c t_posix_compliant.c $(testphdf5_SOURCES)
SOURCES = t_cache.c t_mpi.c t_posix_compliant.c $(testphdf5_SOURCES)
srcdir = @srcdir@
top_srcdir = @top_srcdir@
@ -66,17 +66,13 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/src/H5config.h
CONFIG_CLEAN_FILES = testph5.sh
am__EXEEXT_1 = t_mpi$(EXEEXT) t_posix_compliant$(EXEEXT) \
t_fphdf5$(EXEEXT) testphdf5$(EXEEXT) t_cache$(EXEEXT)
testphdf5$(EXEEXT) t_cache$(EXEEXT)
t_cache_SOURCES = t_cache.c
t_cache_OBJECTS = t_cache.$(OBJEXT)
t_cache_LDADD = $(LDADD)
am__DEPENDENCIES_1 = $(top_builddir)/test/libh5test.la
am__DEPENDENCIES_2 = $(top_builddir)/src/libhdf5.la
t_cache_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
t_fphdf5_SOURCES = t_fphdf5.c
t_fphdf5_OBJECTS = t_fphdf5.$(OBJEXT)
t_fphdf5_LDADD = $(LDADD)
t_fphdf5_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
t_mpi_SOURCES = t_mpi.c
t_mpi_OBJECTS = t_mpi.$(OBJEXT)
t_mpi_LDADD = $(LDADD)
@ -104,9 +100,8 @@ LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = t_cache.c t_fphdf5.c t_mpi.c t_posix_compliant.c \
$(testphdf5_SOURCES)
DIST_SOURCES = t_cache.c t_fphdf5.c t_mpi.c t_posix_compliant.c \
SOURCES = t_cache.c t_mpi.c t_posix_compliant.c $(testphdf5_SOURCES)
DIST_SOURCES = t_cache.c t_mpi.c t_posix_compliant.c \
$(testphdf5_SOURCES)
ETAGS = etags
CTAGS = ctags
@ -359,7 +354,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog MPItest.h5 Para*.h5
# Test programs and scripts. These are our main targets.
#
TEST_PROG_PARA = t_mpi t_posix_compliant t_fphdf5 testphdf5 t_cache
TEST_PROG_PARA = t_mpi t_posix_compliant testphdf5 t_cache
TEST_SCRIPT_PARA = testph5.sh
check_SCRIPTS = $(TEST_SCRIPT)
testphdf5_SOURCES = testphdf5.c t_dset.c t_file.c t_mdset.c t_ph5basic.c \
@ -431,9 +426,6 @@ clean-checkPROGRAMS:
t_cache$(EXEEXT): $(t_cache_OBJECTS) $(t_cache_DEPENDENCIES)
@rm -f t_cache$(EXEEXT)
$(LINK) $(t_cache_LDFLAGS) $(t_cache_OBJECTS) $(t_cache_LDADD) $(LIBS)
t_fphdf5$(EXEEXT): $(t_fphdf5_OBJECTS) $(t_fphdf5_DEPENDENCIES)
@rm -f t_fphdf5$(EXEEXT)
$(LINK) $(t_fphdf5_LDFLAGS) $(t_fphdf5_OBJECTS) $(t_fphdf5_LDADD) $(LIBS)
t_mpi$(EXEEXT): $(t_mpi_OBJECTS) $(t_mpi_DEPENDENCIES)
@rm -f t_mpi$(EXEEXT)
$(LINK) $(t_mpi_LDFLAGS) $(t_mpi_OBJECTS) $(t_mpi_LDADD) $(LIBS)
@ -455,7 +447,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_coll_chunk.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_dset.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_file.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_fphdf5.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_mdset.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_mpi.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_ph5basic.Po@am__quote@

File diff suppressed because it is too large Load Diff

View File

@ -90,9 +90,6 @@
/* Define to 1 if you have the `fork' function. */
/*#undefine H5_HAVE_FORK */
/* Define if we want flexible parallel HDF5 support */
#undef H5_HAVE_FPHDF5
/* Define to 1 if you have the `frexpf' function. */
#define H5_HAVE_FREXPF 1

View File

@ -32,9 +32,9 @@ $ cobj= "H5, H5A, H5AC, H5B, H5B2, H5B2cache,"+-
"H5D, H5Dcontig, H5Dcompact,"+-
"H5Defl, H5Dio, H5Distore, H5Doh, H5Dmpio, H5Dselect, H5Dtest ,"+-
"H5E, H5F, H5Fdbg, H5Fmount, H5Fsfile, H5Fsuper, H5FD, H5FDcore,"+-
"H5FDfamily, H5FDfphdf5, H5FDlog, H5FDmpi, H5FDmpio,"+-
"H5FDfamily, H5FDlog, H5FDmpi, H5FDmpio,"+-
"H5FDmpiposix, H5FDmulti, H5FDsec2, H5FDstdio,"+-
"H5FDstream, H5FL, H5FO, H5FP, H5FPclient, H5FPserver, H5FS,"+-
"H5FDstream, H5FL, H5FO, H5FS,"+-
"H5G, H5Gent, H5Glink, H5Gloc, H5Gname, H5Gnode, H5Gstab,"+-
"H5Gobj, H5Goh, H5Gtest, H5Gtraverse,"+-
"H5HF, H5HFcache, H5HFdbg, H5HFint, H5HFtest, H5HFflist, H5HFstat,"+-