From 9542c07b69c9c6f05218851df45dc3d555942298 Mon Sep 17 00:00:00 2001 From: Anna Wellmann <a.wellmann@tu-braunschweig.de> Date: Mon, 11 Oct 2021 20:38:33 +0200 Subject: [PATCH] Hide Communication after Fine to Coarse with f-to-c-kernel --- apps/gpu/LBM/MusselOyster/MusselOyster.cpp | 4 ++-- .../Calculation/UpdateGrid27.cpp | 17 +++++++++++------ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/apps/gpu/LBM/MusselOyster/MusselOyster.cpp b/apps/gpu/LBM/MusselOyster/MusselOyster.cpp index 0cd44375f..4c18a7c84 100644 --- a/apps/gpu/LBM/MusselOyster/MusselOyster.cpp +++ b/apps/gpu/LBM/MusselOyster/MusselOyster.cpp @@ -140,8 +140,8 @@ void multipleLevel(const std::string& configPath) *logging::out << logging::Logger::INFO_HIGH << "useStreams = " << useStreams << "\n"; - para->setTOut(1000); - para->setTEnd(10000); + para->setTOut(10); + para->setTEnd(10); para->setCalcDragLift(false); para->setUseWale(false); diff --git a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp index a8529096c..eff5f8039 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp +++ b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp @@ -77,16 +77,21 @@ void updateGrid27(Parameter *para, vf::gpu::Communicator *comm, CudaMemoryManage fineToCoarseWithStream(para, level, para->getParD(level)->intFCBorder.ICellFCC, para->getParD(level)->intFCBorder.ICellFCF, - para->getParD(level)->intFCBorder.kFC, -1); + para->getParD(level)->intFCBorder.kFC, borderStreamIndex); + + // prepare exchange and trigger bulk kernel when finished + prepareExchangeMultiGPUAfterFtoC(para, level, borderStreamIndex); + if (para->getUseStreams()) + para->getStreamManager()->triggerStartBulkKernel(borderStreamIndex); + + // launch bulk kernel + para->getStreamManager()->waitOnStartBulkKernelEvent(bulkStreamIndex); fineToCoarseWithStream(para, level, para->getParD(level)->intFCBulk.ICellFCC, para->getParD(level)->intFCBulk.ICellFCF, - para->getParD(level)->intFCBulk.kFC, -1); - //fineToCoarse(para, level); - - prepareExchangeMultiGPUAfterFtoC(para, level, -1); - exchangeMultiGPUAfterFtoC(para, comm, cudaManager, level, -1); + para->getParD(level)->intFCBulk.kFC, bulkStreamIndex); + exchangeMultiGPUAfterFtoC(para, comm, cudaManager, level, borderStreamIndex); coarseToFine(para, level); } else { fineToCoarse(para, level); -- GitLab