diff --git a/BaseLib/MPI.h b/BaseLib/MPI.h
index 8939563ae2cd0e022df78155f321aef1203ba452..891b81f98b3042de61674c8151e7e7a88d978e6d 100644
--- a/BaseLib/MPI.h
+++ b/BaseLib/MPI.h
@@ -112,6 +112,18 @@ static T allreduce(T const& value, MPI_Op const& mpi_op, Mpi const& mpi)
     return result;
 }
 
+template <typename T>
+static std::vector<T> allreduce(std::vector<T> const& vector,
+                                MPI_Op const& mpi_op, Mpi const& mpi)
+{
+    std::size_t const size = vector.size();
+    std::vector<T> result(vector.size());
+
+    MPI_Allreduce(vector.data(), result.data(), size, mpiType<T>(), mpi_op,
+                  mpi.communicator);
+    return result;
+}
+
 template <typename T>
 static void allreduceInplace(std::vector<T>& vector,
                              MPI_Op const& mpi_op,