diff --git a/src/communication/mpi_global_policy.hpp b/src/communication/mpi_global_policy.hpp
index 0e9ec33370695990e2e2fa0d8d03d4a1e8b26c26..744e5d608d94ae9bcea9ee57920d8966bad3c14c 100644
--- a/src/communication/mpi_global_policy.hpp
+++ b/src/communication/mpi_global_policy.hpp
@@ -38,6 +38,11 @@ struct mpi_global_policy {
         return nest::mc::mpi::reduce(value, MPI_MAX);
     }
 
+    template <typename T>
+    static T sum(T value) {
+        return nest::mc::mpi::reduce(value, MPI_SUM);
+    }
+
     template <
         typename T,
         typename = typename std::enable_if<std::is_integral<T>::value>
diff --git a/src/communication/serial_global_policy.hpp b/src/communication/serial_global_policy.hpp
index 9af5eae3fd0dd84be71cb6346018c607fa9ab3df..113987698ee85deb62f8f88148811dee674f1ced 100644
--- a/src/communication/serial_global_policy.hpp
+++ b/src/communication/serial_global_policy.hpp
@@ -35,6 +35,11 @@ struct serial_global_policy {
         return value;
     }
 
+    template <typename T>
+    static T sum(T value) {
+        return value;
+    }
+
     template <
         typename T,
         typename = typename std::enable_if<std::is_integral<T>::value>