milupHPC documentation
  • include
  • subdomain_key_tree
Classes | Namespaces | Macros | Functions
subdomain.cuh File Reference

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...
 

Detailed Description

Classes and Kernels handling subdomains that distribute the workload among the MPI processes.

Author
Michael Staneker

Definition in file subdomain.cuh.

Macro Definition Documentation

◆ MILUPHPC_DOMAIN_CUH

#define MILUPHPC_DOMAIN_CUH

Definition at line 11 of file subdomain.cuh.


milupHPC - include/subdomain_key_tree/subdomain.cuh File Reference
Generated on Wed Aug 31 2022 12:16:53 by Doxygen 1.9.3