diff --git a/bfps/cpp/particles/particles_output_hdf5.hpp b/bfps/cpp/particles/particles_output_hdf5.hpp index cc9feba26bd8c7f9870b4b5d7ab0c067987fdcae..567f466835dc0b554bb04af0ae1a73cf4d295c21 100644 --- a/bfps/cpp/particles/particles_output_hdf5.hpp +++ b/bfps/cpp/particles/particles_output_hdf5.hpp @@ -26,11 +26,14 @@ class particles_output_hdf5 : public abstract_particles_output<real_number, hid_t dset_id_state; hid_t dset_id_rhs; + bool use_collective_io; + public: particles_output_hdf5(MPI_Comm in_mpi_com, const std::string ps_name, const int inTotalNbParticles, - const int in_nb_rhs) + const int in_nb_rhs, + const bool in_use_collective_io = false) : abstract_particles_output<real_number, size_particle_positions, size_particle_rhs>( @@ -41,7 +44,8 @@ public: file_id(0), total_nb_particles(inTotalNbParticles), dset_id_state(0), - dset_id_rhs(0){} + dset_id_rhs(0), + use_collective_io(in_use_collective_io){} int open_file(std::string filename){ if(Parent::isInvolved()){ @@ -185,7 +189,7 @@ public: hid_t plist_id = H5Pcreate(H5P_DATASET_XFER); assert(plist_id >= 0); { - int rethdf = H5Pset_dxpl_mpio(plist_id, H5FD_MPIO_INDEPENDENT); + int rethdf = H5Pset_dxpl_mpio(plist_id, use_collective_io ? H5FD_MPIO_COLLECTIVE : H5FD_MPIO_INDEPENDENT); assert(rethdf >= 0); }