From 27ad2040e537ea8e724a4e98a8e9a090ccd30441 Mon Sep 17 00:00:00 2001 From: "TESLA03\\Master" <a.wellmann@tu-bs.de> Date: Wed, 21 Jul 2021 14:30:34 +0200 Subject: [PATCH] Run new kernel only on fluid nodes --- .../CumulantK17CompChimSparse.cu | 6 ++++-- .../CumulantK17CompChimSparse_Device.cu | 14 +++++++++----- .../CumulantK17CompChimSparse_Device.cuh | 4 +++- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chimSparse/CumulantK17CompChimSparse.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chimSparse/CumulantK17CompChimSparse.cu index 0c197e53e..26b85c03a 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chimSparse/CumulantK17CompChimSparse.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chimSparse/CumulantK17CompChimSparse.cu @@ -29,7 +29,7 @@ void CumulantK17CompChimSparse::run() dim3 grid(Grid1, Grid2); dim3 threads(numberOfThreads, 1, 1); - LB_Kernel_CumulantK17CompChimSparse<<<grid, threads>>>( + LB_Kernel_CumulantK17CompChimSparse <<< grid, threads >>>( para->getParD(level)->omega, para->getParD(level)->geoSP, para->getParD(level)->neighborX_SP, @@ -40,7 +40,9 @@ void CumulantK17CompChimSparse::run() level, para->getForcesDev(), para->getQuadricLimitersDev(), - para->getParD(level)->evenOrOdd); + para->getParD(level)->evenOrOdd, + para->getParD(level)->fluidNodeIndices, + para->getParD(level)->numberOfFluidNodes); getLastCudaError("LB_Kernel_CumulantK17CompChim execution failed"); } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chimSparse/CumulantK17CompChimSparse_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chimSparse/CumulantK17CompChimSparse_Device.cu index 0acac9085..a520ebe25 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chimSparse/CumulantK17CompChimSparse_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chimSparse/CumulantK17CompChimSparse_Device.cu @@ -50,7 +50,9 @@ extern "C" __global__ void LB_Kernel_CumulantK17CompChimSparse( int level, real* forces, real* quadricLimiters, - bool isEvenTimestep) + bool isEvenTimestep, + const uint *fluidNodeIndices, + uint numberOfFluidNodes) { ////////////////////////////////////////////////////////////////////////// //! Cumulant K17 Kernel is based on \ref @@ -70,17 +72,19 @@ extern "C" __global__ void LB_Kernel_CumulantK17CompChimSparse( const unsigned nx = blockDim.x; const unsigned ny = gridDim.x; - const unsigned k = nx * (ny * z + y) + x; + const unsigned k_thread = nx * (ny * z + y) + x; ////////////////////////////////////////////////////////////////////////// - // run for all indices in size_Mat and fluid nodes - if ((k < size_Mat) && (typeOfGridNode[k] == GEO_FLUID)) { + // run for all indices in fluidNodeIndices + if (k_thread < numberOfFluidNodes) { ////////////////////////////////////////////////////////////////////////// //! - Read distributions: style of reading and writing the distributions from/to stored arrays dependent on //! timestep is based on the esoteric twist algorithm \ref <a //! href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), //! DOI:10.3390/computation5020019 ]</b></a> - //! + + const unsigned k = fluidNodeIndices[k_thread]; + Distributions27 dist; if (isEvenTimestep) { dist.f[dirE] = &distributions[dirE * size_Mat]; diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chimSparse/CumulantK17CompChimSparse_Device.cuh b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chimSparse/CumulantK17CompChimSparse_Device.cuh index 719264237..e750a08c2 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chimSparse/CumulantK17CompChimSparse_Device.cuh +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chimSparse/CumulantK17CompChimSparse_Device.cuh @@ -15,5 +15,7 @@ extern "C" __global__ void LB_Kernel_CumulantK17CompChimSparse( int level, real* forces, real* quadricLimiters, - bool isEvenTimestep); + bool isEvenTimestep, + const uint* fluidNodeIndices, + uint numberOfFluidNodes); #endif -- GitLab