milupHPC documentation
Public Member Functions | Public Attributes | List of all members
Tree Class Reference

Tree class. More...

+ Collaboration diagram for Tree:
Collaboration graph

Public Member Functions

CUDA_CALLABLE_MEMBER Tree ()
 Default constructor. More...
 
CUDA_CALLABLE_MEMBER Tree (integer *count, integer *start, integer *child, integer *sorted, integer *index, integer *toDeleteLeaf, integer *toDeleteNode, real *minX, real *maxX)
 Constructor, passing pointer to member variables. More...
 
CUDA_CALLABLE_MEMBER void set (integer *count, integer *start, integer *child, integer *sorted, integer *index, integer *toDeleteLeaf, integer *toDeleteNode, real *minX, real *maxX)
 Setter, passing pointer to member variables. More...
 
CUDA_CALLABLE_MEMBER Tree (integer *count, integer *start, integer *child, integer *sorted, integer *index, integer *toDeleteLeaf, integer *toDeleteNode, real *minX, real *maxX, real *minY, real *maxY)
 Constructor, passing pointer to member variables. More...
 
CUDA_CALLABLE_MEMBER void set (integer *count, integer *start, integer *child, integer *sorted, integer *index, integer *toDeleteLeaf, integer *toDeleteNode, real *minX, real *maxX, real *minY, real *maxY)
 Setter, passing pointer to member variables. More...
 
CUDA_CALLABLE_MEMBER Tree (integer *count, integer *start, integer *child, integer *sorted, integer *index, integer *toDeleteLeaf, integer *toDeleteNode, real *minX, real *maxX, real *minY, real *maxY, real *minZ, real *maxZ)
 Constructor, passing pointer to member variables. More...
 
CUDA_CALLABLE_MEMBER void set (integer *count, integer *start, integer *child, integer *sorted, integer *index, integer *toDeleteLeaf, integer *toDeleteNode, real *minX, real *maxX, real *minY, real *maxY, real *minZ, real *maxZ)
 Constructor, passing pointer to member variables. More...
 
CUDA_CALLABLE_MEMBER void reset (integer index, integer n)
 Reset (specific) entries. More...
 
CUDA_CALLABLE_MEMBER keyType getParticleKey (Particles *particles, integer index, integer maxLevel, Curve::Type curveType=Curve::lebesgue)
 Get SFC key of a particle. More...
 
CUDA_CALLABLE_MEMBER integer getTreeLevel (Particles *particles, integer index, integer maxLevel, Curve::Type curveType=Curve::lebesgue)
 Get tree level for a (specific) particle. More...
 
CUDA_CALLABLE_MEMBER integer sumParticles ()
 Sum particles in tree. More...
 
CUDA_CALLABLE_MEMBER ~Tree ()
 Destructor. More...
 

Public Attributes

integer * count
 accumulated nodes/leaves beneath More...
 
integer * start
 TODO: describe start. More...
 
integer * child
 children/child nodes or leaves (beneath) More...
 
integer * sorted
 sorted (indices) for better cache performance More...
 
integer * index
 index used for counting nodes More...
 
integer * toDeleteLeaf
 buffer for remembering old indices for rebuilding tree More...
 
integer * toDeleteNode
 buffer for remembering old indices for rebuilding tree More...
 
real * minX
 bounding box minimal x More...
 
real * maxX
 bounding box maximal x More...
 
real * minY
 bounding box minimal y More...
 
real * maxY
 bounding box maximal y More...
 
real * minZ
 bounding box minimal z More...
 
real * maxZ
 bounding box maximal z More...
 

Detailed Description

Tree class.

Class to build and store hierarchical tree structure.

Since dynamic memory allocation and access to heap objects in GPUs are usually suboptimal, an array-based data structure is used to store the (pseudo-)particle information as well as the tree and allows for efficient cache alignment. Consequently, array indices are used instead of pointers to constitute the tree out of the tree nodes, whereas "-1" represents a null pointer and "-2" is used for locking nodes. For this purpose an array with the minimum length \( 2^{d} \cdot (M - N) \) with dimensionality \( d \) and number of cells \( (M -N) \) is needed to store the children. The \( i \)-th child of node \( c \) can therefore be accessed via index \( 2^d \cdot c + i \).

Definition at line 140 of file tree.cuh.

Constructor & Destructor Documentation

◆ Tree() [1/4]

CUDA_CALLABLE_MEMBER Tree::Tree ( )

Default constructor.

Definition at line 55 of file tree.cu.

◆ Tree() [2/4]

CUDA_CALLABLE_MEMBER Tree::Tree ( integer *  count,
integer *  start,
integer *  child,
integer *  sorted,
integer *  index,
integer *  toDeleteLeaf,
integer *  toDeleteNode,
real *  minX,
real *  maxX 
)

