Classes and Kernels handling subdomains that distribute the workload among the MPI processes. More...
#include "../parameter.h"#include "../cuda_utils/cuda_runtime.h"#include "../cuda_utils/cuda_utilities.cuh"#include "../helper_handler.h"#include "tree.cuh"
Include dependency graph for subdomain.cuh:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Classes | |
| class | SubDomainKeyTree |
| SubDomainKeyTree class handling rank, number of processes and ranges. More... | |
| class | DomainList |
Namespaces | |
| namespace | KeyNS |
| Key (keyType) related functions and kernels. | |
| namespace | SubDomainKeyTreeNS |
| SubDomainKeyTree related functions and kernels. | |
| namespace | SubDomainKeyTreeNS::Kernel |
| Kernels. | |
| namespace | SubDomainKeyTreeNS::Kernel::Launch |
| Wrapped kernels. | |
| namespace | DomainListNS |
| namespace | DomainListNS::Kernel |
| namespace | DomainListNS::Kernel::Launch |
| namespace | ParticlesNS |
| Particle class related functions and kernels. | |
| namespace | ParticlesNS::Kernel |
| namespace | ParticlesNS::Kernel::Launch |
| namespace | CudaUtils |
| namespace | CudaUtils::Kernel |
| namespace | CudaUtils::Kernel::Launch |
| namespace | Physics |
| Physics related functions and kernels. | |
| namespace | Physics::Kernel |
| namespace | Physics::Kernel::Launch |
Macros | |
| #define | MILUPHPC_DOMAIN_CUH |
Functions | |
| CUDA_CALLABLE_MEMBER void | KeyNS::key2Char (keyType key, integer maxLevel, char *keyAsChar) |
| Convert a key to a char for printing. More... | |
| CUDA_CALLABLE_MEMBER integer | KeyNS::key2proc (keyType key, SubDomainKeyTree *subDomainKeyTree) |
| Convert the key to the corresponding process. More... | |
| __global__ void | SubDomainKeyTreeNS::Kernel::set (SubDomainKeyTree *subDomainKeyTree, integer rank, integer numProcesses, keyType *range, integer *procParticleCounter) |
| Kernel call to setter. More... | |
| __global__ void | SubDomainKeyTreeNS::Kernel::test (SubDomainKeyTree *subDomainKeyTree) |
| Test kernel call (for debugging/testing purposes). More... | |
| __global__ void | SubDomainKeyTreeNS::Kernel::buildDomainTree (Tree *tree, Particles *particles, DomainList *domainList, integer n, integer m) |
| Kernel to build the domain tree. More... | |
| __global__ void | SubDomainKeyTreeNS::Kernel::buildDomainTree (SubDomainKeyTree *subDomainKeyTree, Tree *tree, Particles *particles, DomainList *domainList, integer n, integer m, integer level) |
| __global__ void | SubDomainKeyTreeNS::Kernel::getParticleKeys (SubDomainKeyTree *subDomainKeyTree, Tree *tree, Particles *particles, keyType *keys, integer maxLevel, integer n, Curve::Type curveType=Curve::lebesgue) |
| Kernel to get all particle keys (and additional information for debugging purposes). More... | |
| __global__ void | SubDomainKeyTreeNS::Kernel::particlesPerProcess (SubDomainKeyTree *subDomainKeyTree, Tree *tree, Particles *particles, integer n, integer m, Curve::Type curveType=Curve::lebesgue) |
| Kernel to check particle's belonging and count in dependence of belonging/process. More... | |
| __global__ void | SubDomainKeyTreeNS::Kernel::markParticlesProcess (SubDomainKeyTree *subDomainKeyTree, Tree *tree, Particles *particles, integer n, integer m, integer *sortArray, Curve::Type curveType=Curve::lebesgue) |
| Kernel to mark particle's belonging. More... | |
| __global__ void | SubDomainKeyTreeNS::Kernel::zeroDomainListNodes (Particles *particles, DomainList *domainList, DomainList *lowestDomainList) |
| Zero domain list nodes. More... | |
| template<typename T > | |
| __global__ void | SubDomainKeyTreeNS::Kernel::prepareLowestDomainExchange (Particles *particles, DomainList *lowestDomainList, T *buffer, Entry::Name entry) |
| Prepare lowest domain exchange via MPI by copying to contiguous memory. More... | |
| template<typename T > | |
| __global__ void | SubDomainKeyTreeNS::Kernel::updateLowestDomainListNodes (Particles *particles, DomainList *lowestDomainList, T *buffer, Entry::Name entry) |
| Update lowest domain list nodes. More... | |
| __global__ void | SubDomainKeyTreeNS::Kernel::compLowestDomainListNodes (Tree *tree, Particles *particles, DomainList *lowestDomainList) |
| Compute/Find lowest domain list nodes. More... | |
| __global__ void | SubDomainKeyTreeNS::Kernel::compLocalPseudoParticles (Tree *tree, Particles *particles, DomainList *domainList, int n) |
| Compute local (tree) pseudo particles. More... | |
| __global__ void | SubDomainKeyTreeNS::Kernel::compDomainListPseudoParticlesPerLevel (Tree *tree, Particles *particles, DomainList *domainList, DomainList *lowestDomainList, int n, int level) |
| Compute domain list pseudo particles (per level). More... | |
| __global__ void | SubDomainKeyTreeNS::Kernel::compDomainListPseudoParticles (Tree *tree, Particles *particles, DomainList *domainList, DomainList *lowestDomainList, int n) |
| __global__ void | SubDomainKeyTreeNS::Kernel::repairTree (SubDomainKeyTree *subDomainKeyTree, Tree *tree, Particles *particles, DomainList *domainList, DomainList *lowestDomainList, int n, int m, Curve::Type curveType) |
| Repair tree by removing received and inserted (pseudo-)particles. More... | |
| __global__ void | SubDomainKeyTreeNS::Kernel::createKeyHistRanges (Helper *helper, integer bins) |
| __global__ void | SubDomainKeyTreeNS::Kernel::keyHistCounter (Tree *tree, Particles *particles, SubDomainKeyTree *subDomainKeyTree, Helper *helper, int bins, int n, Curve::Type curveType=Curve::lebesgue) |
| __global__ void | SubDomainKeyTreeNS::Kernel::calculateNewRange (SubDomainKeyTree *subDomainKeyTree, Helper *helper, int bins, int n, Curve::Type curveType=Curve::lebesgue) |
| void | SubDomainKeyTreeNS::Kernel::Launch::set (SubDomainKeyTree *subDomainKeyTree, integer rank, integer numProcesses, keyType *range, integer *procParticleCounter) |
| Wrapper for SubDomainKeyTreeNS::Kernel::set(). More... | |
| void | SubDomainKeyTreeNS::Kernel::Launch::test (SubDomainKeyTree *subDomainKeyTree) |
| Wrapper for SubDomainKeyTreeNS::Kernel::test(). More... | |
| real | SubDomainKeyTreeNS::Kernel::Launch::buildDomainTree (Tree *tree, Particles *particles, DomainList *domainList, integer n, integer m) |
| Wrapper for SubDomainKeyTreeNS::Kernel::buildDomainTree(). More... | |
| real | SubDomainKeyTreeNS::Kernel::Launch::buildDomainTree (SubDomainKeyTree *subDomainKeyTree, Tree *tree, Particles *particles, DomainList *domainList, integer n, integer m, integer level) |
| real | SubDomainKeyTreeNS::Kernel::Launch::getParticleKeys (SubDomainKeyTree *subDomainKeyTree, Tree *tree, Particles *particles, keyType *keys, integer maxLevel, integer n, Curve::Type curveType=Curve::lebesgue) |
| Wrapper for SubDomainKeyTreeNS::Kernel::getParticleKeys(). More... | |
| real | SubDomainKeyTreeNS::Kernel::Launch::particlesPerProcess (SubDomainKeyTree *subDomainKeyTree, Tree *tree, Particles *particles, integer n, integer m, Curve::Type curveType=Curve::lebesgue) |
| Wrapper for SubDomainKeyTreeNS::Kernel::particlesPerProcess(). More... | |
| real | SubDomainKeyTreeNS::Kernel::Launch::markParticlesProcess (SubDomainKeyTree *subDomainKeyTree, Tree *tree, Particles *particles, integer n, integer m, integer *sortArray, Curve::Type curveType=Curve::lebesgue) |
| Wrapper for ::SubDomainKeyTreeNS::Kernel::markParticlesPerProcess(). More... | |
| real | SubDomainKeyTreeNS::Kernel::Launch::zeroDomainListNodes (Particles *particles, DomainList *domainList, DomainList *lowestDomainList) |
| Wrapper for SubDomainKeyTreeNS::Kernel::zeroDomainListNodes(). More... | |
| template<typename T > | |
| real | SubDomainKeyTreeNS::Kernel::Launch::prepareLowestDomainExchange (Particles *particles, DomainList *lowestDomainList, T *buffer, Entry::Name entry) |
| Wrapper for SubDomainKeyTreeNS::Kernel::prepareLowestDomainExchange(). More... | |
| template<typename T > | |
| real | SubDomainKeyTreeNS::Kernel::Launch::updateLowestDomainListNodes (Particles *particles, DomainList *lowestDomainList, T *buffer, Entry::Name entry) |
| Wrapper for SubDomainKeyTreeNS::Kernel::updateLowestDomainListNodes(). More... | |
| real | SubDomainKeyTreeNS::Kernel::Launch::compLowestDomainListNodes (Tree *tree, Particles *particles, DomainList *lowestDomainList) |
| Wrapper for SubDomainKeyTreeNS::Kernel::compLowestDomainListNodes(). More... | |
| real | SubDomainKeyTreeNS::Kernel::Launch::compLocalPseudoParticles (Tree *tree, Particles *particles, DomainList *domainList, int n) |
| Wrapper for SubDomainKeyTreeNS::Kernel::compLocalPseudoParticles(). More... | |
| real | SubDomainKeyTreeNS::Kernel::Launch::compDomainListPseudoParticlesPerLevel (Tree *tree, Particles *particles, DomainList *domainList, DomainList *lowestDomainList, int n, int level) |
| Wrapper for SubDomainKeyTreeNS::Kernel::compDomainListPseudoParticlesPerLevel(). More... | |
| real | SubDomainKeyTreeNS::Kernel::Launch::compDomainListPseudoParticles (Tree *tree, Particles *particles, DomainList *domainList, DomainList *lowestDomainList, int n) |
| Wrapper for SubDomainKeyTreeNS::Kernel::compDomainListPseudoParticles(). More... | |
| real | SubDomainKeyTreeNS::Kernel::Launch::repairTree (SubDomainKeyTree *subDomainKeyTree, Tree *tree, Particles *particles, DomainList *domainList, DomainList *lowestDomainList, int n, int m, Curve::Type curveType) |
| Wrapper for SubDomainKeyTreeNS::Kernel::repairTree(). More... | |
| real | SubDomainKeyTreeNS::Kernel::Launch::createKeyHistRanges (Helper *helper, integer bins) |
| real | SubDomainKeyTreeNS::Kernel::Launch::keyHistCounter (Tree *tree, Particles *particles, SubDomainKeyTree *subDomainKeyTree, Helper *helper, int bins, int n, Curve::Type curveType=Curve::lebesgue) |
| real | SubDomainKeyTreeNS::Kernel::Launch::calculateNewRange (SubDomainKeyTree *subDomainKeyTree, Helper *helper, int bins, int n, Curve::Type curveType=Curve::lebesgue) |
| __global__ void | DomainListNS::Kernel::set (DomainList *domainList, integer *domainListIndices, integer *domainListLevels, integer *domainListIndex, integer *domainListCounter, keyType *domainListKeys, keyType *sortedDomainListKeys, integer *relevantDomainListIndices, integer *relevantDomainListLevels, integer *relevantDomainListProcess) |
| Kernel call to setter. More... | |
| __global__ void | DomainListNS::Kernel::setBorders (DomainList *domainList, real *borders, integer *relevantDomainListOriginalIndex) |
| __global__ void | DomainListNS::Kernel::info (Particles *particles, DomainList *domainList) |
| Info kernel (for debugging purposes). More... | |
| __global__ void | DomainListNS::Kernel::info (Particles *particles, DomainList *domainList, DomainList *lowestDomainList) |
| Info kernel (for debugging purposes). More... | |
| __global__ void | DomainListNS::Kernel::createDomainList (SubDomainKeyTree *subDomainKeyTree, DomainList *domainList, integer maxLevel, Curve::Type curveType=Curve::lebesgue) |
| Kernel to create the domain list. More... | |
| __global__ void | DomainListNS::Kernel::lowestDomainList (SubDomainKeyTree *subDomainKeyTree, Tree *tree, Particles *particles, DomainList *domainList, DomainList *lowestDomainList, integer n, integer m) |
| Kernel to create the lowest domain list. More... | |
| void | DomainListNS::Kernel::Launch::set (DomainList *domainList, integer *domainListIndices, integer *domainListLevels, integer *domainListIndex, integer *domainListCounter, keyType *domainListKeys, keyType *sortedDomainListKeys, integer *relevantDomainListIndices, integer *relevantDomainListLevels, integer *relevantDomainListProcess) |
| Wrapper for DomainListNS::Kernel::set(). More... | |
| void | DomainListNS::Kernel::Launch::setBorders (DomainList *domainList, real *borders, integer *relevantDomainListOriginalIndex) |
| real | DomainListNS::Kernel::Launch::info (Particles *particles, DomainList *domainList) |
| Wrapper for DomainListNS::Kernel::info(). More... | |
| real | DomainListNS::Kernel::Launch::info (Particles *particles, DomainList *domainList, DomainList *lowestDomainList) |
| real | DomainListNS::Kernel::Launch::createDomainList (SubDomainKeyTree *subDomainKeyTree, DomainList *domainList, integer maxLevel, Curve::Type curveType=Curve::lebesgue) |
| Wrapper for DomainListNS::Kernel::createDomainList(). More... | |
| real | DomainListNS::Kernel::Launch::lowestDomainList (SubDomainKeyTree *subDomainKeyTree, Tree *tree, Particles *particles, DomainList *domainList, DomainList *lowestDomainList, integer n, integer m) |
| Wrapper for ::DomainListNS::Kernel::lowestDoainList(). More... | |
| __device__ bool | ParticlesNS::applySphericalCriterion (SubDomainKeyTree *subDomainKeyTree, Tree *tree, Particles *particles, real d, int index) |
| Check whether particle(s) are within sphere from simulation center. More... | |
| __device__ bool | ParticlesNS::applyCubicCriterion (SubDomainKeyTree *subDomainKeyTree, Tree *tree, Particles *particles, real d, int index) |
| Check whether particle(s) are within cube from simulation center. More... | |
| __global__ void | ParticlesNS::Kernel::mark2remove (SubDomainKeyTree *subDomainKeyTree, Tree *tree, Particles *particles, int *particles2remove, int *counter, int criterion, real d, int numParticles) |
| real | ParticlesNS::Kernel::Launch::mark2remove (SubDomainKeyTree *subDomainKeyTree, Tree *tree, Particles *particles, int *particles2remove, int *counter, int criterion, real d, int numParticles) |
| template<typename T , typename U > | |
| __global__ void | CudaUtils::Kernel::markDuplicatesTemp (Tree *tree, DomainList *domainList, T *array, U *entry1, U *entry2, U *entry3, integer *duplicateCounter, integer *child, int length) |
| template<typename T , unsigned int blockSize> | |
| __global__ void | CudaUtils::Kernel::reduceBlockwise (T *array, T *outputData, int n) |
| template<typename T , unsigned int blockSize> | |
| __global__ void | CudaUtils::Kernel::blockReduction (const T *indata, T *outdata) |
| template<typename T , typename U > | |
| real | CudaUtils::Kernel::Launch::markDuplicatesTemp (Tree *tree, DomainList *domainList, T *array, U *entry1, U *entry2, U *entry3, integer *duplicateCounter, integer *child, int length) |
| template<typename T , unsigned int blockSize> | |
| real | CudaUtils::Kernel::Launch::reduceBlockwise (T *array, T *outputData, int n) |
| template<typename T , unsigned int blockSize> | |
| real | CudaUtils::Kernel::Launch::blockReduction (const T *indata, T *outdata) |
| template<unsigned int blockSize> | |
| __global__ void | Physics::Kernel::calculateAngularMomentumBlockwise (Particles *particles, real *outputData, int n) |
| Calculate angular momentum for all particles (per block). More... | |
| template<unsigned int blockSize> | |
| __global__ void | Physics::Kernel::sumAngularMomentum (const real *indata, real *outdata) |
| Calculate angular momentum: sum over blocks. More... | |
| __global__ void | Physics::Kernel::kineticEnergy (Particles *particles, int n) |
| Calculate kinetic energy. More... | |
| template<unsigned int blockSize> | |
| real | Physics::Kernel::Launch::calculateAngularMomentumBlockwise (Particles *particles, real *outputData, int n) |
| Wrapper for: Physics::Kernel::calculateAngularMomentumBlockwise(). More... | |
| template<unsigned int blockSize> | |
| real | Physics::Kernel::Launch::sumAngularMomentum (const real *indata, real *outdata) |
| Wrapper for: Physics::Kernel::sumAngularMomentum(). More... | |
| real | Physics::Kernel::Launch::kineticEnergy (Particles *particles, int n) |
| Wrapper for: Physics::Kernel::kineticEnergy(). More... | |
Classes and Kernels handling subdomains that distribute the workload among the MPI processes.
Definition in file subdomain.cuh.
| #define MILUPHPC_DOMAIN_CUH |
Definition at line 11 of file subdomain.cuh.