diff --git a/apps/gpu/LBM/MusselOyster/MusselOyster.cpp b/apps/gpu/LBM/MusselOyster/MusselOyster.cpp index c23e4d5dffd844ed363ef5255cc8229cab55cd0c..551e3ffd9cf3b5366ab78594008d0b3df609bdec 100644 --- a/apps/gpu/LBM/MusselOyster/MusselOyster.cpp +++ b/apps/gpu/LBM/MusselOyster/MusselOyster.cpp @@ -56,7 +56,6 @@ #include "utilities/communication.h" -#include "VirtualFluids_GPU/Parameter/NodeIndicesMultiGPU.h" //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -110,7 +109,7 @@ void multipleLevel(const std::string& configPath) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// bool useGridGenerator = true; - bool useMultiGPU = true; + bool useMultiGPU = false; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -145,8 +144,8 @@ void multipleLevel(const std::string& configPath) // para->setMaxLevel(2); - // para->setMainKernel("CumulantK15Comp"); - para->setMainKernel("CumulantK17CompChimSparse"); + para->setMainKernel("CumulantK17CompChim"); + //para->setMainKernel("CumulantK17CompChimSparse"); if (useMultiGPU) { para->setDevices(std::vector<uint>{ (uint)0, (uint)1 }); @@ -241,14 +240,11 @@ void multipleLevel(const std::string& configPath) gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); ////////////////////////////////////////////////////////////////////////// - gridBuilder->writeGridsToVtk(path + "/" + bivalveType + "/grid/part" + std::to_string(generatePart) + "_"); + //gridBuilder->writeGridsToVtk(path + "/" + bivalveType + "/grid/part" + std::to_string(generatePart) + "_"); //gridBuilder->writeGridsToVtk(path + "/" + bivalveType + "/" + std::to_string(generatePart) + "/grid/"); //gridBuilder->writeArrows(path + "/" + bivalveType + "/" + std::to_string(generatePart) + " /arrow"); 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); @@ -273,7 +269,9 @@ void multipleLevel(const std::string& configPath) gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); ////////////////////////////////////////////////////////////////////////// - gridBuilder->writeGridsToVtk("E:/temp/MusselOyster/" + bivalveType + "/grid/"); + gridBuilder->findGeoFluidNodes(); + + //gridBuilder->writeGridsToVtk("E:/temp/MusselOyster/" + bivalveType + "/grid/"); // gridBuilder->writeArrows ("E:/temp/MusselOyster/" + bivalveType + "/arrow"); SimulationFileWriter::write(gridPath, gridBuilder, FILEFORMAT::BINARY); diff --git a/src/gpu/GridGenerator/grid/Grid.h b/src/gpu/GridGenerator/grid/Grid.h index f964349315ef8ff8e143b82bf06c18f9fa5b509c..3a70c16add28cac2f717316ce53b1f735d04d7ec 100644 --- a/src/gpu/GridGenerator/grid/Grid.h +++ b/src/gpu/GridGenerator/grid/Grid.h @@ -142,10 +142,9 @@ public: virtual void repairCommunicationInices(int direction) = 0; // needed for CUDA Streams MultiGPU - virtual void findMatrixIDsGEO_FLUID() = 0; - virtual uint getGeoFluidSize() const = 0; - virtual const uint* getGeoFluidNodes() const = 0; - + virtual void findFluidNodeIndices() = 0; + virtual uint getNumberOfFluidNodes() const = 0; + virtual void getFluidNodeIndices(uint *fluidNodeIndices) const = 0; }; #endif diff --git a/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h b/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h index 8136bd38d97820955be5b1210293b6abcd4b64ff..0d12590c18dc0b3de7b25a242f70a6439cb31310 100644 --- a/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h +++ b/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h @@ -84,6 +84,9 @@ public: virtual void getSendIndices( int* sendIndices, int direction, int level ) = 0; virtual void getReceiveIndices( int* sendIndices, int direction, int level ) = 0; + virtual uint getNumberOfFluidNodes(unsigned int level) const = 0; + virtual void getFluidNodeIndices(uint *fluidNodeIndices, const int level) const = 0; + }; #endif diff --git a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp index 92bb2040fdc963e1ba991b531fd91bc8ef14674e..46059f2e56c8572033f53f8641818c3ac437d759 100644 --- a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp +++ b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp @@ -263,6 +263,10 @@ uint LevelGridBuilder::getNumberOfNodes(unsigned int level) const return grids[level]->getSparseSize(); } +uint LevelGridBuilder::getNumberOfFluidNodes(unsigned int level) const +{ + return grids[level]->getNumberOfFluidNodes(); +} std::shared_ptr<Grid> LevelGridBuilder::getGrid(int level, int box) { @@ -294,6 +298,9 @@ void LevelGridBuilder::getNodeValues(real *xCoords, real *yCoords, real *zCoords //TODO: add getSlipSize... +GRIDGENERATOR_EXPORT void LevelGridBuilder::getFluidNodeIndices(uint *fluidNodeIndices, const int level) const { + grids[level]->getFluidNodeIndices(fluidNodeIndices); +} uint LevelGridBuilder::getVelocitySize(int level) const { diff --git a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h index fe7b53f5270f7b5235fdb8a0419558fa106ef878..001c54e7169399907e6a4f108577f351732aa729 100644 --- a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h +++ b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h @@ -54,9 +54,10 @@ public: GRIDGENERATOR_EXPORT virtual std::shared_ptr<Grid> getGrid(int level, int box); - GRIDGENERATOR_EXPORT virtual unsigned int getNumberOfNodes(unsigned int level) const override; + GRIDGENERATOR_EXPORT virtual uint getNumberOfFluidNodes(unsigned int level) const override; + GRIDGENERATOR_EXPORT virtual void getFluidNodeIndices(uint* fluidNodeIndices, const int level) const override; GRIDGENERATOR_EXPORT virtual void getNodeValues(real *xCoords, real *yCoords, real *zCoords, uint *neighborX, uint *neighborY, uint *neighborZ, uint *neighborNegative, diff --git a/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp b/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp index ffa1aa776327493e94f030b36aa4f587f38713c9..2243ccd656c347a83560e32b61a619b9be5db92a 100644 --- a/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp +++ b/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp @@ -604,29 +604,10 @@ void MultipleGridBuilder::findGeoFluidNodes() { *logging::out << logging::Logger::INFO_HIGH << "Start findGeoFluidNodes()\n"; for (uint i = 0; i < grids.size(); i++) - grids[i]->findMatrixIDsGEO_FLUID(); + grids[i]->findFluidNodeIndices(); *logging::out << logging::Logger::INFO_HIGH << "Done with findGeoFluidNodes()\n"; } -const std::vector<uint> *MultipleGridBuilder::getGeoFluidSizes() const -{ - std::vector<uint> geoFluidSizes; - for (uint level = 0; level < grids.size(); level++) { - geoFluidSizes.push_back(grids[level]->getGeoFluidSize()); - } - return &geoFluidSizes; -} - -const std::vector<const uint*> *MultipleGridBuilder::getGeoFluidNodeIndices() const -{ - std::vector<const uint*> getGeoFluidNodes; - for (uint level = 0; level < grids.size(); level++) { - getGeoFluidNodes.push_back(grids[level]->getGeoFluidNodes()); - } - return &getGeoFluidNodes; -} - - void MultipleGridBuilder::writeGridsToVtk(const std::string& path) const { for(uint level = 0; level < grids.size(); level++) diff --git a/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h b/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h index d014613d1f647e184d0cd43eb8a784b3a1f592ac..8039aedd1619ab59f7a9968007b4ab206d679b7b 100644 --- a/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h +++ b/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h @@ -87,8 +87,6 @@ public: // needed for CUDA Streams MultiGPU void findGeoFluidNodes(); - GRIDGENERATOR_EXPORT const std::vector<uint> *getGeoFluidSizes() const; - GRIDGENERATOR_EXPORT const std::vector<const uint*> *getGeoFluidNodeIndices() const; }; #endif diff --git a/src/gpu/GridGenerator/grid/GridImp.cu b/src/gpu/GridGenerator/grid/GridImp.cu index 40d66190c1a1d9c495e7cbcfce11fee0061a5d1d..bbf0d4919c291422ce8f7309d93c039d3699a1b2 100644 --- a/src/gpu/GridGenerator/grid/GridImp.cu +++ b/src/gpu/GridGenerator/grid/GridImp.cu @@ -858,24 +858,18 @@ CUDA_HOST void GridImp::updateSparseIndices() sparseSize = size - removedNodes; } -CUDA_HOST void GridImp::findMatrixIDsGEO_FLUID() // typeOfGridNode = para->getParD(level)->geoSP[index] +CUDA_HOST void GridImp::findFluidNodeIndices() { // auf Basis von getNodeValues und updateSparseIndices - int geoFluidSize = 0; - int geoFluidNodesIndex = 0; for (uint index = 0; index < size; index++) { - if (this->sparseIndices[index] == -1) //unnötig? + uint sparseIndex = sparseIndices[index]; + if (sparseIndex == -1) continue; - if (this->field.isFluid(index)) { - // + 1 for numbering shift between GridGenerator and VF_GPU - geoFluidNodes[geoFluidNodesIndex] = index + 1; //+1 notwendig? - geoFluidNodesIndex++; - geoFluidSize++; - } - /*if (typeOfGridNode[index] == GEO_FLUID) - geoFluidNodes.push_back(index); */ + if (this->field.isFluid(index)) + fluidNodeIndices.push_back(sparseIndex); } + numberOfFluidNodes = fluidNodeIndices.size(); } HOSTDEVICE void GridImp::setNeighborIndices(uint index) @@ -1767,12 +1761,8 @@ HOSTDEVICE uint GridImp::getSparseSize() const return this->sparseSize; } -HOSTDEVICE uint GridImp::getGeoFluidSize() const { - return this->geoFluidSize; -} - -HOSTDEVICE const uint* GridImp::getGeoFluidNodes() const{ - return this->geoFluidNodes; +HOSTDEVICE uint GridImp::getNumberOfFluidNodes() const { + return this->numberOfFluidNodes; } HOSTDEVICE Field GridImp::getField() const @@ -1935,7 +1925,7 @@ CUDA_HOST void GridImp::getNodeValues(real *xCoords, real *yCoords, real *zCoord geo[0] = GEOSOLID; int nodeNumber = 0; - for (uint i = 0; i < this->getSize(); i++) + for (uint i = 0; i < this->size; i++) { if (this->sparseIndices[i] == -1) continue; @@ -1967,6 +1957,12 @@ CUDA_HOST void GridImp::getNodeValues(real *xCoords, real *yCoords, real *zCoord } } +CUDA_HOST void GridImp::getFluidNodeIndices(uint *fluidNodeIndices) const { + for (uint nodeNumber = 0; nodeNumber < this->numberOfFluidNodes; nodeNumber++) + fluidNodeIndices[nodeNumber] = this->fluidNodeIndices[nodeNumber]; +} + + void GridImp::print() const { printf("min: (%2.4f, %2.4f, %2.4f), max: (%2.4f, %2.4f, %2.4f), size: %d, delta: %2.4f\n", startX, startY, startZ, diff --git a/src/gpu/GridGenerator/grid/GridImp.h b/src/gpu/GridGenerator/grid/GridImp.h index 2f4d044fbb61b262f1170251f9415257a8de6e73..06dc501e210ce198903eed2661bdd917c8f30e14 100644 --- a/src/gpu/GridGenerator/grid/GridImp.h +++ b/src/gpu/GridGenerator/grid/GridImp.h @@ -86,8 +86,8 @@ private: int *neighborIndexX, *neighborIndexY, *neighborIndexZ, *neighborIndexNegative; int *sparseIndices; - uint *geoFluidNodes; - uint geoFluidSize; + std::vector<uint> fluidNodeIndices; + uint numberOfFluidNodes; uint *qIndices; //maps from matrix index to qIndex real *qValues; @@ -316,10 +316,10 @@ public: void repairCommunicationInices(int direction) override; - // needed for CUDA Streams MultiGPU - void findMatrixIDsGEO_FLUID() override; - uint getGeoFluidSize() const override; - const uint* getGeoFluidNodes() const override; + void findFluidNodeIndices() override; + uint getNumberOfFluidNodes() const override; + CUDA_HOST void getFluidNodeIndices(uint *fluidNodeIndices) const; + public: diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.cpp index 957935756163795945e9ac1c4762e0eb825239ee..22d3d3a38d1364205f2386e377b3a0502993387a 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.cpp @@ -29,6 +29,12 @@ void GridProvider::setNumberOfNodes(const int numberOfNodes, const int level) co para->getParD(level)->mem_size_int_SP = sizeof(uint) * para->getParD(level)->size_Mat_SP; } +void GridProvider::setNumberOfFluidNodes(const int numberOfNodes, const int level) const +{ + para->getParH(level)->numberOfFluidNodes = numberOfNodes; + para->getParD(level)->numberOfFluidNodes = numberOfNodes; +} + void GridProvider::setInitalNodeValues(const int numberOfNodes, const int level) const { for (int j = 1; j <= numberOfNodes; j++) diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h index 70a2a8ec629809689096ce0b33a197924cf000a2..d8f442115a965af58110dcc778768dc9f4210847 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h @@ -25,6 +25,8 @@ public: virtual void allocArrays_BoundaryValues() = 0; virtual void allocArrays_BoundaryQs() = 0; virtual void allocArrays_OffsetScale() = 0; + virtual void allocArrays_fluidNodeIndices() = 0; + virtual void setDimensions() = 0; virtual void setBoundingBox() = 0; virtual void initPeriodicNeigh(std::vector<std::vector<std::vector<unsigned int> > > periodV, std::vector<std::vector<unsigned int> > periodIndex, std::string way) = 0; @@ -39,6 +41,7 @@ public: protected: void setNumberOfNodes(const int numberOfNodes, const int level) const; + void setNumberOfFluidNodes(const int numberOfNodes, const int level) const; virtual void setInitalNodeValues(const int numberOfNodes, const int level) const; void setPressSizePerLevel(int level, int sizePerLevel) const; diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp index 940dbfa617ccd06f5d7b77527cc78b618062240a..c2e19b659d401ec94e14532a5b71fbb86e2d0fe6 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp @@ -216,6 +216,10 @@ void GridReader::allocArrays_OffsetScale() std::cout << "-----Ende OffsetScale------" << std::endl; } +void GridReader::allocArrays_fluidNodeIndices() { + // TODO +} + void GridReader::setPressureValues(int channelSide) const { diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h index f7a4c43062da79d39c43e6822688c51ad55e7442..cbb0fac42f2e5e62dea82c63552a0d524c858d83 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h @@ -39,6 +39,7 @@ public: void allocArrays_CoordNeighborGeo() override; void allocArrays_BoundaryValues() override; void allocArrays_OffsetScale() override; + void allocArrays_fluidNodeIndices() override; void initalValuesDomainDecompostion(int level); diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp index 3ce1093d1847743962f3b76cbe62445cbacef312..ec7056460e58da0eca90024975c74701ef56531d 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp @@ -87,6 +87,16 @@ void GridGenerator::allocArrays_CoordNeighborGeo() std::cout << "-----finish Coord, Neighbor, Geo------" << std::endl; } +void GridGenerator::allocArrays_fluidNodeIndices() { + const uint numberOfLevels = builder->getNumberOfGridLevels(); + for (uint level = 0; level < numberOfLevels; level++) { + setNumberOfFluidNodes(builder->getNumberOfFluidNodes(level), level); + cudaMemoryManager->cudaAllocFluidNodeIndices(level); + builder->getFluidNodeIndices(para->getParH(level)->fluidNodeIndices, level); + cudaMemoryManager->cudaCopyFluidNodeIndices(level); + } +} + void GridGenerator::allocArrays_BoundaryValues() { std::cout << "------read BoundaryValues------" << std::endl; diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h index 79f7f2b6a1d1fc45217cf5e28df4f5b599f5c0e4..096bb424d19262186d9afb4f491b059be8e160a2 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h @@ -29,6 +29,7 @@ public: void allocArrays_BoundaryValues() override; void allocArrays_BoundaryQs() override; void allocArrays_OffsetScale() override; + void allocArrays_fluidNodeIndices() override; virtual void setDimensions() override; virtual void setBoundingBox() override; diff --git a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.cpp b/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.cpp index 8e281818608ee3f7a222b5890d10bcae9544e9bf..c101b9295e4b261e5572775b37368a332d0c9a1e 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.cpp +++ b/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.cpp @@ -2606,6 +2606,7 @@ void CudaMemoryManager::cudaFreeProcessNeighborADZ(int lev, unsigned int process checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->recvProcessNeighborADZ[processNeighbor].index )); checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->recvProcessNeighborADZ[processNeighbor].f[0] )); } + void CudaMemoryManager::cudaAlloc2ndOrderDerivitivesIsoTest(int lev) { //Host @@ -2644,9 +2645,27 @@ void CudaMemoryManager::cudaFree2ndOrderDerivitivesIsoTest(int lev) } +void CudaMemoryManager::cudaAllocFluidNodeIndices(int lev) { + uint mem_size_geo_fluid_nodes = sizeof(uint) * parameter->getParH(lev)->numberOfFluidNodes; + // Host + checkCudaErrors(cudaMallocHost((void **)&(parameter->getParH(lev)->fluidNodeIndices), mem_size_geo_fluid_nodes)); + // Device + checkCudaErrors(cudaMalloc((void **)&(parameter->getParD(lev)->fluidNodeIndices), mem_size_geo_fluid_nodes)); + ////////////////////////////////////////////////////////////////////////// + double tmp = (double)mem_size_geo_fluid_nodes; + setMemsizeGPU(tmp, false); +} +void CudaMemoryManager::cudaCopyFluidNodeIndices(int lev) { + uint mem_size_geo_fluid_nodes = sizeof(uint) * parameter->getParH(lev)->numberOfFluidNodes; + checkCudaErrors(cudaMemcpy(parameter->getParD(lev)->fluidNodeIndices, + parameter->getParH(lev)->fluidNodeIndices, + mem_size_geo_fluid_nodes, cudaMemcpyHostToDevice)); +} - +void CudaMemoryManager::cudaFreeFluidNodeIndices(int lev) { + checkCudaErrors(cudaFreeHost(parameter->getParH(lev)->fluidNodeIndices)); +} diff --git a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h b/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h index 4853205f510348a954fbc8dcdaed72385a30d559..0588b2c3268b87664a5a4ce51d6de8bb16f580ed 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h +++ b/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h @@ -323,7 +323,9 @@ public: void cudaFreeProcessNeighborADZ(int lev, unsigned int processNeighbor); - + void cudaAllocFluidNodeIndices(int lev); + void cudaCopyFluidNodeIndices(int lev); + void cudaFreeFluidNodeIndices(int lev); diff --git a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp index b136ef7c6e2381dc42c1ed0b4bea79d138a11a3a..cbfc3072ac6b538efd36a91a50d53a5c39eb5aa7 100644 --- a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp +++ b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp @@ -86,6 +86,7 @@ void Simulation::init(SPtr<Parameter> para, SPtr<GridProvider> gridProvider, std gridProvider->allocAndCopyForcing(); gridProvider->allocAndCopyQuadricLimiters(); + gridProvider->allocArrays_fluidNodeIndices(); gridProvider->setDimensions(); gridProvider->setBoundingBox(); diff --git a/src/gpu/VirtualFluids_GPU/Parameter/NodeIndicesMultiGPU.cpp b/src/gpu/VirtualFluids_GPU/Parameter/NodeIndicesMultiGPU.cpp deleted file mode 100644 index 43884c93afb4108e9a0b1e08285be0b048dbacb3..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Parameter/NodeIndicesMultiGPU.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include "NodeIndicesMultiGPU.h" - -NodeIndicesMultiGPU::NodeIndicesMultiGPU(const std::vector<uint> *geoFluidSizes, - const std::vector<const uint*> *geoFluidNodesIndices) -{ - this->geoFluidSizes = geoFluidSizes; - this->geoFluidNodeIndices = geoFluidNodesIndices; -} - -uint NodeIndicesMultiGPU::getGeoFluidSize(uint level) -{ - return (*this->geoFluidSizes)[level]; -} - -const uint* NodeIndicesMultiGPU::getGeoFluidNodeIndices(uint level) -{ - return (*this->geoFluidNodeIndices)[level]; -} diff --git a/src/gpu/VirtualFluids_GPU/Parameter/NodeIndicesMultiGPU.h b/src/gpu/VirtualFluids_GPU/Parameter/NodeIndicesMultiGPU.h deleted file mode 100644 index 817968f1b4a4c9a277ace3660cb6b94a69ab96eb..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Parameter/NodeIndicesMultiGPU.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef INDICES_MULTIGPU_H -#define INDICES_MULTIGPU_H - -#include <vector> -#include <memory> -#include "basics/Core/DataTypes.h" - -class NodeIndicesMultiGPU -{ - const std::vector<uint> *geoFluidSizes; - const std::vector<const uint*> *geoFluidNodeIndices; - -public: - NodeIndicesMultiGPU(const std::vector<uint> *geoFluidSizes, const std::vector<const uint*> * geoFluidNodes); - - uint getGeoFluidSize(uint level); - const uint *getGeoFluidNodeIndices(uint level); -}; - -#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp index 1ce504c091f4ed75a6ed86dc8af34790765965c7..bf03b915e927ae484ac925eac968c9f5998f93a9 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp +++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp @@ -2485,15 +2485,4 @@ real Parameter::TrafoZtoMGsWorld(int CoordZ, int level) 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 6665190a4023654f9ee4d0dc0d3f5fc675a7e6da..80b2fac298f6594f86fe34a1355c8ad594327908 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h +++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h @@ -41,8 +41,6 @@ #include "LBM/D3Q27.h" #include "LBM/LB.h" -#include "VirtualFluids_GPU/Parameter/NodeIndicesMultiGPU.h" - #include "VirtualFluids_GPU_export.h" @@ -309,6 +307,9 @@ struct LBMSimulationParameter std::vector<ProcessNeighborF3> recvProcessNeighborF3Y; std::vector<ProcessNeighborF3> recvProcessNeighborF3Z; //////////////////////////////////////////////////////////////////////////// + + uint *fluidNodeIndices; + uint numberOfFluidNodes; }; class VIRTUALFLUIDS_GPU_EXPORT Parameter @@ -837,12 +838,6 @@ 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