From 9a52b58e3809de85d5f5efb397ff4500d5658f70 Mon Sep 17 00:00:00 2001
From: "TESLA03\\Master" <a.wellmann@tu-bs.de>
Date: Thu, 15 Jul 2021 18:56:02 +0200
Subject: [PATCH] Add NodeIndicesMultiGPU to Parameter

---
 apps/gpu/LBM/MusselOyster/MusselOyster.cpp        | 11 ++++-------
 src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp | 12 ++++++++++++
 src/gpu/VirtualFluids_GPU/Parameter/Parameter.h   |  9 +++++++++
 3 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/apps/gpu/LBM/MusselOyster/MusselOyster.cpp b/apps/gpu/LBM/MusselOyster/MusselOyster.cpp
index 1a8493d21..c23e4d5df 100644
--- a/apps/gpu/LBM/MusselOyster/MusselOyster.cpp
+++ b/apps/gpu/LBM/MusselOyster/MusselOyster.cpp
@@ -245,11 +245,10 @@ void multipleLevel(const std::string& configPath)
             //gridBuilder->writeGridsToVtk(path + "/" + bivalveType + "/" + std::to_string(generatePart) + "/grid/");
             //gridBuilder->writeArrows(path + "/" + bivalveType + "/" + std::to_string(generatePart) + " /arrow");
 
-            std::cout << "number of grids in gridBuilder.................... " << gridBuilder->getGrids().size()
-                      << std::endl;
-
-            SPtr<NodeIndicesMultiGPU> paraMultiGPU = std::make_shared<NodeIndicesMultiGPU>(NodeIndicesMultiGPU(gridBuilder));
-            
+            gridBuilder->findGeoFluidNodes();
+            std::shared_ptr<NodeIndicesMultiGPU> nodeIndicesMultiGPU = std::make_shared<NodeIndicesMultiGPU>(gridBuilder->getGeoFluidSizes(), 
+                                                                                                             gridBuilder->getGeoFluidNodeIndices());
+            para->setNodeIndicesMultiGPU(nodeIndicesMultiGPU);
 
             SimulationFileWriter::write(gridPath + "/" + std::to_string(generatePart) + "/", gridBuilder, FILEFORMAT::BINARY);
            
@@ -279,7 +278,6 @@ void multipleLevel(const std::string& configPath)
 
             SimulationFileWriter::write(gridPath, gridBuilder, FILEFORMAT::BINARY);
         }
-
         
         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -316,7 +314,6 @@ void multipleLevel(const std::string& configPath)
 
        //return;
     }
-
         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
     SPtr<CudaMemoryManager> cudaMemoryManager = CudaMemoryManager::make(para);
diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp
index ffabc467d..de19d7419 100644
--- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp
+++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp
@@ -2486,4 +2486,16 @@ real Parameter::TrafoZtoMGsWorld(int CoordZ, int level)
 	temp += (real)((CoordZ) * parH[level]->dx);
 	return temp;
 }
+
+// CUDA Streams Multi GPU
+void Parameter::setNodeIndicesMultiGPU(std::shared_ptr<NodeIndicesMultiGPU> nodeIndicesMultiGPU)
+{
+    this->nodeIndicesMultiGPU = nodeIndicesMultiGPU;
+}
+
+std::shared_ptr<NodeIndicesMultiGPU> Parameter::getNodeIndicesMultiGPU()
+{
+    return this->nodeIndicesMultiGPU;
+}
+
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
index c95a79771..9ea35d9ff 100644
--- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
+++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
@@ -41,6 +41,7 @@
 #include "LBM/D3Q27.h"
 #include "LBM/LB.h"
 
+#include "VirtualFluids_GPU/Parameter/NodeIndicesMultiGPU.h"
 
 #include "VirtualFluids_GPU_export.h"
 
@@ -835,6 +836,14 @@ private:
     ////////////////////////////////////////////////////////////////////////////
     // initial condition
     std::function<void(real, real, real, real &, real &, real &, real &)> initialCondition;
+
+    
+    // CUDA Streams Multi GPU
+    std::shared_ptr<NodeIndicesMultiGPU> nodeIndicesMultiGPU;
+
+public:
+    void setNodeIndicesMultiGPU(std::shared_ptr<NodeIndicesMultiGPU> nodeIndicesMultiGPU);
+    std::shared_ptr<NodeIndicesMultiGPU> getNodeIndicesMultiGPU();
 };
 
 #endif
-- 
GitLab