summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBill Wendling <wendling@ncsa.uiuc.edu>2003-02-21 14:04:35 (GMT)
committerBill Wendling <wendling@ncsa.uiuc.edu>2003-02-21 14:04:35 (GMT)
commitd84e6e525e28ace2f9163253212436fc09d30b8c (patch)
treee8f9882f63f59d71a5db87566558636aabf2925b /src
parent9c7b019bc56277e08a504a992e287522f42abd0b (diff)
downloadhdf5-d84e6e525e28ace2f9163253212436fc09d30b8c.zip
hdf5-d84e6e525e28ace2f9163253212436fc09d30b8c.tar.gz
hdf5-d84e6e525e28ace2f9163253212436fc09d30b8c.tar.bz2
[svn-r6426] Purpose:
Update Description: Final support addition for FPHDF5. Wherever there was an equivalent MPIO or MPIO/POSIX call/check, I placed an FPHDF5 call/check there as well, with the appropriate #ifdefs in place. The hdf5.h is updated with the H5FDfphdf5.h driver #include. Platforms tested: Linux & Modi4
Diffstat (limited to 'src')
-rw-r--r--src/H5AC.c41
-rw-r--r--src/H5Dcontig.c78
-rw-r--r--src/H5Distore.c50
-rw-r--r--src/H5Fcontig.c78
-rw-r--r--src/H5Fistore.c50
-rw-r--r--src/hdf5.h25
6 files changed, 209 insertions, 113 deletions
diff --git a/src/H5AC.c b/src/H5AC.c
index 32f4afe..9c007ce 100644
--- a/src/H5AC.c
+++ b/src/H5AC.c
@@ -47,9 +47,10 @@
#include "H5Pprivate.h" /* Property lists */
/*
- * The MPIO & MPIPOSIX drivers are needed because there are places where we
- * check for the parallel I/O transfer mode.
+ * The MPIO, MPIPOSIX, & FPHDF5 drivers are needed because there are
+ * places where we check for the parallel I/O transfer mode.
*/
+#include "H5FDfphdf5.h"
#include "H5FDmpio.h"
#include "H5FDmpiposix.h"
@@ -483,8 +484,8 @@ H5AC_find(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr,
info = cache->slot + idx;
#ifdef H5_HAVE_PARALLEL
- /* If MPIO or MPIPOSIX is used, do special parallel I/O actions */
- if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f)) {
+ /* If MPIO, MPIPOSIX, or FPHDF5 is used, do special parallel I/O actions */
+ if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f) || IS_H5FD_FPHDF5(f)) {
H5AC_dest_func_t dest;
/* Get local pointer to file's dirty cache information */
@@ -561,8 +562,8 @@ H5AC_find(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr,
HGOTO_ERROR(H5E_CACHE, H5E_CANTLOAD, NULL, "unable to load object");
#ifdef H5_HAVE_PARALLEL
- /* If MPIO or MPIPOSIX is used, do special parallel I/O actions */
- if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f)) {
+ /* If MPIO, MPIPOSIX, or FPHDF5 is used, do special parallel I/O actions */
+ if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f) || IS_H5FD_FPHDF5(f)) {
H5P_genplist_t *dxpl; /* Dataset transfer property list */
H5FD_mpio_xfer_t xfer_mode; /* I/O transfer mode property value */
@@ -741,8 +742,8 @@ H5AC_flush(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr, hboo
if (NULL==(map=H5FL_ARR_MALLOC(int,cache->nslots)))
HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed");
#ifdef H5_HAVE_PARALLEL
- /* If MPIO or MPIPOSIX is used, do special parallel I/O actions */
- if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f)) {
+ /* If MPIO, MPIPOSIX, or FPHDF5 is used, do special parallel I/O actions */
+ if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f) || IS_H5FD_FPHDF5(f)) {
H5AC_info_t **dinfo;
H5AC_subid_t type_id;
#ifndef NDEBUG
@@ -855,8 +856,8 @@ H5AC_flush(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr, hboo
i = H5AC_HASH(f, addr);
info = cache->slot + i;
#ifdef H5_HAVE_PARALLEL
- /* If MPIO or MPIPOSIX is used, do special parallel I/O actions */
- if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f)) {
+ /* If MPIO, MPIPOSIX, or FPHDF5 is used, do special parallel I/O actions */
+ if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f) || IS_H5FD_FPHDF5(f)) {
H5AC_info_t **dinfo;
H5AC_subid_t type_id;
#ifndef NDEBUG
@@ -989,8 +990,8 @@ H5AC_set(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr, void *
#endif
#ifdef H5_HAVE_PARALLEL
- /* If MPIO or MPIPOSIX is used, do special parallel I/O actions */
- if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f)) {
+ /* If MPIO, MPIPOSIX, or FPHDF5 is used, do special parallel I/O actions */
+ if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f) || IS_H5FD_FPHDF5(f)) {
H5AC_info_t **dinfo;
H5AC_subid_t type_id;
H5P_genplist_t *dxpl; /* Dataset transfer property list */
@@ -1158,8 +1159,8 @@ H5AC_rename(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t old_addr,
}
#ifdef H5_HAVE_PARALLEL
- /* If MPIO or MPIPOSIX is used, do special parallel I/O actions */
- if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f)) {
+ /* If MPIO, MPIPOSIX, or FPHDF5 is used, do special parallel I/O actions */
+ if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f) || IS_H5FD_FPHDF5(f)) {
H5AC_info_t **new_dinfo;
H5AC_subid_t type_id;
H5P_genplist_t *dxpl; /* Dataset transfer property list */
@@ -1252,8 +1253,8 @@ H5AC_rename(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t old_addr,
(*new_info)->addr = new_addr;
#ifdef H5_HAVE_PARALLEL
- /* If MPIO or MPIPOSIX is used, do special parallel I/O actions */
- if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f)) {
+ /* If MPIO, MPIPOSIX, or FPHDF5 is used, do special parallel I/O actions */
+ if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f) || IS_H5FD_FPHDF5(f)) {
H5AC_info_t **old_dinfo;
H5AC_subid_t type_id;
@@ -1360,8 +1361,8 @@ H5AC_protect(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr,
#endif /* H5AC_DEBUG */
#ifdef H5_HAVE_PARALLEL
- /* If MPIO or MPIPOSIX is used, do special parallel I/O actions */
- if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f)) {
+ /* If MPIO, MPIPOSIX, or FPHDF5 is used, do special parallel I/O actions */
+ if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f) || IS_H5FD_FPHDF5(f)) {
H5AC_info_t **dinfo;
/* Get pointer to new 'held' information */
@@ -1552,8 +1553,8 @@ H5AC_unprotect(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr,
info = cache->slot + idx;
#ifdef H5_HAVE_PARALLEL
- /* If MPIO or MPIPOSIX is used, do special parallel I/O actions */
- if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f)) {
+ /* If MPIO, MPIPOSIX, or FPHDF5 is used, do special parallel I/O actions */
+ if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f) || IS_H5FD_FPHDF5(f)) {
H5AC_info_t **dinfo;
H5AC_subid_t type_id;
H5P_genplist_t *dxpl; /* Dataset transfer property list */
diff --git a/src/H5Dcontig.c b/src/H5Dcontig.c
index f3d7da3..82de6fb 100644
--- a/src/H5Dcontig.c
+++ b/src/H5Dcontig.c
@@ -1,15 +1,26 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * 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. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
/*
- * Copyright (C) 2000-2001 NCSA
- * All rights reserved.
- *
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
* Thursday, September 28, 2000
*
- * Purpose: Contiguous dataset I/O functions. These routines are similar
- * to the H5F_istore_* routines and really only abstract away dealing
+ * Purpose:
+ * Contiguous dataset I/O functions. These routines are similar to
+ * the H5F_istore_* routines and really only abstract away dealing
* with the data sieve buffer from the H5F_arr_read/write and
* H5F_seg_read/write.
- *
*/
#define H5F_PACKAGE /*suppress error about including H5Fpkg */
@@ -24,7 +35,8 @@
#include "H5Pprivate.h" /* Property lists */
#include "H5Vprivate.h" /* Vector and array functions */
-/* MPIO & MPIPOSIX drivers needed for special checks */
+/* MPIO, MPIPOSIX, & FPHDF5 drivers needed for special checks */
+#include "H5FDfphdf5.h"
#include "H5FDmpio.h"
#include "H5FDmpiposix.h"
@@ -54,6 +66,9 @@ H5FL_BLK_DEFINE_STATIC(zero_fill);
* August 22, 2002
*
* Modifications:
+ * Bill Wendling, February 20, 2003
+ * Added support for getting the barrier COMM if you're using
+ * Flexible PHDF5.
*
*-------------------------------------------------------------------------
*/
@@ -110,23 +125,38 @@ H5F_contig_fill(H5F_t *f, hid_t dxpl_id, struct H5O_layout_t *layout,
/* Set the MPI-capable file driver flag */
using_mpi=1;
} /* end if */
- else {
- if(IS_H5FD_MPIPOSIX(f)) {
- /* Get the MPI communicator */
- if (MPI_COMM_NULL == (mpi_comm=H5FD_mpiposix_communicator(f->shared->lf)))
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI communicator");
-
- /* Get the MPI rank & size */
- if ((mpi_rank=H5FD_mpiposix_mpi_rank(f->shared->lf))<0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI rank");
- if ((mpi_size=H5FD_mpiposix_mpi_size(f->shared->lf))<0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI size");
-
- /* Set the MPI-capable file driver flag */
- using_mpi=1;
- } /* end if */
- } /* end else */
-#endif /* H5_HAVE_PARALLEL */
+ else if(IS_H5FD_MPIPOSIX(f)) {
+ /* Get the MPI communicator */
+ if (MPI_COMM_NULL == (mpi_comm=H5FD_mpiposix_communicator(f->shared->lf)))
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI communicator");
+
+ /* Get the MPI rank & size */
+ if ((mpi_rank=H5FD_mpiposix_mpi_rank(f->shared->lf))<0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI rank");
+ if ((mpi_size=H5FD_mpiposix_mpi_size(f->shared->lf))<0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI size");
+
+ /* Set the MPI-capable file driver flag */
+ using_mpi=1;
+ } /* end if */
+#ifdef H5_HAVE_FPHDF5
+ else if (IS_H5FD_FPHDF5(f)) {
+ /* Get the FPHDF5 barrier communicator */
+ if (MPI_COMM_NULL == (mpi_comm = H5FD_fphdf5_barrier_communicator(f->shared->lf)))
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI communicator");
+
+ /* Get the MPI rank & size */
+ if ((mpi_rank = H5FD_fphdf5_mpi_rank(f->shared->lf)) < 0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI rank");
+
+ if ((mpi_size = H5FD_fphdf5_mpi_size(f->shared->lf)) < 0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI size");
+
+ /* Set the MPI-capable file driver flag */
+ using_mpi = 1;
+ } /* end if */
+#endif /* H5_HAVE_FPHDF5 */
+#endif /* H5_HAVE_PARALLEL */
/* Get the number of elements in the dataset's dataspace */
snpoints = H5S_get_simple_extent_npoints(space);
diff --git a/src/H5Distore.c b/src/H5Distore.c
index f2e7eb8..3afc866 100644
--- a/src/H5Distore.c
+++ b/src/H5Distore.c
@@ -56,7 +56,8 @@
#include "H5Sprivate.h" /* Dataspaces */
#include "H5Vprivate.h"
-/* MPIO & MPIPOSIX drivers needed for special checks */
+/* MPIO, MPIPOSIX, & FPHDF5 drivers needed for special checks */
+#include "H5FDfphdf5.h"
#include "H5FDmpio.h"
#include "H5FDmpiposix.h"
@@ -2429,23 +2430,38 @@ H5F_istore_allocate(H5F_t *f, hid_t dxpl_id, const H5O_layout_t *layout,
/* Set the MPI-capable file driver flag */
using_mpi=1;
} /* end if */
- else {
- if(IS_H5FD_MPIPOSIX(f)) {
- /* Get the MPI communicator */
- if (MPI_COMM_NULL == (mpi_comm=H5FD_mpiposix_communicator(f->shared->lf)))
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI communicator");
-
- /* Get the MPI rank & size */
- if ((mpi_rank=H5FD_mpiposix_mpi_rank(f->shared->lf))<0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI rank");
- if ((mpi_size=H5FD_mpiposix_mpi_size(f->shared->lf))<0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI size");
-
- /* Set the MPI-capable file driver flag */
- using_mpi=1;
- } /* end if */
+ else if(IS_H5FD_MPIPOSIX(f)) {
+ /* Get the MPI communicator */
+ if (MPI_COMM_NULL == (mpi_comm=H5FD_mpiposix_communicator(f->shared->lf)))
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI communicator");
+
+ /* Get the MPI rank & size */
+ if ((mpi_rank=H5FD_mpiposix_mpi_rank(f->shared->lf))<0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI rank");
+ if ((mpi_size=H5FD_mpiposix_mpi_size(f->shared->lf))<0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI size");
+
+ /* Set the MPI-capable file driver flag */
+ using_mpi=1;
} /* end else */
-#endif /* H5_HAVE_PARALLEL */
+#ifdef H5_HAVE_FPHDF5
+ else if (IS_H5FD_FPHDF5(f)) {
+ /* Get the FPHDF5 barrier communicator */
+ if (MPI_COMM_NULL == (mpi_comm = H5FD_fphdf5_barrier_communicator(f->shared->lf)))
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI communicator");
+
+ /* Get the MPI rank & size */
+ if ((mpi_rank = H5FD_fphdf5_mpi_rank(f->shared->lf)) < 0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI rank");
+
+ if ((mpi_size = H5FD_fphdf5_mpi_size(f->shared->lf)) < 0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI size");
+
+ /* Set the MPI-capable file driver flag */
+ using_mpi = 1;
+ } /* end if */
+#endif /* H5_HAVE_FPHDF5 */
+#endif /* H5_HAVE_PARALLEL */
/*
* Setup indice to go through all chunks. (Future improvement
diff --git a/src/H5Fcontig.c b/src/H5Fcontig.c
index f3d7da3..82de6fb 100644
--- a/src/H5Fcontig.c
+++ b/src/H5Fcontig.c
@@ -1,15 +1,26 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * 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. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
/*
- * Copyright (C) 2000-2001 NCSA
- * All rights reserved.
- *
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
* Thursday, September 28, 2000
*
- * Purpose: Contiguous dataset I/O functions. These routines are similar
- * to the H5F_istore_* routines and really only abstract away dealing
+ * Purpose:
+ * Contiguous dataset I/O functions. These routines are similar to
+ * the H5F_istore_* routines and really only abstract away dealing
* with the data sieve buffer from the H5F_arr_read/write and
* H5F_seg_read/write.
- *
*/
#define H5F_PACKAGE /*suppress error about including H5Fpkg */
@@ -24,7 +35,8 @@
#include "H5Pprivate.h" /* Property lists */
#include "H5Vprivate.h" /* Vector and array functions */
-/* MPIO & MPIPOSIX drivers needed for special checks */
+/* MPIO, MPIPOSIX, & FPHDF5 drivers needed for special checks */
+#include "H5FDfphdf5.h"
#include "H5FDmpio.h"
#include "H5FDmpiposix.h"
@@ -54,6 +66,9 @@ H5FL_BLK_DEFINE_STATIC(zero_fill);
* August 22, 2002
*
* Modifications:
+ * Bill Wendling, February 20, 2003
+ * Added support for getting the barrier COMM if you're using
+ * Flexible PHDF5.
*
*-------------------------------------------------------------------------
*/
@@ -110,23 +125,38 @@ H5F_contig_fill(H5F_t *f, hid_t dxpl_id, struct H5O_layout_t *layout,
/* Set the MPI-capable file driver flag */
using_mpi=1;
} /* end if */
- else {
- if(IS_H5FD_MPIPOSIX(f)) {
- /* Get the MPI communicator */
- if (MPI_COMM_NULL == (mpi_comm=H5FD_mpiposix_communicator(f->shared->lf)))
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI communicator");
-
- /* Get the MPI rank & size */
- if ((mpi_rank=H5FD_mpiposix_mpi_rank(f->shared->lf))<0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI rank");
- if ((mpi_size=H5FD_mpiposix_mpi_size(f->shared->lf))<0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI size");
-
- /* Set the MPI-capable file driver flag */
- using_mpi=1;
- } /* end if */
- } /* end else */
-#endif /* H5_HAVE_PARALLEL */
+ else if(IS_H5FD_MPIPOSIX(f)) {
+ /* Get the MPI communicator */
+ if (MPI_COMM_NULL == (mpi_comm=H5FD_mpiposix_communicator(f->shared->lf)))
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI communicator");
+
+ /* Get the MPI rank & size */
+ if ((mpi_rank=H5FD_mpiposix_mpi_rank(f->shared->lf))<0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI rank");
+ if ((mpi_size=H5FD_mpiposix_mpi_size(f->shared->lf))<0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI size");
+
+ /* Set the MPI-capable file driver flag */
+ using_mpi=1;
+ } /* end if */
+#ifdef H5_HAVE_FPHDF5
+ else if (IS_H5FD_FPHDF5(f)) {
+ /* Get the FPHDF5 barrier communicator */
+ if (MPI_COMM_NULL == (mpi_comm = H5FD_fphdf5_barrier_communicator(f->shared->lf)))
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI communicator");
+
+ /* Get the MPI rank & size */
+ if ((mpi_rank = H5FD_fphdf5_mpi_rank(f->shared->lf)) < 0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI rank");
+
+ if ((mpi_size = H5FD_fphdf5_mpi_size(f->shared->lf)) < 0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI size");
+
+ /* Set the MPI-capable file driver flag */
+ using_mpi = 1;
+ } /* end if */
+#endif /* H5_HAVE_FPHDF5 */
+#endif /* H5_HAVE_PARALLEL */
/* Get the number of elements in the dataset's dataspace */
snpoints = H5S_get_simple_extent_npoints(space);
diff --git a/src/H5Fistore.c b/src/H5Fistore.c
index f2e7eb8..3afc866 100644
--- a/src/H5Fistore.c
+++ b/src/H5Fistore.c
@@ -56,7 +56,8 @@
#include "H5Sprivate.h" /* Dataspaces */
#include "H5Vprivate.h"
-/* MPIO & MPIPOSIX drivers needed for special checks */
+/* MPIO, MPIPOSIX, & FPHDF5 drivers needed for special checks */
+#include "H5FDfphdf5.h"
#include "H5FDmpio.h"
#include "H5FDmpiposix.h"
@@ -2429,23 +2430,38 @@ H5F_istore_allocate(H5F_t *f, hid_t dxpl_id, const H5O_layout_t *layout,
/* Set the MPI-capable file driver flag */
using_mpi=1;
} /* end if */
- else {
- if(IS_H5FD_MPIPOSIX(f)) {
- /* Get the MPI communicator */
- if (MPI_COMM_NULL == (mpi_comm=H5FD_mpiposix_communicator(f->shared->lf)))
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI communicator");
-
- /* Get the MPI rank & size */
- if ((mpi_rank=H5FD_mpiposix_mpi_rank(f->shared->lf))<0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI rank");
- if ((mpi_size=H5FD_mpiposix_mpi_size(f->shared->lf))<0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI size");
-
- /* Set the MPI-capable file driver flag */
- using_mpi=1;
- } /* end if */
+ else if(IS_H5FD_MPIPOSIX(f)) {
+ /* Get the MPI communicator */
+ if (MPI_COMM_NULL == (mpi_comm=H5FD_mpiposix_communicator(f->shared->lf)))
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI communicator");
+
+ /* Get the MPI rank & size */
+ if ((mpi_rank=H5FD_mpiposix_mpi_rank(f->shared->lf))<0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI rank");
+ if ((mpi_size=H5FD_mpiposix_mpi_size(f->shared->lf))<0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI size");
+
+ /* Set the MPI-capable file driver flag */
+ using_mpi=1;
} /* end else */
-#endif /* H5_HAVE_PARALLEL */
+#ifdef H5_HAVE_FPHDF5
+ else if (IS_H5FD_FPHDF5(f)) {
+ /* Get the FPHDF5 barrier communicator */
+ if (MPI_COMM_NULL == (mpi_comm = H5FD_fphdf5_barrier_communicator(f->shared->lf)))
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI communicator");
+
+ /* Get the MPI rank & size */
+ if ((mpi_rank = H5FD_fphdf5_mpi_rank(f->shared->lf)) < 0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI rank");
+
+ if ((mpi_size = H5FD_fphdf5_mpi_size(f->shared->lf)) < 0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI size");
+
+ /* Set the MPI-capable file driver flag */
+ using_mpi = 1;
+ } /* end if */
+#endif /* H5_HAVE_FPHDF5 */
+#endif /* H5_HAVE_PARALLEL */
/*
* Setup indice to go through all chunks. (Future improvement
diff --git a/src/hdf5.h b/src/hdf5.h
index e7657a3..4bb9d10 100644
--- a/src/hdf5.h
+++ b/src/hdf5.h
@@ -1,14 +1,16 @@
-/****************************************************************************
- * NCSA HDF *
- * Software Development Group *
- * National Center for Supercomputing Applications *
- * University of Illinois at Urbana-Champaign *
- * 605 E. Springfield, Champaign IL 61820 *
- * *
- * For conditions of distribution and use, see the accompanying *
- * hdf/COPYING file. *
- * *
- ****************************************************************************/
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * 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. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
* This is the main public HDF5 include file. Put further information in
@@ -41,6 +43,7 @@
/* Predefined file drivers */
#include "H5FDcore.h" /* Files stored entirely in memory */
#include "H5FDfamily.h" /* File families */
+#include "H5FDfphdf5.h" /* Flexible Parallel HDF5 */
#include "H5FDgass.h" /* Remote files using GASS I/O */
#include "H5FDlog.h" /* sec2 driver with I/O logging (for debugging) */
#include "H5FDmpio.h" /* Parallel files using MPI-2 I/O */