0

According to the HDF5 manual, the "MPI I/O transfer mode" can be set through the HDF5 function H5Pset_dxpl_mpio(...). One of the parameters is the transfer mode. It can be either H5FD_MPIO_INDEPENDENT (default) or H5FD_MPIO_COLLECTIVE. I can't find the difference between the two options. What is it? Is H5FD_MPIO_COLLECTIVE necessary if I am computing the offset manually (per mpi process) when writing in a hyperslab?

In a small parallel program that write one shared file between all processes, I tried to switch between the two options, there is no difference, no warning or crash.

kcw78
  • 7,131
  • 3
  • 12
  • 44
Squirrel
  • 23
  • 2

1 Answers1

2

Independent vs Collective is a MPI I/O concept (not specific to the HDF5 API). There is an old HDF Group document that discusses this. Ref: Performance Comparison of Collective I/O And Independent I/O with Derived Datatypes (ca. 2006)

In short, "Independent IO means that each process does IO independently, while Collective IO requires all processes to participate when doing IO operations. The advantage of Collective IO is that it allows MPI-IO to do optimization to improve IO performance."

The Introduction has a good example that explains the difference in the 2 processes.

You may not see an performance difference because you are writing small amounts of data.

Google "mpi independent vs collective" to find more MPI IO references (not HDF5 specific).

kcw78
  • 7,131
  • 3
  • 12
  • 44