|
Peano
|
Manages GPU data for a sparse subset of active leaf cells. More...
#include <EnclaveDataRepository.h>

Static Public Member Functions | |
| static EnclaveDataRepository & | getInstance () |
Private Types | |
| using | FaceKey = std::tuple<int, int, int> |
Private Member Functions | |
| EnclaveDataRepository () | |
Private Attributes | |
| double * | _combinedQBlockDevice = nullptr |
| double | _minVolumeH |
| double | _maxVolumeH |
| bool | _isReady |
| int | _numberOfEnclaveCells |
| int | _numberOfBoundaryFaces |
| double * | _QDevice |
| double * | _QReconstructedDevice |
| tarch::la::Vector< DIMENSIONS, double > * | _cellCentresDevice |
| tarch::la::Vector< DIMENSIONS, double > * | _cellSizesDevice |
| double * | _globalFacePoolDevice |
| A single, contiguous block of memory holding all unique face data. | |
| uint64_t * | _indicesOfFacesDevice |
| uint64_t * | _indicesOfBoundaryFacesDevice |
| uint8_t * | _boundaryFaceNumbersDevice |
| uint64_t * | _boundaryCellIndicesDevice |
| std::map< FaceKey, uint64_t > | _uniqueFaceMap |
| std::vector< tarch::la::Vector< DIMENSIONS, double > > | _bookmarkedCellCentres |
| std::vector< tarch::la::Vector< DIMENSIONS, double > > | _bookmarkedCellSizes |
Manages GPU data for a sparse subset of active leaf cells.
This repository holds data for "enclave" cells designated for GPU offloading. It is designed to be rebuilt whenever the mesh changes. Data is stored in a Structure-of-Arrays (SoA) layout for coalesced memory access on the GPU.
The lifecycle is as follows:
Definition at line 32 of file EnclaveDataRepository.h.
|
private |
Definition at line 86 of file EnclaveDataRepository.h.
|
delete |
|
delete |
| benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::~EnclaveDataRepository | ( | ) |
Definition at line 23 of file EnclaveDataRepository.cpp.
References clear().

|
private |
Definition at line 14 of file EnclaveDataRepository.cpp.
| void benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::bookmarkCell | ( | const tarch::la::Vector< DIMENSIONS, double > & | cellCentre, |
| const tarch::la::Vector< DIMENSIONS, double > & | cellSize ) |
Definition at line 35 of file EnclaveDataRepository.cpp.
References _bookmarkedCellCentres, _bookmarkedCellSizes, and cellSize.
Referenced by main().

| void benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::buildFromBookmarks | ( | ) |
Definition at line 43 of file EnclaveDataRepository.cpp.
References _bookmarkedCellCentres, _bookmarkedCellSizes, _boundaryCellIndicesDevice, _boundaryFaceNumbersDevice, _cellCentresDevice, _cellSizesDevice, _combinedQBlockDevice, _globalFacePoolDevice, _indicesOfBoundaryFacesDevice, _indicesOfFacesDevice, _isReady, _maxVolumeH, _minVolumeH, _numberOfBoundaryFaces, _numberOfEnclaveCells, _QDevice, _QReconstructedDevice, _uniqueFaceMap, cellSize, clear(), benchmarks::exahype2::kernelbenchmarks::DataRepository::getCellQ(), benchmarks::exahype2::kernelbenchmarks::DataRepository::getCellQCardinality(), benchmarks::exahype2::kernelbenchmarks::DataRepository::getCellQReconstructed(), benchmarks::exahype2::kernelbenchmarks::DataRepository::getCellQReconstructedCardinality(), benchmarks::exahype2::kernelbenchmarks::DataRepository::getFaceCardinality(), benchmarks::exahype2::kernelbenchmarks::DataRepository::Indexing::getFaceIndex(), benchmarks::exahype2::kernelbenchmarks::DataRepository::getFaceQNew(), and benchmarks::exahype2::kernelbenchmarks::DataRepository::getInstance().
Referenced by main().


| void benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::clear | ( | ) |
Definition at line 233 of file EnclaveDataRepository.cpp.
References _boundaryCellIndicesDevice, _boundaryFaceNumbersDevice, _cellCentresDevice, _cellSizesDevice, _combinedQBlockDevice, _globalFacePoolDevice, _indicesOfBoundaryFacesDevice, _indicesOfFacesDevice, _isReady, _numberOfBoundaryFaces, _numberOfEnclaveCells, _QDevice, and _QReconstructedDevice.
Referenced by buildFromBookmarks(), main(), and ~EnclaveDataRepository().

