<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Mar 23, 2016 at 2:28 PM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
  Jed and Matt and anyone else who understands the HDF5 viewer<br>
<br>
       No one has answered this. If I get no response  I am going to assume that PETSc requires HDF5 built with MPI and remove the #if defs in the code.<br></blockquote><div><br></div><div>Are you sure that the Vec code fails when HDF5 is serial? I don't know what happens when multiple</div><div>procs use H5Lexists() and friends. Maybe its transactional on the file. It does use</div><div><br></div><div>   PetscStackCallHDF5Return(plist_id,H5Pcreate,(H5P_DATASET_XFER));</div><div>#if defined(PETSC_HAVE_H5PSET_FAPL_MPIO)</div><div>  PetscStackCallHDF5(H5Pset_dxpl_mpio,(plist_id, H5FD_MPIO_COLLECTIVE));</div><div>#endif</div><div><br></div><div>If it does require MPI, then fine, take out the #ifdefs.</div><div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
  Barry<br>
<br>
> On Mar 18, 2016, at 2:50 PM, Barry Smith <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>> wrote:<br>
><br>
><br>
>  I am confused about the usage of HDF5 from PETSc.<br>
><br>
>   In hdf5.py<br>
><br>
>  def configureLibrary(self):<br>
>    if self.libraries.check(self.dlib, 'H5Pset_fapl_mpio'):<br>
>      self.addDefine('HAVE_H5PSET_FAPL_MPIO', 1)<br>
>    return<br>
><br>
>  So PETSc does not require HDF5 to have been built using MPI (for example if it was built by someone else without MPI.)<br>
><br>
>  In PetscErrorCode  PetscViewerFileSetName_HDF5(PetscViewer viewer, const char name[])<br>
><br>
> #if defined(PETSC_HAVE_H5PSET_FAPL_MPIO)<br>
>  PetscStackCallHDF5(H5Pset_fapl_mpio,(plist_id, PetscObjectComm((PetscObject)viewer), info));<br>
> #endif<br>
><br>
>  so it only sets collective IO if the symbol was found and hence HDF5 was built for MPI<br>
><br>
>  But in places like  VecView_MPI_HDF5(Vec xin, PetscViewer viewer)<br>
><br>
>   it uses MPI as if it was collective? Though it might not be because hdf5 could have been built without MPI<br>
><br>
>  So if I build PETSc with a non-MPI hdf5 and yet use the hdf5 viewer in parallel; do the generated hdf5 files contain garbage?<br>
><br>
>  It seems to me we need to have hdf5.py REQUIRE the existence of H5Pset_fapl_mpio?<br>
><br>
>  Barry<br>
><br>
><br>
><br>
><br>
><br>
<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div>
</div></div>