diff --git a/src/gpu/VirtualFluids_GPU/Communication/Communicator.h b/src/gpu/VirtualFluids_GPU/Communication/Communicator.h
index 91669f48ad1ca0fe2d75fbf54d90d9607d83204c..c52d5af9cacb4d5ae4e46090a263f67d4e63f12d 100644
--- a/src/gpu/VirtualFluids_GPU/Communication/Communicator.h
+++ b/src/gpu/VirtualFluids_GPU/Communication/Communicator.h
@@ -27,8 +27,7 @@ public:
     virtual void resetRequest() = 0;
     //////////////////////////////////////////////////////////////////////////
     virtual int mapCudaDevice(const int &rank, const int &size, const std::vector<unsigned int> &devices, const int &maxdev) = 0;
-    virtual std::vector<double> gatherNUPS(double processNups) = 0;
-    virtual double sumNups(double processNups) = 0;
+    virtual double reduceSum(double quantityPerProcess) = 0;
     //////////////////////////////////////////////////////////////////////////
     virtual void receive_send(uint *buffer_receive, int size_buffer_recv, int neighbor_rank_recv, uint *buffer_send,
                               int size_buffer_send, int neighbor_rank_send) const override = 0;
diff --git a/src/gpu/VirtualFluids_GPU/Communication/MpiCommunicator.cpp b/src/gpu/VirtualFluids_GPU/Communication/MpiCommunicator.cpp
index c56dae1dd1bf81a2fe8a68d2649abc35ce208240..8af5931ce92b6fa4904ab3aea7c901773f61a6b3 100644
--- a/src/gpu/VirtualFluids_GPU/Communication/MpiCommunicator.cpp
+++ b/src/gpu/VirtualFluids_GPU/Communication/MpiCommunicator.cpp
@@ -216,21 +216,9 @@ int MpiCommunicator::mapCudaDevice(const int &rank, const int &size, const std::
     return device;
 }
 
-std::vector<double> MpiCommunicator::gatherNUPS(double processNups)
+double MpiCommunicator::reduceSum(double quantityPerProcess)
 { 
-    double *buffer_send = &processNups;
-    double *buffer_recv = (double *)malloc(sizeof(double) * this->numprocs);
-
-    MPI_Gather(buffer_send, 1, MPI_DOUBLE, buffer_recv, 1, MPI_DOUBLE, 0, commGPU);
-
-    if (this->PID == 0)
-        return std::vector<double>(buffer_recv, buffer_recv + this->numprocs);
-    return std::vector<double>(); 
-}
-
-double MpiCommunicator::sumNups(double processNups)
-{ 
-    double *buffer_send = &processNups;
+    double *buffer_send = &quantityPerProcess;
     double *buffer_recv = (double *)malloc(sizeof(double));
 
     MPI_Reduce(buffer_send, buffer_recv, 1, MPI_DOUBLE, MPI_SUM, 0, commGPU);
diff --git a/src/gpu/VirtualFluids_GPU/Communication/MpiCommunicator.h b/src/gpu/VirtualFluids_GPU/Communication/MpiCommunicator.h
index 3fc5d1a9418afdec0caae6db1a99fe1f5921ac02..f7f202eb9d0d447fe52924056b637817a141156a 100644
--- a/src/gpu/VirtualFluids_GPU/Communication/MpiCommunicator.h
+++ b/src/gpu/VirtualFluids_GPU/Communication/MpiCommunicator.h
@@ -55,8 +55,7 @@ public:
     void exchngDataGeo(int *sbuf_t, int *rbuf_t, int *sbuf_b, int *rbuf_b, int count);
     MPI_Comm getMpiCommunicator();
     int mapCudaDevice(const int &rank, const int &size, const std::vector<unsigned int> &devices, const int &maxdev) override;
-    std::vector<double> gatherNUPS(double processNups) override;
-    double sumNups(double processNups) override;
+    double reduceSum(double quantityPerProcess) override;
     //////////////////////////////////////////////////////////////////////////
     void receive_send(uint *buffer_receive, int size_buffer_recv, int neighbor_rank_recv, uint *buffer_send,
                       int size_buffer_send, int neighbor_rank_send) const override;
diff --git a/src/gpu/VirtualFluids_GPU/Output/Timer.cpp b/src/gpu/VirtualFluids_GPU/Output/Timer.cpp
index 5a5e010944a776038416386267c3bf6477d47e9f..f6efff58440bd786d57a3ccb44d2271c29761323 100644
--- a/src/gpu/VirtualFluids_GPU/Output/Timer.cpp
+++ b/src/gpu/VirtualFluids_GPU/Output/Timer.cpp
@@ -52,7 +52,7 @@ void Timer::outputPerformance(uint t, Parameter* para, vf::gpu::Communicator& co
 
     // When using multiple GPUs, sum the nups of all processes
     if (communicator.getNumberOfProcess() > 1) {
-        double nupsSum =  communicator.sumNups(fnups);
+        double nupsSum =  communicator.reduceSum(fnups);
         if (communicator.getPID() == 0)
             VF_LOG_INFO("Sum of all {} processes: Nups in Mio: {:.1f}", communicator.getNumberOfProcess(), nupsSum);
     }
diff --git a/src/gpu/VirtualFluids_GPU/Parameter/ParameterTest.cpp b/src/gpu/VirtualFluids_GPU/Parameter/ParameterTest.cpp
index 8109766a36e489bfd903deba2d68d52250c72c8e..6073a4d6dd2aa7ea145bee7f6e0225f90d3ec171 100644
--- a/src/gpu/VirtualFluids_GPU/Parameter/ParameterTest.cpp
+++ b/src/gpu/VirtualFluids_GPU/Parameter/ParameterTest.cpp
@@ -276,11 +276,7 @@ public:
     {
         return 0;
     };
-    std::vector<double> gatherNUPS(double processNups) override
-    {
-        return {};
-    };
-    double sumNups(double processNups) override
+    double reduceSum(double quantityPerProcess) override
     {
         return 0;
     };