| uint64_t * benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::getBoundaryCellIndices | ( | ) |
Definition at line 353 of file EnclaveDataRepository.cpp.
References _boundaryCellIndicesDevice.
Referenced by main().

| uint64_t * benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::getBoundaryFaceIndices | ( | ) |
Definition at line 351 of file EnclaveDataRepository.cpp.
References _indicesOfBoundaryFacesDevice.
Referenced by main().

| uint8_t * benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::getBoundaryFaceNumbers | ( | ) |
Definition at line 352 of file EnclaveDataRepository.cpp.
References _boundaryFaceNumbersDevice.
Referenced by main().

| tarch::la::Vector< DIMENSIONS, double > * benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::getCellCentres | ( | ) |
Definition at line 354 of file EnclaveDataRepository.cpp.
References _cellCentresDevice.
Referenced by main().

| tarch::la::Vector< DIMENSIONS, double > * benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::getCellSizes | ( | ) |
Definition at line 355 of file EnclaveDataRepository.cpp.
References _cellSizesDevice.
Referenced by main().

| uint64_t * benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::getFaceIndices | ( | ) |
Definition at line 350 of file EnclaveDataRepository.cpp.
References _indicesOfFacesDevice.
Referenced by main().

| double * benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::getFacePool | ( | ) |
Definition at line 349 of file EnclaveDataRepository.cpp.
References _globalFacePoolDevice.
Referenced by main().

|
static |
Definition at line 9 of file EnclaveDataRepository.cpp.
Referenced by main().

| double benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::getMaxVolumeH | ( | ) | const |
Definition at line 360 of file EnclaveDataRepository.cpp.
References _maxVolumeH.
Referenced by main().

| double benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::getMinVolumeH | ( | ) | const |
Definition at line 359 of file EnclaveDataRepository.cpp.
References _minVolumeH.
Referenced by main().

| int benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::getNumberOfBoundaryFaces | ( | ) | const |
Definition at line 357 of file EnclaveDataRepository.cpp.
References _numberOfBoundaryFaces.
Referenced by main().

| int benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::getNumberOfEnclaveCells | ( | ) | const |
Definition at line 356 of file EnclaveDataRepository.cpp.
References _numberOfEnclaveCells.
Referenced by main().

| double * benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::getQ | ( | ) |
Definition at line 347 of file EnclaveDataRepository.cpp.
References _QDevice.
Referenced by main().

| double * benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::getQReconstructed | ( | ) |
Definition at line 348 of file EnclaveDataRepository.cpp.
References _QReconstructedDevice.
Referenced by main().

| bool benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::isReady | ( | ) | const |
Definition at line 358 of file EnclaveDataRepository.cpp.
References _isReady.
|
delete |
|
delete |
| void benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::startCollection | ( | ) |
Definition at line 25 of file EnclaveDataRepository.cpp.
References _bookmarkedCellCentres, _bookmarkedCellSizes, _isReady, _maxVolumeH, _minVolumeH, _numberOfEnclaveCells, and _uniqueFaceMap.
Referenced by main().

| void benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::syncCellsDeviceToHost | ( | ) |
Definition at line 265 of file EnclaveDataRepository.cpp.
References _bookmarkedCellCentres, _bookmarkedCellSizes, _isReady, _numberOfEnclaveCells, _QDevice, cellSize, benchmarks::exahype2::kernelbenchmarks::DataRepository::getCellQ(), benchmarks::exahype2::kernelbenchmarks::DataRepository::getCellQCardinality(), and benchmarks::exahype2::kernelbenchmarks::DataRepository::getInstance().
Referenced by main().


| void benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::syncCellsHostToDevice | ( | ) |
Definition at line 306 of file EnclaveDataRepository.cpp.
References _bookmarkedCellCentres, _bookmarkedCellSizes, _isReady, _numberOfEnclaveCells, _QDevice, cellSize, benchmarks::exahype2::kernelbenchmarks::DataRepository::getCellQ(), benchmarks::exahype2::kernelbenchmarks::DataRepository::getCellQCardinality(), and benchmarks::exahype2::kernelbenchmarks::DataRepository::getInstance().

