VirtualFluids 0.2.0
Parallel CFD LBM Solver
Loading...
Searching...
No Matches
vf::gpu::CollisionAndExchange_streams Class Reference

Version of collision: for multi-gpu simulations, with communication hiding ("streams"), for newer kernels that use an array of fluid nodes to determine which nodes to update. More...

#include <CollisionStrategy.h>

Public Member Functions

void operator() (UpdateGrid27 *updateGrid, Parameter *para, int level, unsigned int t)
 

Detailed Description

Version of collision: for multi-gpu simulations, with communication hiding ("streams"), for newer kernels that use an array of fluid nodes to determine which nodes to update.

recommended for multi-gpu simulations if the chosen collision kernel supports the use of cuda streams

Definition at line 64 of file CollisionStrategy.h.

Member Function Documentation

◆ operator()()

void vf::gpu::CollisionAndExchange_streams::operator() ( UpdateGrid27 updateGrid,
Parameter para,
int  level,
unsigned int  t 
)

steps:

  1. run collision for nodes which are at the border of the gpus/processes, running with WriteMacroVars in case probes sample on these nodes
  1. prepare the exchange between gpus (collect the send nodes for communication in a buffer on the gpu) and trigger bulk kernel execution when finished
  1. launch the collision kernel for bulk nodes. This includes nodes with
    Parameters
    tagDefault, WriteMacroVars, ApplyBodyForce, or AllFeatures. All assigned tags are listed in
    allocatedBulkFluidNodeTagsduring initialization in Simulation::init
  2. exchange information between GPUs
  1. wait for both streams to finish to have coherent post collision state

Definition at line 102 of file CollisisionStrategy.cpp.


The documentation for this class was generated from the following files: