From 152e9bc8877e8bbe0d461e1229b6999fa5b627c5 Mon Sep 17 00:00:00 2001 From: Anna Wellmann <a.wellmann@tu-braunschweig.de> Date: Thu, 14 Oct 2021 17:45:59 +0200 Subject: [PATCH] Move indices for bulk and border stream into stream manager --- .../VirtualFluids_GPU/Calculation/UpdateGrid27.cpp | 11 +++++------ .../VirtualFluids_GPU/Parameter/CudaStreamManager.cpp | 7 +++++-- .../VirtualFluids_GPU/Parameter/CudaStreamManager.h | 9 ++++++++- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp index a794757a4..093d11dbb 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp +++ b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp @@ -20,10 +20,6 @@ void UpdateGrid27::updateGrid27(Parameter *para, vf::gpu::Communicator *comm, Cu updateGrid27(para, comm, cudaManager, pm, level + 1, t, kernels); } - ////////////////////////////////////////////////////////////////////////// - int borderStreamIndex = 1; - int bulkStreamIndex = 0; - ////////////////////////////////////////////////////////////////////////// collisionAndExchange(para, pm, level, t, kernels, comm, cudaManager); @@ -48,6 +44,9 @@ void UpdateGrid27::updateGrid27(Parameter *para, vf::gpu::Communicator *comm, Cu if( level != para->getFine() ) { if (para->getUseStreams() && para->getNumprocs() > 1) { + int borderStreamIndex = para->getStreamManager()->getBorderStreamIndex(); + int bulkStreamIndex = para->getStreamManager()->getBulkStreamIndex(); + fineToCoarseWithStream(para, level, para->getParD(level)->intFCBorder.ICellFCC, para->getParD(level)->intFCBorder.ICellFCF, @@ -100,8 +99,8 @@ void collisionAndExchange_noStreams_oldKernel(Parameter *para, std::vector<std:: void collisionAndExchange_streams(Parameter *para, std::vector<std::shared_ptr<PorousMedia>> &pm, int level, unsigned int t, std::vector<SPtr<Kernel>> &kernels, vf::gpu::Communicator *comm, CudaMemoryManager *cudaManager) { - int borderStreamIndex = 1; - int bulkStreamIndex = 0; + int borderStreamIndex = para->getStreamManager()->getBorderStreamIndex(); + int bulkStreamIndex = para->getStreamManager()->getBulkStreamIndex(); // launch border kernel collisionUsingIndex(para, pm, level, t, kernels, para->getParD(level)->fluidNodeIndicesBorder, para->getParD(level)->numberOffluidNodesBorder, borderStreamIndex); diff --git a/src/gpu/VirtualFluids_GPU/Parameter/CudaStreamManager.cpp b/src/gpu/VirtualFluids_GPU/Parameter/CudaStreamManager.cpp index f4a48d82f..2532c206f 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/CudaStreamManager.cpp +++ b/src/gpu/VirtualFluids_GPU/Parameter/CudaStreamManager.cpp @@ -49,8 +49,11 @@ void CudaStreamManager::terminateStreams() } cudaStream_t &CudaStreamManager::getStream(uint streamIndex) -{ - return cudaStreams[streamIndex]; } +{ return cudaStreams[streamIndex]; } + +int CudaStreamManager::getBorderStreamIndex() { return borderStreamIndex; } + +int CudaStreamManager::getBulkStreamIndex() { return bulkStreamIndex; } void CudaStreamManager::createCudaEvents() { diff --git a/src/gpu/VirtualFluids_GPU/Parameter/CudaStreamManager.h b/src/gpu/VirtualFluids_GPU/Parameter/CudaStreamManager.h index 328c3f973..fa315afa7 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/CudaStreamManager.h +++ b/src/gpu/VirtualFluids_GPU/Parameter/CudaStreamManager.h @@ -39,15 +39,22 @@ class CudaStreamManager { private: std::vector<cudaStream_t> cudaStreams; - cudaEvent_t startBulkKernel=NULL; + cudaEvent_t startBulkKernel = NULL; + const int borderStreamIndex = 1; + const int bulkStreamIndex = 0; public: CudaStreamManager(); ~CudaStreamManager(); + void launchStreams(uint numberOfStreams); void terminateStreams(); cudaStream_t &getStream(uint streamIndex); + int getBorderStreamIndex(); + int getBulkStreamIndex(); + + // Events void createCudaEvents(); void destroyCudaEvents(); void triggerStartBulkKernel(int streamIndex); -- GitLab