diff --git a/apps/gpu/LBM/MusselOyster/MusselOyster.cpp b/apps/gpu/LBM/MusselOyster/MusselOyster.cpp index 0cd44375fa75c261b7821ae0128841d20f55b1d4..4c18a7c84fb668d8bec6e2d25ee7aeb9215db9f9 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 a8529096cf0d59c35ca6afdbd4f83e915003f62b..eff5f8039450442c4604e5bc932c42177330ee95 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);