Helios++
Helios software for LiDAR simulations
AxisSAHKDTreeGeometricStrategy Class Reference

Class providing a strategy for geometry-level parallelization of Axis SAH KDTree building. The geometry-level parallelization is the one to be applied on upper tree nodes, where multiple threads work on the building of the same node. More...

#include <AxisSAHKDTreeGeometricStrategy.h>

Inheritance diagram for AxisSAHKDTreeGeometricStrategy:
Collaboration diagram for AxisSAHKDTreeGeometricStrategy:

Public Member Functions

 AxisSAHKDTreeGeometricStrategy (AxisSAHKDTreeFactory &kdtf)
 AxisSAHKDTreeGeometricStrategy default constructor. More...
 
SimpleKDTreeGeometricStrategyclone (SimpleKDTreeFactory *kdtf) const override
 Create a clone of the AxisSAHKDTreeGeometricStrategy. More...
 
- Public Member Functions inherited from SAHKDTreeGeometricStrategy
 SAHKDTreeGeometricStrategy (SAHKDTreeFactory &kdtf)
 SAHKDTreeGeometricStrategy default constructor. More...
 
SimpleKDTreeGeometricStrategyclone (SimpleKDTreeFactory *kdtf) const override
 Create a clone of the SAHKDTreeGeometricStrategy. More...
 
- Public Member Functions inherited from SimpleKDTreeGeometricStrategy
 SimpleKDTreeGeometricStrategy (SimpleKDTreeFactory &kdtf)
 SimpleKDTreeGeometricStrategy default constructor. More...
 

Protected Member Functions

void GEOM_defineSplit (KDTreeNode *node, KDTreeNode *parent, vector< Primitive * > &primitives, int const depth, int const assignedThreads) const override
 Extend SAHKDTreeFactory::GEOM_defineSplit to handle greedy search of best split axis inside a geometry-level parallelization context. More...
 
- Protected Member Functions inherited from SAHKDTreeGeometricStrategy
void GEOM_defineSplit (KDTreeNode *node, KDTreeNode *parent, vector< Primitive * > &primitives, int const depth, int const assignedThreads) const override
 Geometry-level parallel version of the SAHKDTreeFactory::defineSplit function. More...
 
void GEOM_buildChildrenNodes (KDTreeNode *node, KDTreeNode *parent, vector< Primitive * > const &primitives, int const depth, int const index, vector< Primitive * > &leftPrimitives, vector< Primitive * > &rightPrimitives, std::shared_ptr< SharedTaskSequencer > masters) override
 Geometry-level parallel version of the SAHKDTreeFactory::buildChildrenNodes. More...
 
virtual double GEOM_findSplitPositionBySAH (KDTreeNode *node, vector< Primitive * > &primitives, int assignedThreads) const
 Geometry-level parallel version of the SAHKDTreeFactory::findSplitPositionBySAH function. More...
 
- Protected Member Functions inherited from SimpleKDTreeGeometricStrategy
virtual void GEOM_computeNodeBoundaries (KDTreeNode *node, KDTreeNode *parent, bool const left, vector< Primitive * > const &primitives, int assignedThreads)
 Geometry-level parallel version of the SimpleKDTreeFactory::computeNodeBoundaries function. More...
 
virtual void GEOM_populateSplits (vector< Primitive * > const &primitives, int const splitAxis, double const splitPos, vector< Primitive * > &leftPrimitives, vector< Primitive * > &rightPrimitives, int assignedThreads) const
 Geometry-level parallel version of the SimpleKDTreeFactory::populateSplits function. More...
 

Protected Attributes

AxisSAHKDTreeFactoryasahkdtf
 The axis surface area heuristic KDTree factory to which geometric strategy shall be applied.
 
- Protected Attributes inherited from SAHKDTreeGeometricStrategy
SAHKDTreeFactorysahkdtf
 The surface area heuristic KDTree factory to which geometric strategy shall be applied.
 
- Protected Attributes inherited from SimpleKDTreeGeometricStrategy
SimpleKDTreeFactorykdtf
 The simple KDTree factory to which geometric strategy shall be applied.
 

Friends

class MultiThreadKDTreeFactory
 

Detailed Description

Class providing a strategy for geometry-level parallelization of Axis SAH KDTree building. The geometry-level parallelization is the one to be applied on upper tree nodes, where multiple threads work on the building of the same node.

Author
Alberto M. Esmoris Pena
Version
1.0
See also
SAHKDTreeGeometricStrategy

Constructor & Destructor Documentation

◆ AxisSAHKDTreeGeometricStrategy()

AxisSAHKDTreeGeometricStrategy::AxisSAHKDTreeGeometricStrategy ( AxisSAHKDTreeFactory kdtf)
inline

Member Function Documentation

◆ clone()

SimpleKDTreeGeometricStrategy * AxisSAHKDTreeGeometricStrategy::clone ( SimpleKDTreeFactory kdtf) const
overridevirtual

Create a clone of the AxisSAHKDTreeGeometricStrategy.

Parameters
kdtfThe KDTreeFactory to be referenced by the clone
Returns
Clone of the AxisSAHKDTreeGeometricStrategy

Reimplemented from SimpleKDTreeGeometricStrategy.

◆ GEOM_defineSplit()

void AxisSAHKDTreeGeometricStrategy::GEOM_defineSplit ( KDTreeNode node,
KDTreeNode parent,
vector< Primitive * > &  primitives,
int const  depth,
int const  assignedThreads 
) const
overrideprotectedvirtual

Extend SAHKDTreeFactory::GEOM_defineSplit to handle greedy search of best split axis inside a geometry-level parallelization context.

See also
SAHKDTreeFactory::GEOM_defineSplit

Reimplemented from SimpleKDTreeGeometricStrategy.


The documentation for this class was generated from the following files: