Parallel Program Write Using Hyperslabs

Hello,

I am currently modifying a model so that it uses Parallel HDF5, where each process writes to a single file. I am having trouble organizing the data in the file correctly that have been written from the subdomains. I am hoping that some of you may be able to assist me.

First, here is some information about the model architecture. The number of compute processors is always one less than the total number initialized by MPI. The master processor (0) is in charge of setting up the subdomains and the time scheduling. Because of this, I would like to write the subdomains using only the non-master compute processes. For this example, I am using five (5) processors, four (4) of which are the compute processes.

I have a 3D array that is originally (10,10,2). The four processors then break it down into (5,5,2) subdomains. I have been battling with whether or not to use chunks. I have tried chunks but I cannot seem to get it to work properly because of the master processor not containing a subdomain. It is my understanding that the H5Pset_chunk MUST have the same values for EVERY processor. If that is true, then chunks will not work, especially when the subdomains are broken into unequal chunks. Thus, I have been using contiguous hyperslabs, but I cannot seem to organize the data properly. I am trying to match the organization of a non-Parallel file. Using h5dump, the array from the "correct" file prints:

   DATASET "LEAF_CLASS" {
      DATATYPE H5T_IEEE_F32LE
      DATASPACE SIMPLE { ( 10, 10, 2 ) / ( 10, 10, 2 ) }
      DATA {
      (0,0,0): 0, 0,
      (0,1,0): 0, 0,
      (0,2,0): 0, 0,
      (0,3,0): 0, 0,
      (0,4,0): 0, 0,
      (0,5,0): 0, 0,
      (0,6,0): 0, 0,
      (0,7,0): 0, 0,
      (0,8,0): 0, 0,
      (0,9,0): 0, 0,
      (1,0,0): 0, 0,
      (1,1,0): 0, 0,
      (1,2,0): 0, 0,
      (1,3,0): 0, 0,
      (1,4,0): 0, 0,
      (1,5,0): 0, 0,
      (1,6,0): 0, 0,
      (1,7,0): 0, 0,
      (1,8,0): 0, 0,
      (1,9,0): 0, 0,
      (2,0,0): 0, 0,
      (2,1,0): 0, 0,
      (2,2,0): 0, 0,
      (2,3,0): 0, 0,
      (2,4,0): 0, 0,
      (2,5,0): 0, 0,
      (2,6,0): 0, 0,
      (2,7,0): 0, 0,
      (2,8,0): 0, 0,
      (2,9,0): 0, 0,
      (3,0,0): 0, 0,
      (3,1,0): 0, 0,
      (3,2,0): 0, 0,
      (3,3,0): 0, 0,
      (3,4,0): 0, 0,
      (3,5,0): 0, 0,
      (3,6,0): 0, 0,
      (3,7,0): 0, 0,
      (3,8,0): 0, 0,
      (3,9,0): 0, 0,
      (4,0,0): 0, 0,
      (4,1,0): 0, 0,
      (4,2,0): 0, 0,
      (4,3,0): 0, 0,
      (4,4,0): 0, 0,
      (4,5,0): 0, 0,
      (4,6,0): 0, 0,
      (4,7,0): 0, 0,
      (4,8,0): 0, 0,
      (4,9,0): 0, 0,
      (5,0,0): 3, 3,
      (5,1,0): 3, 3,
      (5,2,0): 3, 3,
      (5,3,0): 3, 3,
      (5,4,0): 3, 3,
      (5,5,0): 3, 3,
      (5,6,0): 3, 3,
      (5,7,0): 3, 3,
      (5,8,0): 3, 3,
      (5,9,0): 3, 3,
      (6,0,0): 3, 3,
      (6,1,0): 3, 3,
      (6,2,0): 3, 3,
      (6,3,0): 3, 3,
      (6,4,0): 3, 3,
      (6,5,0): 3, 3,
      (6,6,0): 3, 3,
      (6,7,0): 3, 3,
      (6,8,0): 3, 3,
      (6,9,0): 3, 3,
      (7,0,0): 3, 3,
      (7,1,0): 3, 3,
      (7,2,0): 3, 3,
      (7,3,0): 3, 3,
      (7,4,0): 3, 3,
      (7,5,0): 3, 3,
      (7,6,0): 3, 3,
      (7,7,0): 3, 3,
      (7,8,0): 3, 3,
      (7,9,0): 3, 3,
      (8,0,0): 3, 3,
      (8,1,0): 3, 3,
      (8,2,0): 3, 3,
      (8,3,0): 3, 3,
      (8,4,0): 3, 3,
      (8,5,0): 3, 3,
      (8,6,0): 3, 3,
      (8,7,0): 3, 3,
      (8,8,0): 3, 3,
      (8,9,0): 3, 3,
      (9,0,0): 3, 3,
      (9,1,0): 3, 3,
      (9,2,0): 3, 3,
      (9,3,0): 3, 3,
      (9,4,0): 3, 3,
      (9,5,0): 3, 3,
      (9,6,0): 3, 3,
      (9,7,0): 3, 3,
      (9,8,0): 3, 3,
      (9,9,0): 3, 3
      }
   }

The 0's correspond to the third dimension=0, while the 3's are when the third dimension=1. Any help would be MUCH appreciated.

Thank you!
Rob

···

____________________________
Robert Seigel, Ph.D.
Colorado State University
Department of Atmospheric Science
1371 Campus Delivery
Fort Collins, CO 80523
(970) 491-8331
rseigel@atmos.colostate.edu