[MOAB-dev] r3946 - in MOAB/trunk: src/io src/io/mhdf/include src/io/mhdf/src src/parallel test/parallel

kraftche at cae.wisc.edu kraftche at cae.wisc.edu
Mon May 24 16:40:26 CDT 2010


Author: kraftche
Date: 2010-05-24 16:40:26 -0500 (Mon, 24 May 2010)
New Revision: 3946

Modified:
   MOAB/trunk/src/io/ReadHDF5.cpp
   MOAB/trunk/src/io/WriteHDF5.cpp
   MOAB/trunk/src/io/mhdf/include/mhdf.h
   MOAB/trunk/src/io/mhdf/src/nodes.c
   MOAB/trunk/src/io/mhdf/src/util.c
   MOAB/trunk/src/io/mhdf/src/util.h
   MOAB/trunk/src/parallel/WriteHDF5Parallel.cpp
   MOAB/trunk/test/parallel/mhdf_parallel.c
Log:
Some changes to help diagnose time spent writing node coordinates on cosmea:
  o Ask HDF5 library to arrange node coordinates on disk closer to how
    we intend to read/write them (e.g. group all X-coordinates together, etc.)
  o More fine-grainded debug output in node-writing code.




Modified: MOAB/trunk/src/io/ReadHDF5.cpp
===================================================================
--- MOAB/trunk/src/io/ReadHDF5.cpp	2010-05-24 17:46:09 UTC (rev 3945)
+++ MOAB/trunk/src/io/ReadHDF5.cpp	2010-05-24 21:40:26 UTC (rev 3946)
@@ -1017,9 +1017,6 @@
 
 ErrorCode ReadHDF5::read_nodes( const Range& node_file_ids )
 {
-
-  debug_barrier();
-
   ErrorCode rval;
   mhdf_Status status;
   const int dim = fileInfo->nodes.vals_per_ent;
@@ -1063,6 +1060,7 @@
     long offset = p->first - fileInfo->nodes.start_id;
     
     debug_track.record_io( offset, count );
+    dbgOut.tprintf(4,"Reading nodes [%ld,%ld]\n", offset, offset+count-1);
     for (int i = 0; i < dim; ++i) {
       mhdf_readNodeCoordWithOpt( data_id, offset, count, i, arrays[i], indepIO, &status );
       if (is_error(status)) {

Modified: MOAB/trunk/src/io/WriteHDF5.cpp
===================================================================
--- MOAB/trunk/src/io/WriteHDF5.cpp	2010-05-24 17:46:09 UTC (rev 3945)
+++ MOAB/trunk/src/io/WriteHDF5.cpp	2010-05-24 21:40:26 UTC (rev 3946)
@@ -2177,7 +2177,7 @@
   if (nodeSet.range.size()) {
     nodeSet.total_num_ents = nodeSet.range.size();
     handle = mhdf_createNodeCoords( filePtr, dimension, nodeSet.total_num_ents,
-                                    &first_id, &status );
+                                    &first_id, true, &status );
     CHK_MHDF_ERR_0(status);
     mhdf_closeData( filePtr, handle, &status );
     CHK_MHDF_ERR_0(status);

Modified: MOAB/trunk/src/io/mhdf/include/mhdf.h
===================================================================
--- MOAB/trunk/src/io/mhdf/include/mhdf.h	2010-05-24 17:46:09 UTC (rev 3945)
+++ MOAB/trunk/src/io/mhdf/include/mhdf.h	2010-05-24 21:40:26 UTC (rev 3946)
@@ -476,6 +476,11 @@
  * \param first_node_id_out  Nodes are assigned IDs sequentially in the
  *             order they occur in the table, where the ID of the first
  *             node in the table is this passed-back value.
+ * \param column_major_chunking  If non-zero, select file layout optimized
+ *             for reading/writing a single column at a time (e.g. writing
+ *             all the X-coordinates before writing any Y-coordinates.)
+ *             If zero, optimize layout for reading all coordinates together,
+ *             in an interleaved format.
  * \param status     Passed back status of API call.


More information about the moab-dev mailing list