Constructor, passing pointer to member variables.

Parameters
countallocated array for accumulated nodes/leaves beneath
startallocated array for
childallocated array for children
sortedallocated array for sorted (indices) for better cache performance
indexallocated value for index used for counting nodes
toDeleteLeafallocated array for remembering old indices for rebuilding tree
toDeleteNodeallocated array for remembering old indices for rebuilding tree
minXallocated value for bounding box minimal x
maxXallocated value for bounding box maximal x

Definition at line 59 of file tree.cu.

◆ Tree() [3/4]

CUDA_CALLABLE_MEMBER Tree::Tree ( integer *  count,
integer *  start,
integer *  child,
integer *  sorted,
integer *  index,
integer *  toDeleteLeaf,
integer *  toDeleteNode,
real *  minX,
real *  maxX,
real *  minY,
real *  maxY 
)

Constructor, passing pointer to member variables.

Parameters
countallocated array for accumulated nodes/leaves beneath
startallocated array for
childallocated array for children
sortedallocated array for sorted (indices) for better cache performance
indexallocated value for index used for counting nodes
toDeleteLeafallocated array for remembering old indices for rebuilding tree
toDeleteNodeallocated array for remembering old indices for rebuilding tree
minXallocated value for bounding box minimal x
maxXallocated value for bounding box maximal x
minYallocated value for bounding box minimal y
maxYallocated value for bounding box maximal y

Definition at line 80 of file tree.cu.

◆ Tree() [4/4]

CUDA_CALLABLE_MEMBER Tree::Tree ( integer *  count,
integer *  start,
integer *  child,
integer *  sorted,
integer *  index,
integer *  toDeleteLeaf,
integer *  toDeleteNode,
real *  minX,
real *  maxX,
real *  minY,
real *  maxY,
real *  minZ,
real *  maxZ 
)

Constructor, passing pointer to member variables.

Parameters
countallocated array for accumulated nodes/leaves beneath
startallocated array for
childallocated array for children
sortedallocated array for sorted (indices) for better cache performance
indexallocated value for index used for counting nodes
toDeleteLeafallocated array for remembering old indices for rebuilding tree
toDeleteNodeallocated array for remembering old indices for rebuilding tree
minXallocated value for bounding box minimal x
maxXallocated value for bounding box maximal x
minYallocated value for bounding box minimal y
maxYallocated value for bounding box maximal y
minZallocated value for bounding box minimal z
maxZallocated value for bounding box maximal z

Definition at line 104 of file tree.cu.

◆ ~Tree()

CUDA_CALLABLE_MEMBER Tree::~Tree ( )

Destructor.

Definition at line 298 of file tree.cu.

Member Function Documentation

◆ getParticleKey()

CUDA_CALLABLE_MEMBER keyType Tree::getParticleKey ( Particles *  particles,
integer  index,
integer  maxLevel,
Curve::Type  curveType = Curve::lebesgue 
)

Get SFC key of a particle.

The particle key computation can be accomplished by using the particle's location within the simulation domain, thus regarding the bounding boxes, which is equivalent to a tree traversing.

The Lebesgue keys can be converted via tables.

Parameters
particlesinstance of particles (array)
indexdesired index in particles to get tree of desired particle
maxLevelmax tree level
curveTypespace-filling curve type to be assumed (Lebesgue/Hilbert)
Returns
particle key

Definition at line 157 of file tree.cu.

+ Here is the call graph for this function:

◆ getTreeLevel()

CUDA_CALLABLE_MEMBER integer Tree::getTreeLevel ( Particles *  particles,
integer  index,
integer  maxLevel,
Curve::Type  curveType = Curve::lebesgue 
)

Get tree level for a (specific) particle.

Calculates the particle key and uses key to construct path within tree, returning when path lead to the desired particle/index of the particle.

Parameters
particlesparticles instance of particles (array)
indexdesired index in particles to get tree of desired particle
maxLevelmax tree level
curveTypespace-filling curve type to be assumed (Lebesgue/Hilbert)
Returns
particles[index] tree level

Definition at line 242 of file tree.cu.

+ Here is the call graph for this function:

◆ reset()

CUDA_CALLABLE_MEMBER void Tree::reset ( integer  index,
integer  n 
)

Reset (specific) entries.

Parameters
index
n

Definition at line 133 of file tree.cu.

◆ set() [1/3]

CUDA_CALLABLE_MEMBER void Tree::set ( integer *  count,
integer *  start,
integer *  child,
integer *  sorted,
integer *  index,
integer *  toDeleteLeaf,
integer *  toDeleteNode,
real *  minX,
real *  maxX 
)

