From d9112744cbe9082ff8d72fa5fbfb7da0a95a8cc2 Mon Sep 17 00:00:00 2001
From: Berenger Bramas <bbramas@mpcdf.mpg.de>
Date: Wed, 3 May 2017 16:13:49 +0200
Subject: [PATCH] Add parameter to choose collective or independent hdf5 io

---
 bfps/cpp/particles/particles_output_hdf5.hpp | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/bfps/cpp/particles/particles_output_hdf5.hpp b/bfps/cpp/particles/particles_output_hdf5.hpp
index cc9feba2..567f4668 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);
         }
 
-- 
GitLab