| void benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::syncFacesDeviceToHost | ( | ) |
Definition at line 285 of file EnclaveDataRepository.cpp.
References _globalFacePoolDevice, _isReady, _uniqueFaceMap, benchmarks::exahype2::kernelbenchmarks::DataRepository::getFaceCardinality(), benchmarks::exahype2::kernelbenchmarks::DataRepository::getFaceQNew(), and benchmarks::exahype2::kernelbenchmarks::DataRepository::getInstance().
Referenced by main().


| void benchmarks::exahype2::kernelbenchmarks::EnclaveDataRepository::syncFacesHostToDevice | ( | ) |
Definition at line 326 of file EnclaveDataRepository.cpp.
References _globalFacePoolDevice, _isReady, _uniqueFaceMap, benchmarks::exahype2::kernelbenchmarks::DataRepository::getFaceCardinality(), benchmarks::exahype2::kernelbenchmarks::DataRepository::getFaceQNew(), and benchmarks::exahype2::kernelbenchmarks::DataRepository::getInstance().
Referenced by main().


|
private |
Definition at line 117 of file EnclaveDataRepository.h.
Referenced by bookmarkCell(), buildFromBookmarks(), startCollection(), syncCellsDeviceToHost(), and syncCellsHostToDevice().
|
private |
Definition at line 118 of file EnclaveDataRepository.h.
Referenced by bookmarkCell(), buildFromBookmarks(), startCollection(), syncCellsDeviceToHost(), and syncCellsHostToDevice().
|
private |
Definition at line 112 of file EnclaveDataRepository.h.
Referenced by buildFromBookmarks(), clear(), and getBoundaryCellIndices().
|
private |
Definition at line 111 of file EnclaveDataRepository.h.
Referenced by buildFromBookmarks(), clear(), and getBoundaryFaceNumbers().
|
private |
Definition at line 100 of file EnclaveDataRepository.h.
Referenced by buildFromBookmarks(), clear(), and getCellCentres().
|
private |
Definition at line 101 of file EnclaveDataRepository.h.
Referenced by buildFromBookmarks(), clear(), and getCellSizes().
|
private |
Definition at line 84 of file EnclaveDataRepository.h.
Referenced by buildFromBookmarks(), and clear().
|
private |
A single, contiguous block of memory holding all unique face data.
Definition at line 107 of file EnclaveDataRepository.h.
Referenced by buildFromBookmarks(), clear(), getFacePool(), syncFacesDeviceToHost(), and syncFacesHostToDevice().
|
private |
Definition at line 110 of file EnclaveDataRepository.h.
Referenced by buildFromBookmarks(), clear(), and getBoundaryFaceIndices().
|
private |
Definition at line 108 of file EnclaveDataRepository.h.
Referenced by buildFromBookmarks(), clear(), and getFaceIndices().
|
private |
Definition at line 92 of file EnclaveDataRepository.h.
Referenced by buildFromBookmarks(), clear(), isReady(), startCollection(), syncCellsDeviceToHost(), syncCellsHostToDevice(), syncFacesDeviceToHost(), and syncFacesHostToDevice().
|
private |
Definition at line 89 of file EnclaveDataRepository.h.
Referenced by buildFromBookmarks(), getMaxVolumeH(), and startCollection().
|
private |
Definition at line 88 of file EnclaveDataRepository.h.
Referenced by buildFromBookmarks(), getMinVolumeH(), and startCollection().
|
private |
Definition at line 94 of file EnclaveDataRepository.h.
Referenced by buildFromBookmarks(), clear(), and getNumberOfBoundaryFaces().
|
private |
Definition at line 93 of file EnclaveDataRepository.h.
Referenced by buildFromBookmarks(), clear(), getNumberOfEnclaveCells(), startCollection(), syncCellsDeviceToHost(), and syncCellsHostToDevice().
|
private |
Definition at line 97 of file EnclaveDataRepository.h.
Referenced by buildFromBookmarks(), clear(), getQ(), syncCellsDeviceToHost(), and syncCellsHostToDevice().
|
private |
Definition at line 98 of file EnclaveDataRepository.h.
Referenced by buildFromBookmarks(), clear(), and getQReconstructed().
|
private |
Definition at line 114 of file EnclaveDataRepository.h.
Referenced by buildFromBookmarks(), startCollection(), syncFacesDeviceToHost(), and syncFacesHostToDevice().