diff --git a/apps/gpu/LBM/BoundaryLayer/BoundaryLayer.cpp b/apps/gpu/LBM/BoundaryLayer/BoundaryLayer.cpp index c57b474d9c4805528b9c2b9e925638a89d4467dd..aaefbadd67b531ebe4438d1ec790a4bc52a82d46 100644 --- a/apps/gpu/LBM/BoundaryLayer/BoundaryLayer.cpp +++ b/apps/gpu/LBM/BoundaryLayer/BoundaryLayer.cpp @@ -178,7 +178,7 @@ void multipleLevel(const std::string& configPath) para->setDensityRatio( 1.0 ); bool useStreams = (nProcs > 1 ? true: false); - useStreams=true; + // useStreams=true; para->setUseStreams(useStreams); para->setMainKernel("CumulantK17Almighty"); para->setIsBodyForce( config.getValue<bool>("bodyForce") ); diff --git a/src/gpu/VirtualFluids_GPU/Calculation/CollisisionStrategy.cpp b/src/gpu/VirtualFluids_GPU/Calculation/CollisisionStrategy.cpp index 819119176f131d50a569dbf63c863d346149585c..c06be75d9f24175b1d69e391e7dfb5dbc0885988 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/CollisisionStrategy.cpp +++ b/src/gpu/VirtualFluids_GPU/Calculation/CollisisionStrategy.cpp @@ -41,8 +41,8 @@ void CollisionAndExchange_noStreams_indexKernel::operator()(UpdateGrid27 *update //! updateGrid->collisionUsingIndices( level, t, para->getParD(level)->taggedFluidNodeIndices[CollisionTemplate::Default], - para->getParD(level)->numberOfTaggedFluidNodes[CollisionTemplate::Default], - CollisionTemplate::Default, + para->getParD(level)->numberOfTaggedFluidNodes[CollisionTemplate::Default], + CollisionTemplate::Default, CudaStreamIndex::Legacy); //! 2. exchange information between GPUs diff --git a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp index ae72af41f1fd7367f51c9f0b5059c26fe01b09e8..2b56160bca003fca66aba4399d0adb28bcb569fd 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp +++ b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp @@ -71,10 +71,10 @@ void UpdateGrid27::collisionAllNodes(int level, unsigned int t) collisionAdvectionDiffusion(level); } -void UpdateGrid27::collisionUsingIndices(int level, unsigned int t, uint *indices, uint numberOfIndices, CollisionTemplate collisionTemplate, CudaStreamIndex stream) +void UpdateGrid27::collisionUsingIndices(int level, unsigned int t, uint *taggedFluidNodeIndices, uint numberOfTaggedFluidNodes, CollisionTemplate collisionTemplate, CudaStreamIndex stream) { - if (indices != nullptr && numberOfIndices != 0) - kernels.at(level)->runOnIndices(indices, numberOfIndices, collisionTemplate, stream); + if (taggedFluidNodeIndices != nullptr && numberOfTaggedFluidNodes != 0) + kernels.at(level)->runOnIndices(taggedFluidNodeIndices, numberOfTaggedFluidNodes, collisionTemplate, stream); else std::cout << "In collision: fluidNodeIndices or numberOfFluidNodes not definded" << std::endl; diff --git a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h index 6f5db02aee211021994fea4257e4b19feaa56c48..4a25821672a86e9368ebacc3c8012e69267a9afe 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h +++ b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h @@ -31,7 +31,7 @@ public: private: void collisionAllNodes(int level, unsigned int t); - void collisionUsingIndices(int level, unsigned int t, uint *indices, uint numberOfIndices, CollisionTemplate collisionTemplate, CudaStreamIndex streamIndex=CudaStreamIndex::Legacy); + void collisionUsingIndices(int level, unsigned int t, uint *taggedFluidNodeIndices = nullptr, uint numberOfTaggedFluidNodes = 0, CollisionTemplate collisionTemplate = CollisionTemplate::Default, CudaStreamIndex streamIndex=CudaStreamIndex::Legacy); void collisionAdvectionDiffusion(int level); void postCollisionBC(int level); diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernel.h b/src/gpu/VirtualFluids_GPU/Kernel/Kernel.h index 94b42728ba6fb6a942653bd056a48a3fa24319c1..7eaf0050b41a0aa67de0a4e592b8a123d9ef3e9f 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernel.h +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernel.h @@ -16,7 +16,7 @@ class Kernel public: virtual ~Kernel() = default; virtual void run() = 0; - virtual void runOnIndices(const unsigned int *indices, unsigned int size_indices, CollisionTemplate collisionTemplate, CudaStreamIndex streamIdx=CudaStreamIndex::Legacy) = 0; + virtual void runOnIndices(const unsigned int *indices, unsigned int size_indices, CollisionTemplate collisionTemplate, CudaStreamIndex streamIdx=CudaStreamIndex::Legacy) = 0; //if stream == -1: run on default stream virtual bool checkParameter() = 0; virtual std::vector<PreProcessorType> getPreProcessorTypes() = 0; diff --git a/src/gpu/VirtualFluids_GPU/Kernel/KernelImp.h b/src/gpu/VirtualFluids_GPU/Kernel/KernelImp.h index d7ebb3eee35678cca64cf55a34524740a0ca7e7f..a96c2c123472ca33f635273e06a5bf36a745654d 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/KernelImp.h +++ b/src/gpu/VirtualFluids_GPU/Kernel/KernelImp.h @@ -16,7 +16,7 @@ class KernelImp : public Kernel { public: virtual void run() = 0; - virtual void runOnIndices(const unsigned int *indices, unsigned int size_indices, CollisionTemplate collisionTemplate, CudaStreamIndex streamIndex); + virtual void runOnIndices(const unsigned int *indices, unsigned int size_indices, CollisionTemplate collisionTemplate, CudaStreamIndex streamIndex=CudaStreamIndex::Legacy); bool checkParameter(); std::vector<PreProcessorType> getPreProcessorTypes(); diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17Almighty/CumulantK17Almighty.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17Almighty/CumulantK17Almighty.cu index 8ddaa6381d65707936b580509bfd277b3f990bda..bb1b36ad8e14129a379fdce505345904f7b1f8ce 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17Almighty/CumulantK17Almighty.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17Almighty/CumulantK17Almighty.cu @@ -37,8 +37,10 @@ void CumulantK17Almighty<turbulenceModel>::run() } template<TurbulenceModel turbulenceModel> -void CumulantK17Almighty<turbulenceModel>::runOnIndices( const unsigned int *indices, unsigned int size_indices, CollisionTemplate collisionTemplate, CudaStreamIndex streamIndex) +void CumulantK17Almighty<turbulenceModel>::runOnIndices( const unsigned int *indices, unsigned int size_indices, CollisionTemplate collisionTemplate, CudaStreamIndex streamIndex ) { + cudaStream_t stream = para->getStreamManager()->getStream(streamIndex); + switch (collisionTemplate) { case CollisionTemplate::Default: diff --git a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp index a98d290997a1c20afc30b66eec68988eb10fa995..68c4555f57b97133e05b2bd0e7692ff95ea70068 100644 --- a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp +++ b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp @@ -117,6 +117,10 @@ void Simulation::init(GridProvider &gridProvider, BoundaryConditionFactory *bcFa para->getStreamManager()->launchStreams(); para->getStreamManager()->createCudaEvents(); } + std::cout << "OKDIDOKI 1" << std::endl; + auto test = para->getStreamManager()->getStream(CudaStreamIndex::Legacy); + if(test == CU_STREAM_LEGACY) + std::cout << "OKDIDOKI 2" << std::endl; ////////////////////////////////////////////////////////////////////////// VF_LOG_INFO("LB_Modell: D3Q{}", para->getD3Qxx()); VF_LOG_INFO("Re: {}", para->getRe()); diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp index eea23b991a529da60cd4dea021c7b0fbb3d41eb0..b8d5064bbe59ad8bbc37d65fa47e553c92b3fbfa 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp +++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp @@ -65,6 +65,8 @@ Parameter::Parameter(int numberOfProcesses, int myId, std::optional<const vf::ba initGridPaths(); initGridBasePoints(); initDefaultLBMkernelAllLevels(); + + this->cudaStreamManager = std::make_unique<CudaStreamManager>(); } Parameter::~Parameter() = default; @@ -2655,7 +2657,6 @@ void Parameter::setUseStreams(bool useStreams) if (useStreams) { if (this->getNumprocs() != 1) { this->useStreams = useStreams; - this->cudaStreamManager = std::make_unique<CudaStreamManager>(); return; } else { std::cout << "Can't use streams with only one process!" << std::endl;