In the H5D__link_chunk_filtered_collective_io() function, all ranks (after some initialization work) should first hit H5D__construct_filtered_io_info_list(). Inside that function, at line 2741, each rank counts the number of chunks it has selected. Only if a rank has any selected should it then proceed with building its local list of chunks. At that point, all the ranks which aren't participating should skip this and wait for the other ranks to get done before everyone participates in the chunk redistribution. Then, the non-participating ranks shouldn't have any chunks assigned to them since they could not be considered among the crowd of ranks writing the most to any of the chunks. They should then return from the function back to H5D__link_chunk_filtered_collective_io(), with chunk_list_num_entries telling them that they have no chunks to work on. At that point they should skip the loop at 1471-1474 and wait for the others. The only case I can currently imagine where the chunk redistribution could get confused would be where no one at all is writing to anything. Multi-chunk I/O specifically handles this but I'm not sure if Link-chunk I/O will handle the case as well as Multi-Chunk does.
This is all of course if I understand what you mean by the zero-sized chunks, which I believe I understand due to the fact that your file space for the chunks is positive in size.
_______________________________________________ Hdf-forum is for HDF software users discussion. [email protected] http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org Twitter: https://twitter.com/hdf5
