diff --git a/dumux/io/gridcreator.hh b/dumux/io/gridcreator.hh
index e9546a399479a492c0b2c0e5d8ac36516ee71040..d27b9bf0fa1bac1ae1b1b18009c087d10b854b99 100644
--- a/dumux/io/gridcreator.hh
+++ b/dumux/io/gridcreator.hh
@@ -254,11 +254,27 @@ protected:
             if(domainMarkers)
             {
                 enableGmshDomainMarkers_ = true;
-                gridPtr() = std::shared_ptr<Grid>(Dune::GmshReader<Grid>::read(fileName, boundaryMarkers_, elementMarkers_, verbose, boundarySegments));
+                if (Dune::MPIHelper::getCollectiveCommunication().rank() == 0)
+                {
+                    gridPtr() = std::shared_ptr<Grid>(Dune::GmshReader<Grid>::read(fileName, boundaryMarkers_, elementMarkers_, verbose, boundarySegments));
+                }
+                else
+                {
+                    Dune::GridFactory<Grid> factory;
+                    gridPtr() = std::shared_ptr<Grid>(factory.createGrid());
+                }
             }
             else
             {
-                gridPtr() = std::shared_ptr<Grid>(Dune::GmshReader<Grid>::read(fileName, verbose, boundarySegments));
+                if (Dune::MPIHelper::getCollectiveCommunication().rank() == 0)
+                {
+                    gridPtr() = std::shared_ptr<Grid>(Dune::GmshReader<Grid>::read(fileName, verbose, boundarySegments));
+                }
+                else
+                {
+                    Dune::GridFactory<Grid> factory;
+                    gridPtr() = std::shared_ptr<Grid>(factory.createGrid());
+                }
             }
         }
     }