Skip to content
Snippets Groups Projects
Commit 152e9bc8 authored by Anna Wellmann's avatar Anna Wellmann
Browse files

Move indices for bulk and border stream into stream manager

parent a07e8b33
No related branches found
No related tags found
1 merge request!104Add Communication Hiding to GPU version
......@@ -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);
......
......@@ -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()
{
......
......@@ -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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment