![]() |
Peano
|
Functions | |
void | runBenchmarks (int numberOfCells, double timeStamp, double timeStepSize, const tarch::la::Vector< DIMENSIONS, double > cellCenter, const tarch::la::Vector< DIMENSIONS, double > cellSize) |
Variables | |
tarch::logging::Log | _log |
This is variant 4 of the fused kernels. More... | |
void variant4::runBenchmarks | ( | int | numberOfCells, |
double | timeStamp, | ||
double | timeStepSize, | ||
const tarch::la::Vector< DIMENSIONS, double > | cellCenter, | ||
const tarch::la::Vector< DIMENSIONS, double > | cellSize | ||
) |
Definition at line 223 of file Variant4.cpp.
References variant1::_log, cellCenter, cellSize, exahype2::FaceData< inType, outType >::dt, exahype2::FaceData< inType, outType >::faceCentre, exahype2::FaceData< inType, outType >::faceSize, initialTask(), benchmarks::exahype2::kernelbenchmarks::initInputData(), benchmarks::exahype2::kernelbenchmarks::NumberOfInputEntriesPerCell, exahype2::FaceData< inType, outType >::QIn, exahype2::FaceData< inType, outType >::QOut, benchmarks::exahype2::kernelbenchmarks::reportRuntime(), runKernels(), exahype2::FaceData< inType, outType >::t, timeStamp, timeStepSize, and timingComputeKernel.
Referenced by main().
|
extern |
This is variant 4 of the fused kernels.
In this variant, we will assume that faceData is constructed per FACE, and that it contains data from both from sides of said face, i.e. the "left" and "right" sides. We assume that this data is NOT shared with the neighbour, i.e. the faceData exists once per Cell and data must be copied between two instances of the same face between timeSteps.
This means that the data in the faces must be copied from one face to the other in between timeSteps, at which point the Riemann kernels can be performed as well.
This can be implemented as two enclave tasks, with the first consisting of exchanging face data and solving the pre-required Riemann problems, and the second being solving the problems inside of all of the cells.
Upsides: only requires each Riemann Kernel to be performed once only one dependency between two groups of tasks
Downsides: Requires copying of data between faces Costly data dependency at the beginning of the step due to the initial Riemann solves