Setter, passing pointer to member variables.

Parameters
countallocated array for accumulated nodes/leaves beneath
startallocated array for
childallocated array for children
sortedallocated array for sorted (indices) for better cache performance
indexallocated value for index used for counting nodes
toDeleteLeafallocated array for remembering old indices for rebuilding tree
toDeleteNodeallocated array for remembering old indices for rebuilding tree
minXallocated value for bounding box minimal x
maxXallocated value for bounding box maximal x

Definition at line 65 of file tree.cu.

◆ set() [2/3]

CUDA_CALLABLE_MEMBER void Tree::set ( integer *  count,
integer *  start,
integer *  child,
integer *  sorted,
integer *  index,
integer *  toDeleteLeaf,
integer *  toDeleteNode,
real *  minX,
real *  maxX,
real *  minY,
real *  maxY 
)

Setter, passing pointer to member variables.

Parameters
countallocated array for accumulated nodes/leaves beneath
startallocated array for
childallocated array for children
sortedallocated array for sorted (indices) for better cache performance
indexallocated value for index used for counting nodes
toDeleteLeafallocated array for remembering old indices for rebuilding tree
toDeleteNodeallocated array for remembering old indices for rebuilding tree
minXallocated value for bounding box minimal x
maxXallocated value for bounding box maximal x
minYallocated value for bounding box minimal y
maxYallocated value for bounding box maximal y

Definition at line 87 of file tree.cu.

◆ set() [3/3]

CUDA_CALLABLE_MEMBER void Tree::set ( integer *  count,
integer *  start,
integer *  child,
integer *  sorted,
integer *  index,
integer *  toDeleteLeaf,
integer *  toDeleteNode,
real *  minX,
real *  maxX,
real *  minY,
real *  maxY,
real *  minZ,
real *  maxZ 
)

Constructor, passing pointer to member variables.

Parameters
countallocated array for accumulated nodes/leaves beneath
startallocated array for
childallocated array for children
sortedallocated array for sorted (indices) for better cache performance
indexallocated value for index used for counting nodes
toDeleteLeafallocated array for remembering old indices for rebuilding tree
toDeleteNodeallocated array for remembering old indices for rebuilding tree
minXallocated value for bounding box minimal x
maxXallocated value for bounding box maximal x
minYallocated value for bounding box minimal y
maxYallocated value for bounding box maximal y
minZallocated value for bounding box minimal z
maxZallocated value for bounding box maximal z

Definition at line 112 of file tree.cu.

◆ sumParticles()

CUDA_CALLABLE_MEMBER integer Tree::sumParticles ( )

Sum particles in tree.

Returns
sum of particles within tree

Definition at line 288 of file tree.cu.

+ Here is the call graph for this function:

Member Data Documentation

◆ child

integer* Tree::child

children/child nodes or leaves (beneath)

Definition at line 150 of file tree.cuh.

◆ count

integer* Tree::count

accumulated nodes/leaves beneath

Deprecated:

Definition at line 146 of file tree.cuh.

◆ index

integer* Tree::index

index used for counting nodes

Definition at line 154 of file tree.cuh.

◆ maxX

real* Tree::maxX

bounding box maximal x

Definition at line 164 of file tree.cuh.

◆ maxY

real* Tree::maxY

bounding box maximal y

Definition at line 169 of file tree.cuh.

◆ maxZ

real* Tree::maxZ

bounding box maximal z

Definition at line 174 of file tree.cuh.

◆ minX

real* Tree::minX

bounding box minimal x

Definition at line 162 of file tree.cuh.

◆ minY

real* Tree::minY

bounding box minimal y

Definition at line 167 of file tree.cuh.

◆ minZ

real* Tree::minZ

bounding box minimal z

Definition at line 172 of file tree.cuh.

◆ sorted

integer* Tree::sorted

sorted (indices) for better cache performance

Definition at line 152 of file tree.cuh.

◆ start

integer* Tree::start

TODO: describe start.

Definition at line 148 of file tree.cuh.

◆ toDeleteLeaf

integer* Tree::toDeleteLeaf

buffer for remembering old indices for rebuilding tree

Definition at line 157 of file tree.cuh.

◆ toDeleteNode

integer* Tree::toDeleteNode

buffer for remembering old indices for rebuilding tree

Definition at line 159 of file tree.cuh.


The documentation for this class was generated from the following files:
  • include/subdomain_key_tree/tree.cuh
  • src/subdomain_key_tree/tree.cu

milupHPC - Tree Class Reference
Generated on Wed Aug 31 2022 12:16:53 by Doxygen 1.9.3