From d84e6e525e28ace2f9163253212436fc09d30b8c Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Fri, 21 Feb 2003 09:04:35 -0500 Subject: [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 --- src/H5AC.c | 41 +++++++++++++++--------------- src/H5Dcontig.c | 78 +++++++++++++++++++++++++++++++++++++++------------------ src/H5Distore.c | 50 +++++++++++++++++++++++------------- src/H5Fcontig.c | 78 +++++++++++++++++++++++++++++++++++++++------------------ src/H5Fistore.c | 50 +++++++++++++++++++++++------------- src/hdf5.h | 25 ++++++++++-------- 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 * 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 * 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 */ -- cgit v0.12