diff --git a/apps/gpu/LBM/MusselOyster/MusselOyster.cpp b/apps/gpu/LBM/MusselOyster/MusselOyster.cpp index f57b2077502559081e618778fa600debeca4b38d..d716ccf1d0e8ab31622444e74d8b8776b0c10c4f 100644 --- a/apps/gpu/LBM/MusselOyster/MusselOyster.cpp +++ b/apps/gpu/LBM/MusselOyster/MusselOyster.cpp @@ -109,7 +109,7 @@ void multipleLevel(const std::string& configPath) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// bool useGridGenerator = true; - bool useMultiGPU = false; + bool useMultiGPU = true; bool useStreams = true; bool useLevels = true; diff --git a/src/gpu/GridGenerator/grid/Grid.h b/src/gpu/GridGenerator/grid/Grid.h index 387a9a7b0ada63a22d0899a55558969f65173bc6..c6189ba0977d2ed0d82a9f44c3e8d1779d6e21b8 100644 --- a/src/gpu/GridGenerator/grid/Grid.h +++ b/src/gpu/GridGenerator/grid/Grid.h @@ -51,7 +51,10 @@ public: HOSTDEVICE virtual void setFieldEntry(uint matrixIndex, char type) = 0; CUDA_HOST virtual void getGridInterfaceIndices(uint* iCellCfc, uint* iCellCff, uint* iCellFcc, uint* iCellFcf) const = 0; - CUDA_HOST virtual void getGridInterfaceIndicesFCCBorderBulk(uint *iCellFccBorder, uint &intFCBorderKfc, uint *&iCellFccBulk, uint &intFCBulkKfc, int level) const = 0; + CUDA_HOST virtual void getGridInterfaceIndicesFCCBorderBulk(uint *iCellFccBorder, uint *&iCellFccBulk, + uint *iCellFcfBorder, uint *&iCellFcfBulk, + uint &intFCBorderKfc, uint &intFCBulkKfc, + int level) const = 0; CUDA_HOST virtual int *getNeighborsX() const = 0; CUDA_HOST virtual int *getNeighborsY() const = 0; diff --git a/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h b/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h index ebe8ac8f9c62ed1cce21be9d0deebba6d34d9689..a5656146c25ec55fdae172377ba28ee4c962b40c 100644 --- a/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h +++ b/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h @@ -56,7 +56,9 @@ public: virtual uint getNumberOfNodesCF(int level) = 0; virtual uint getNumberOfNodesFC(int level) = 0; virtual void getGridInterfaceIndices(uint* iCellCfc, uint* iCellCff, uint* iCellFcc, uint* iCellFcf, int level) const = 0; - virtual void getGridInterfaceIndicesFCCBorderBulk(uint *iCellFccBorder, uint &intFCBorderKfc, uint *&iCellFccBulk, uint &intFCBulkKfc, int level) const = 0; + virtual void getGridInterfaceIndicesFCCBorderBulk(uint *iCellFccBorder, uint *&iCellFccBulk, uint *iCellFcfBorder, + uint *&iCellFcfBulk, uint &intFCBorderKfc, uint &intFCBulkKfc, + int level) const = 0; virtual void getOffsetFC(real* xOffCf, real* yOffCf, real* zOffCf, int level) = 0; virtual void getOffsetCF(real* xOffFc, real* yOffFc, real* zOffFc, int level) = 0; diff --git a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp index fa0166a0414d96710ad878b3531d98019d95c17c..0431badb400e4da68c171757f3dab352e6501bf6 100644 --- a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp +++ b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp @@ -206,9 +206,12 @@ void LevelGridBuilder::getGridInterfaceIndices(uint* iCellCfc, uint* iCellCff, u this->grids[level]->getGridInterfaceIndices(iCellCfc, iCellCff, iCellFcc, iCellFcf); } -void LevelGridBuilder::getGridInterfaceIndicesFCCBorderBulk(uint *iCellFccBorder, uint &intFCBorderKfc, uint *&iCellFccBulk, uint &intFCBulkKfc, int level) const +void LevelGridBuilder::getGridInterfaceIndicesFCCBorderBulk(uint *iCellFccBorder, uint *&iCellFccBulk, uint *iCellFcfBorder, uint *&iCellFcfBulk, + uint &intFCBorderKfc, uint &intFCBulkKfc, int level) const { - this->grids[level]->getGridInterfaceIndicesFCCBorderBulk(iCellFccBorder, intFCBorderKfc, iCellFccBulk, intFCBulkKfc, level); + this->grids[level]->getGridInterfaceIndicesFCCBorderBulk(iCellFccBorder, iCellFccBulk, + iCellFcfBorder, iCellFcfBulk, + intFCBorderKfc, intFCBulkKfc, level); } void LevelGridBuilder::getOffsetFC(real * xOffFC, real * yOffFC, real * zOffFC, int level) diff --git a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h index 542df12d1ccc972e43ba38b386b4baa27eb6e813..c91a06a454107ac920d989a04097d659d401a01c 100644 --- a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h +++ b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h @@ -137,7 +137,10 @@ public: GRIDGENERATOR_EXPORT uint getNumberOfNodesFC(int level) override; GRIDGENERATOR_EXPORT void getGridInterfaceIndices(uint* iCellCfc, uint* iCellCff, uint* iCellFcc, uint* iCellFcf, int level) const override; - GRIDGENERATOR_EXPORT void getGridInterfaceIndicesFCCBorderBulk(uint *iCellFccBorder, uint &intFCBorderKfc, uint *&iCellFccBulk, uint &intFCBulkKfc, int level) const override; + GRIDGENERATOR_EXPORT void getGridInterfaceIndicesFCCBorderBulk(uint *iCellFccBorder, uint *&iCellFccBulk, + uint *iCellFcfBorder, uint *&iCellFcfBulk, + uint &intFCBorderKfc, uint &intFCBulkKfc, + int level) const override; GRIDGENERATOR_EXPORT void getOffsetFC(real* xOffCf, real* yOffCf, real* zOffCf, int level) override; GRIDGENERATOR_EXPORT void getOffsetCF(real* xOffFc, real* yOffFc, real* zOffFc, int level) override; diff --git a/src/gpu/GridGenerator/grid/GridImp.cu b/src/gpu/GridGenerator/grid/GridImp.cu index 5b9e0da368672efe7f81251d9ff479880c8382ae..8de08cb3e029f3e777255f0bb06f967cbbb00aca 100644 --- a/src/gpu/GridGenerator/grid/GridImp.cu +++ b/src/gpu/GridGenerator/grid/GridImp.cu @@ -1943,33 +1943,43 @@ void GridImp::getGridInterface(uint* gridInterfaceList, const uint* oldGridInter gridInterfaceList[i] = oldGridInterfaceList[i] + 1; // + 1 for numbering shift between GridGenerator and VF_GPU } -void GridImp::getGridInterfaceIndicesFCCBorderBulk(uint *iCellFccBorder, uint &intFCBorderKfc, uint *&iCellFccBulk, - uint &intFCBulkKfc, int level) const +void GridImp::getGridInterfaceIndicesFCCBorderBulk(uint *iCellFccBorder, uint *&iCellFccBulk, uint *iCellFcfBorder, + uint *&iCellFcfBulk, uint &intFCBorderKfc, uint &intFCBulkKfc, + int level) const { - // reorder the array of FCC indices and return pointers and sizes of the new subarrays + // reorder the array of FCC/FCF indices and return pointers and sizes of the new subarrays uint *iCellFccAll = iCellFccBorder; + uint *iCellFcfAll = iCellFcfBorder; uint intFCKfcAll = this->gridInterface->fc.numberOfEntries; std::vector<uint> iCellFccBorderVector; std::vector<uint> iCellFccBulkVector; + std::vector<uint> iCellFcfBorderVector; + std::vector<uint> iCellFcfBulkVector; for (uint i = 0; i < intFCKfcAll; i++) if (std::find(this->fluidNodeIndicesBorder.begin(), this->fluidNodeIndicesBorder.end(), iCellFccAll[i]) != - this->fluidNodeIndicesBorder.end()) + this->fluidNodeIndicesBorder.end()) { iCellFccBorderVector.push_back(iCellFccAll[i]); - else + iCellFcfBorderVector.push_back(iCellFcfAll[i]); + } else { iCellFccBulkVector.push_back(iCellFccAll[i]); + iCellFcfBulkVector.push_back(iCellFcfAll[i]); + } intFCBorderKfc = (uint)iCellFccBorderVector.size(); intFCBulkKfc = (uint)iCellFccBulkVector.size(); iCellFccBulk = iCellFccBorder + intFCBorderKfc; + iCellFcfBulk = iCellFcfBorder + intFCBorderKfc; - for (uint i = 0; i < (uint)iCellFccBorderVector.size(); i++) + for (uint i = 0; i < (uint)iCellFccBorderVector.size(); i++) { iCellFccBorder[i] = iCellFccBorderVector[i]; - for (uint i = 0; i < (uint)iCellFccBulkVector.size(); i++) + iCellFcfBorder[i] = iCellFcfBorderVector[i]; + } + for (uint i = 0; i < (uint)iCellFccBulkVector.size(); i++) { iCellFccBulk[i] = iCellFccBulkVector[i]; - std::cout << iCellFccBulk[0] << std::endl; - std::cout << iCellFccBulk[iCellFccBulkVector.size()-1] << std::endl; + iCellFcfBulk[i] = iCellFcfBulkVector[i]; + } } #define GEOFLUID 19 diff --git a/src/gpu/GridGenerator/grid/GridImp.h b/src/gpu/GridGenerator/grid/GridImp.h index 25d78f895e6d7b6c39d37eea45d192fe85dbc79e..8fc155867cb9b4a1aa2d33554181c3ab2c872890 100644 --- a/src/gpu/GridGenerator/grid/GridImp.h +++ b/src/gpu/GridGenerator/grid/GridImp.h @@ -219,7 +219,9 @@ public: HOSTDEVICE uint getNumberOfNodesFC() const override; CUDA_HOST void getGridInterfaceIndices(uint* iCellCfc, uint* iCellCff, uint* iCellFcc, uint* iCellFcf) const override; CUDA_HOST static void getGridInterface(uint* gridInterfaceList, const uint* oldGridInterfaceList, uint size); - CUDA_HOST void getGridInterfaceIndicesFCCBorderBulk(uint *iCellFccBorder, uint &intFCBorderKfc, uint *&iCellFccBulk, uint &intFCBulkKfc, int level) const override; + CUDA_HOST void getGridInterfaceIndicesFCCBorderBulk(uint *iCellFccBorder, uint *&iCellFccBulk, uint *iCellFcfBorder, + uint *&iCellFcfBulk, uint &intFCBorderKfc, uint &intFCBulkKfc, + int level) const override; int* getNeighborsX() const override; int* getNeighborsY() const override; diff --git a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp index 5726f1e6e52597154de29958246b0d715a7f5d08..0c870d1cd76e019f045b0ff3aa5ac260799d41d5 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp +++ b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp @@ -74,17 +74,25 @@ void updateGrid27(Parameter *para, vf::gpu::Communicator *comm, CudaMemoryManage if( level != para->getFine() ) { if (para->getUseStreams() && para->getNumprocs() > 1) { - } else { - //fineToCoarse(para, level); - - //fineToCoarseWithStream(para, level, para->getParD(level)->intFCBorder.ICellFCC, - //para->getParD(level)->intFCBorder.kFC, -1); - fineToCoarseWithStream(para, level, para->getParD(level)->intFCBulk.ICellFCC, + fineToCoarseWithStream(para, level, + para->getParD(level)->intFCBorder.ICellFCC, + para->getParD(level)->intFCBorder.ICellFCF, + para->getParD(level)->intFCBorder.kFC, -1); + fineToCoarseWithStream(para, level, + para->getParD(level)->intFCBulk.ICellFCC, + para->getParD(level)->intFCBulk.ICellFCF, para->getParD(level)->intFCBulk.kFC, -1); prepareExchangeMultiGPU(para, level, -1); exchangeMultiGPU(para, comm, cudaManager, level, -1); + coarseToFine(para, level); + } else { + fineToCoarse(para, level); + + prepareExchangeMultiGPU(para, level, -1); + exchangeMultiGPU(para, comm, cudaManager, level, -1); + coarseToFine(para, level); } } @@ -1133,7 +1141,7 @@ void fineToCoarse(Parameter* para, int level) } -void fineToCoarseWithStream(Parameter *para, int level, uint *iCellFCC, uint k_FC, int streamIndex) +void fineToCoarseWithStream(Parameter *para, int level, uint *iCellFCC, uint *iCellFCF, uint k_FC, int streamIndex) { cudaStream_t stream = (streamIndex == -1) ? CU_STREAM_LEGACY : para->getStreamManager()->getStream(streamIndex); @@ -1141,7 +1149,7 @@ void fineToCoarseWithStream(Parameter *para, int level, uint *iCellFCC, uint k_F para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - iCellFCC, para->getParD(level)->intFC.ICellFCF, + iCellFCC, iCellFCF, k_FC, para->getParD(level)->omega, para->getParD(level + 1)->omega, para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, diff --git a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h index d4eda6f6ce593c2e1fd5077485ec3f6ab91ad4eb..7a58feb622ad7ed51604b96f7d005d0957fe741e 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h +++ b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h @@ -40,7 +40,7 @@ extern "C" void calcMacroscopicQuantities(Parameter* para, int level); extern "C" void preCollisionBC(Parameter* para, CudaMemoryManager* cudaManager, int level, unsigned int t); extern "C" void fineToCoarse(Parameter* para, int level); -extern "C" void fineToCoarseWithStream(Parameter *para, int level, uint *iCellFCC, uint k_FC, int streamIndex); +extern "C" void fineToCoarseWithStream(Parameter *para, int level, uint *iCellFCC, uint *iCellFCF, uint k_FC, int streamIndex); extern "C" void coarseToFine(Parameter* para, int level); diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp index afb322267ab728fe8f373050296d7ed5a10d4b96..c26503dd6e75472e14d881c456b53998fbcde9e0 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp @@ -922,37 +922,69 @@ void GridGenerator::allocArrays_OffsetScale() builder->getGridInterfaceIndices(para->getParH(level)->intCF.ICellCFC, para->getParH(level)->intCF.ICellCFF, para->getParH(level)->intFC.ICellFCC, para->getParH(level)->intFC.ICellFCF, level); if (para->getUseStreams()) { - // split fine-to-coarse-coarse indices into border and bulk + // split fine-to-coarse indices into border and bulk para->getParH(level)->intFCBorder.ICellFCC = para->getParH(level)->intFC.ICellFCC; - builder->getGridInterfaceIndicesFCCBorderBulk(para->getParH(level)->intFCBorder.ICellFCC, para->getParH(level)->intFCBorder.kFC, para->getParH(level)->intFCBulk.ICellFCC, para->getParH(level)->intFCBulk.kFC, level); + para->getParH(level)->intFCBorder.ICellFCF = para->getParH(level)->intFC.ICellFCF; + builder->getGridInterfaceIndicesFCCBorderBulk( + para->getParH(level)->intFCBorder.ICellFCC, para->getParH(level)->intFCBulk.ICellFCC, + para->getParH(level)->intFCBorder.ICellFCF, para->getParH(level)->intFCBulk.ICellFCF, + para->getParH(level)->intFCBorder.kFC, para->getParH(level)->intFCBulk.kFC, level); para->getParD(level)->intFCBorder.kFC = para->getParH(level)->intFCBorder.kFC; para->getParD(level)->intFCBulk.kFC = para->getParH(level)->intFCBulk.kFC; para->getParD(level)->intFCBorder.ICellFCC = para->getParD(level)->intFC.ICellFCC; para->getParD(level)->intFCBulk.ICellFCC = para->getParD(level)->intFCBorder.ICellFCC + para->getParD(level)->intFCBorder.kFC; + para->getParD(level)->intFCBorder.ICellFCF = para->getParD(level)->intFC.ICellFCF; + para->getParD(level)->intFCBulk.ICellFCF = para->getParD(level)->intFCBorder.ICellFCF + para->getParD(level)->intFCBorder.kFC; + + std::cout << " ..............FCC " << std::endl; + std::cout << "sizeOld " << para->getParH(level)->K_FC << std::endl; + std::cout << "sizeNew " << para->getParH(level)->intFCBorder.kFC + para->getParH(level)->intFCBulk.kFC + << " = border " << para->getParH(level)->intFCBorder.kFC << " + bulk " + << para->getParH(level)->intFCBulk.kFC << std::endl; + std::cout << "old pointer " << para->getParH(level)->intFC.ICellFCC << std::endl; + std::cout << "border pointer (= old pointer) " << para->getParH(level)->intFCBorder.ICellFCC << std::endl; + std::cout << "bulk pointer new " << para->getParH(level)->intFCBulk.ICellFCC << std::endl; + std::cout << "first old " << para->getParH(level)->intFC.ICellFCC[0] << std::endl; + std::cout << "first new " << para->getParH(level)->intFCBorder.ICellFCC[0] << std::endl; + if (para->getParH(level)->intFCBorder.kFC > 0) { + std::cout << "last border old " + << para->getParH(level)->intFC.ICellFCC[para->getParH(level)->intFCBorder.kFC - 1] + << std::endl; + std::cout << "last border new " + << para->getParH(level)->intFCBorder.ICellFCC[para->getParH(level)->intFCBorder.kFC - 1] + << std::endl; + } + std::cout << "first bulk old " + << para->getParH(level)->intFC.ICellFCC[para->getParH(level)->intFCBorder.kFC] << std::endl; + std::cout << "first bulk new " << para->getParH(level)->intFCBulk.ICellFCC[0] << std::endl; + std::cout << "last bulk old " << para->getParH(level)->intFC.ICellFCC[para->getParH(level)->K_FC - 1] + << std::endl; + std::cout << "last bulk new " + << para->getParH(level)->intFCBulk.ICellFCC[para->getParH(level)->intFCBulk.kFC - 1] << std::endl; + + std::cout << " ..............FCF " << std::endl; + std::cout << "old pointer " << para->getParH(level)->intFC.ICellFCF << std::endl; + std::cout << "border pointer (= old pointer) " << para->getParH(level)->intFCBorder.ICellFCF << std::endl; + std::cout << "bulk pointer new " << para->getParH(level)->intFCBulk.ICellFCF << std::endl; + std::cout << "first old " << para->getParH(level)->intFC.ICellFCF[0] << std::endl; + std::cout << "first new " << para->getParH(level)->intFCBorder.ICellFCF[0] << std::endl; + if (para->getParH(level)->intFCBorder.kFC > 0) { + std::cout << "last border old " + << para->getParH(level)->intFC.ICellFCF[para->getParH(level)->intFCBorder.kFC - 1] + << std::endl; + std::cout << "last border new " + << para->getParH(level)->intFCBorder.ICellFCF[para->getParH(level)->intFCBorder.kFC - 1] + << std::endl; + } + std::cout << "first bulk old " + << para->getParH(level)->intFC.ICellFCF[para->getParH(level)->intFCBorder.kFC] << std::endl; + std::cout << "first bulk new " << para->getParH(level)->intFCBulk.ICellFCF[0] << std::endl; + std::cout << "last bulk old " << para->getParH(level)->intFC.ICellFCF[para->getParH(level)->K_FC - 1] + << std::endl; + std::cout << "last bulk new " + << para->getParH(level)->intFCBulk.ICellFCF[para->getParH(level)->intFCBulk.kFC - 1] << std::endl; } - std::cout << "sizeOld " << para->getParH(level)->K_FC << std::endl; - std::cout << "sizeNew " << para->getParH(level)->intFCBorder.kFC + para->getParH(level)->intFCBulk.kFC - << " = border " << para->getParH(level)->intFCBorder.kFC << " + bulk " - << para->getParH(level)->intFCBulk.kFC << std::endl; - std::cout << "first old " << para->getParH(level)->intFC.ICellFCC[0] << std::endl; - std::cout << "first new " << para->getParH(level)->intFCBorder.ICellFCC[0] - << std::endl; - //std::cout << "last border old " << para->getParH(level)->intFC.ICellFCC[para->getParH(level)->intFCBorder.kFC - 1] - // << std::endl; //if (para->getParH(level)->intFCBorder.kFC > 0) - //std::cout << "last border new " << para->getParH(level)->intFCBorder.ICellFCC[para->getParH(level)->intFCBorder.kFC - 1] - // << std::endl; - std::cout << "old pointer " << para->getParH(level)->intFC.ICellFCC << std::endl; - std::cout << "border pointer (= old pointer) " << para->getParH(level)->intFCBorder.ICellFCC << std::endl; - std::cout << "bulk pointer new " << para->getParH(level)->intFCBulk.ICellFCC << std::endl; - std::cout << "first bulk old " - << para->getParH(level)->intFC.ICellFCC[para->getParH(level)->intFCBorder.kFC] << std::endl; - std::cout << "first bulk new " - << para->getParH(level)->intFCBulk.ICellFCC[0] << std::endl; - std::cout << "last bulk old " - << para->getParH(level)->intFC.ICellFCC[para->getParH(level)->K_FC - 1] << std::endl; - std::cout << "last bulk new " - << para->getParH(level)->intFCBulk.ICellFCC[para->getParH(level)->intFCBulk.kFC - 1] << std::endl; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //copy @@ -963,17 +995,23 @@ void GridGenerator::allocArrays_OffsetScale() //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - if (para->getUseStreams()) - cudaMemoryManager->cudaCheckInterfaceFCBulk(level); - - std::cout << "...Device " << std::endl; - std::cout << "old pointer " << para->getParD(level)->intFC.ICellFCC << std::endl; - std::cout << "border pointer (= old pointer) " << para->getParD(level)->intFCBorder.ICellFCC << std::endl; - std::cout << "bulk pointer new " << para->getParD(level)->intFCBulk.ICellFCC << std::endl; - std::cout << "sizeOld " << para->getParD(level)->K_FC << std::endl; - std::cout << "sizeNew " << para->getParD(level)->intFCBorder.kFC + para->getParD(level)->intFCBulk.kFC - << " = border " << para->getParD(level)->intFCBorder.kFC << " + bulk " - << para->getParD(level)->intFCBulk.kFC << std::endl; + if (para->getUseStreams()) { + // cudaMemoryManager->cudaCheckInterfaceFCBulk(level); + + std::cout << "...Device FCC" << std::endl; + std::cout << "old pointer " << para->getParD(level)->intFC.ICellFCC << std::endl; + std::cout << "border pointer (= old pointer) " << para->getParD(level)->intFCBorder.ICellFCC << std::endl; + std::cout << "bulk pointer new " << para->getParD(level)->intFCBulk.ICellFCC << std::endl; + std::cout << "sizeOld " << para->getParD(level)->K_FC << std::endl; + std::cout << "sizeNew " << para->getParD(level)->intFCBorder.kFC + para->getParD(level)->intFCBulk.kFC + << " = border " << para->getParD(level)->intFCBorder.kFC << " + bulk " + << para->getParD(level)->intFCBulk.kFC << std::endl; + + std::cout << "...Device FCF" << std::endl; + std::cout << "old pointer " << para->getParD(level)->intFC.ICellFCF << std::endl; + std::cout << "border pointer (= old pointer) " << para->getParD(level)->intFCBorder.ICellFCF << std::endl; + std::cout << "bulk pointer new " << para->getParD(level)->intFCBulk.ICellFCF << std::endl; + } } } diff --git a/src/gpu/VirtualFluids_GPU/LBM/LB.h b/src/gpu/VirtualFluids_GPU/LBM/LB.h index a116485acefa6d089824ea748be48ff522e311fe..a33b3b792cd451307825fd0b2c8716e942440582 100644 --- a/src/gpu/VirtualFluids_GPU/LBM/LB.h +++ b/src/gpu/VirtualFluids_GPU/LBM/LB.h @@ -140,11 +140,6 @@ typedef struct ICellFC{ uint kFC; } InterpolationCellFC; -typedef struct ICellFCBB { - uint *ICellFCC; - uint kFC; -} InterpolationCellFCBorderBulk; - //Offset of the interface cells at the wall typedef struct OffCF{ real* xOffCF; diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h index b9bc179e34ac0a971ee79991f314c0c4c6e07160..09926c8cb178f7332377fbb5b2445250147127ac 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h +++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h @@ -181,8 +181,8 @@ struct LBMSimulationParameter unsigned int mem_size_kCF; unsigned int mem_size_kFC; - InterpolationCellFCBorderBulk intFCBorder; - InterpolationCellFCBorderBulk intFCBulk; + InterpolationCellFC intFCBorder; + InterpolationCellFC intFCBulk; // offset////////////////// OffsetCF offCF;