From 4a2ae056e0b3fbf0ecefff89cd3da8c6bf8ba1fa Mon Sep 17 00:00:00 2001
From: Anna Wellmann <a.wellmann@tu-bs.de>
Date: Thu, 2 Jun 2022 11:13:03 +0200
Subject: [PATCH] Fix bug in vf::gpu::Communicator

Some variables were not assigned values in the constructor.  This caused an "MPI_ERR_COMM: invalid communicator" error when using multiple gpus.
---
 src/gpu/VirtualFluids_GPU/Communication/Communicator.cpp | 4 ++++
 src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp        | 1 -
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/gpu/VirtualFluids_GPU/Communication/Communicator.cpp b/src/gpu/VirtualFluids_GPU/Communication/Communicator.cpp
index c347be4c9..a5296b120 100644
--- a/src/gpu/VirtualFluids_GPU/Communication/Communicator.cpp
+++ b/src/gpu/VirtualFluids_GPU/Communication/Communicator.cpp
@@ -28,6 +28,10 @@ Communicator::Communicator()
     MPI_Comm_rank(MPI_COMM_WORLD, &PID);
     MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
 
+    commGPU = MPI_COMM_WORLD;
+    requestGPU.resize(0);
+    rcount = 0;
+
     // Get a new communicator for a decomposition of the domain
     int isperiodic[1] = { 0 };
     MPI_Cart_create(MPI_COMM_WORLD, 1, &numprocs, isperiodic, 1, &comm1d);
diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp
index 4f8e9ef3d..a30754710 100644
--- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp
+++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp
@@ -1510,7 +1510,6 @@ bool Parameter::findIndexInSendNodesXY(int level, int index, int &indexOfProcess
     for (uint k = 0; k < (unsigned int)(this->getNumberOfProcessNeighborsY(level, "send")); k++) {
         for (int l = 0; l < parH[level]->sendProcessNeighborY[k].numberOfNodes; l++) {
             if (parH[level]->sendProcessNeighborY[k].index[l] == index) {
-                ;
                 indexOfProcessNeighborSend = k;
                 indexInSendBuffer          = l;
                 return true;
-- 
GitLab