VTK-m  2.0
Public Types | Public Member Functions | Private Attributes | List of all members
vtkm::worklet::contourtree_distributed::hierarchical_augmenter::CreateSuperarcsWorklet Class Reference

Worklet used to implement the main part of HierarchicalAugmenter::CreateSuperarcs Connect superarcs for the level & set hyperparents & superchildren count, whichRound, whichIteration, super2hypernode. More...

#include <CreateSuperarcsWorklet.h>

Inheritance diagram for vtkm::worklet::contourtree_distributed::hierarchical_augmenter::CreateSuperarcsWorklet:
vtkm::worklet::WorkletMapField vtkm::exec::FunctorBase

Public Types

using ControlSignature = void(WholeArrayIn supernodeSorter, WholeArrayIn superparentSet, WholeArrayIn baseTreeSuperarcs, WholeArrayIn newSupernodeIds, WholeArrayIn baseTreeSupernodes, WholeArrayIn baseTreeRegularNodeGlobalIds, FieldIn globalRegularIdSet, WholeArrayIn baseTreeSuper2Hypernode, WholeArrayIn baseTreeWhichIteration, FieldOut augmentedTreeSuperarcsView, WholeArrayInOut augmentedTreeFirstSupernodePerIteration, FieldOut augmentedTreeSuper2hypernode)
 Control signature for the worklet. More...
 
using ExecutionSignature = void(InputIndex, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12)
 
using InputDomain = _1
 
- Public Types inherited from vtkm::worklet::WorkletMapField
template<typename Worklet >
using Dispatcher = vtkm::worklet::DispatcherMapField< Worklet >
 

Public Member Functions

VTKM_EXEC_CONT CreateSuperarcsWorklet (const vtkm::Id &numSupernodesAlready, const vtkm::Id &baseTreeNumRounds, const vtkm::Id &augmentedTreeNumIterations, const vtkm::Id &roundNumber, const vtkm::Id &numAugmentedTreeSupernodes)
 Default Constructor. More...
 
template<typename InFieldPortalType , typename InOutFieldPortalType >
VTKM_EXEC void operator() (const vtkm::Id &supernode, const InFieldPortalType &supernodeSorterPortal, const InFieldPortalType &superparentSetPortal, const InFieldPortalType &baseTreeSuperarcsPortal, const InFieldPortalType &newSupernodeIdsPortal, const InFieldPortalType &baseTreeSupernodesPortal, const InFieldPortalType &baseTreeRegularNodeGlobalIdsPortal, const vtkm::Id &globalRegularIdSetValue, const InFieldPortalType &baseTreeSuper2HypernodePortal, const InFieldPortalType &baseTreeWhichIterationPortal, vtkm::Id &augmentedTreeSuperarcsValue, const InOutFieldPortalType &augmentedTreeFirstSupernodePerIterationPortal, vtkm::Id &augmentedTreeSuper2hypernodeValue) const
 operator() of the workelt More...
 

Private Attributes

const vtkm::Id NumSupernodesAlready
 
const vtkm::Id BaseTreeNumRounds
 
const vtkm::Id AugmentedTreeNumIterations
 
const vtkm::Id RoundNumber
 
const vtkm::Id NumAugmentedTreeSupernodes
 

Detailed Description

Worklet used to implement the main part of HierarchicalAugmenter::CreateSuperarcs Connect superarcs for the level & set hyperparents & superchildren count, whichRound, whichIteration, super2hypernode.

Member Typedef Documentation

◆ ControlSignature

using vtkm::worklet::contourtree_distributed::hierarchical_augmenter::CreateSuperarcsWorklet::ControlSignature = void( WholeArrayIn supernodeSorter, WholeArrayIn superparentSet, WholeArrayIn baseTreeSuperarcs, WholeArrayIn newSupernodeIds, WholeArrayIn baseTreeSupernodes, WholeArrayIn baseTreeRegularNodeGlobalIds, FieldIn globalRegularIdSet, WholeArrayIn baseTreeSuper2Hypernode, WholeArrayIn baseTreeWhichIteration, FieldOut augmentedTreeSuperarcsView, WholeArrayInOut augmentedTreeFirstSupernodePerIteration, FieldOut augmentedTreeSuper2hypernode )

Control signature for the worklet.

Parameters
[in]supernodeSorterinput domain. We need access to InputIndex and InputIndex+1, therefore this is a WholeArrayIn transfer.
[in]superparentSetWholeArrayIn because we need access to superparentSet[supernodeSorter[InputIndex]] and superparentSet[supernodeSorter[InputIndex+1]].
[in]baseTreeSuperarcsWholeArrayIn because we need access to baseTreeSuperarcsPortal.Get(superparentOldSuperId) While this could be done with fancy array magic, it would require a sequence of multiple fancy arrays and would likely not be cheaper then computing things in the worklet.
[in]newSupernodeIdsWholeArrayIn because we need to access newSupernodeIdsPortal.Get(oldTargetSuperId) where oldTargetSuperId is the unmasked baseTreeSuperarcsPortal.Get(superparentOldSuperId)
[in]baseTreeSupernodesWholeArrayIn because we need to access baseTreeSupernodesPortal.Get(superparentOldSuperId);
[in]baseTreeRegularNodeGlobalIdsWholeArrayIn because we need to access baseTreeRegularNodeGlobalIdsPortal.Get(superparentOldSuperId);
[in]globalRegularIdSetFieldInd. Permute globalRegularIdSet with supernodeSorter in order to allow this to be a FieldIn.
[in]baseTreeSuper2HypernodeWholeArrayIn because we need to access baseTreeSuper2HypernodePortal.Get(superparentOldSuperId)
[in]baseTreeWhichIterationWholeArrayIn because we need to access baseTreeWhichIterationPortal.Get(superparentOldSuperId) and baseTreeWhichIterationPortal.Get(superparentOldSuperId+1)
[in]augmentedTreeSuperarcsViewoutput view of this->AugmentedTree->Superarcs with vtkm::cont::make_ArrayHandleView(this->AugmentedTree->Superarcs, numSupernodesAlready, this->SupernodeSorter.GetNumberOfValues()). By using this view allows us to do this one as a FieldOut and it effectively the same as accessing the array at the newSuppernodeId location.
[in]augmentedTreeFirstSupernodePerIterationWholeArrayInOut because we need to update multiple locations. In is used to preseve original values. Set to augmentedTree->firstSupernodePerIteration[roundNumber].
[in]augmentedTreeSuper2hypernodeFieldOut. Output view of this->AugmentedTree->Super2Hypernode vtkm::cont::make_ArrayHandleView(this->AugmentedTree->Super2Hypernode, numSupernodesAlready, this->SupernodeSorter.GetNumberOfValues()). By using this view allows us to do this one as a FieldOut and it effectively the same as accessing the array at the newSuppernodeId location.

◆ ExecutionSignature

◆ InputDomain

Constructor & Destructor Documentation

◆ CreateSuperarcsWorklet()

VTKM_EXEC_CONT vtkm::worklet::contourtree_distributed::hierarchical_augmenter::CreateSuperarcsWorklet::CreateSuperarcsWorklet ( const vtkm::Id numSupernodesAlready,
const vtkm::Id baseTreeNumRounds,
const vtkm::Id augmentedTreeNumIterations,
const vtkm::Id roundNumber,
const vtkm::Id numAugmentedTreeSupernodes 
)
inline

Default Constructor.

Parameters
[in]numSupernodesAlreadySet to vtkm::cont::ArrayGetValue(0, this->AugmentedTree->FirstSupernodePerIteration[roundNumber]);
[in]baseTreeNumRoundsSet to this->BaseTree->NumRounds
[in]augmentedTreeNumIterationsSet to vtkm::cont::ArrayGetValue(roundNumber, this->AugmentedTree->NumIterations);
[in]roundNumberSet the current round
[in]numAugmentedTreeSupernodesSet to augmentedTreeSupernodes this->AugmentedTree->Supernodes.GetNumberOfValues();

Member Function Documentation

◆ operator()()

template<typename InFieldPortalType , typename InOutFieldPortalType >
VTKM_EXEC void vtkm::worklet::contourtree_distributed::hierarchical_augmenter::CreateSuperarcsWorklet::operator() ( const vtkm::Id supernode,
const InFieldPortalType &  supernodeSorterPortal,
const InFieldPortalType &  superparentSetPortal,
const InFieldPortalType &  baseTreeSuperarcsPortal,
const InFieldPortalType &  newSupernodeIdsPortal,
const InFieldPortalType &  baseTreeSupernodesPortal,
const InFieldPortalType &  baseTreeRegularNodeGlobalIdsPortal,
const vtkm::Id globalRegularIdSetValue,
const InFieldPortalType &  baseTreeSuper2HypernodePortal,
const InFieldPortalType &  baseTreeWhichIterationPortal,
vtkm::Id augmentedTreeSuperarcsValue,
const InOutFieldPortalType &  augmentedTreeFirstSupernodePerIterationPortal,
vtkm::Id augmentedTreeSuper2hypernodeValue 
) const
inline

operator() of the workelt

Member Data Documentation

◆ AugmentedTreeNumIterations

const vtkm::Id vtkm::worklet::contourtree_distributed::hierarchical_augmenter::CreateSuperarcsWorklet::AugmentedTreeNumIterations
private

◆ BaseTreeNumRounds

const vtkm::Id vtkm::worklet::contourtree_distributed::hierarchical_augmenter::CreateSuperarcsWorklet::BaseTreeNumRounds
private

◆ NumAugmentedTreeSupernodes

const vtkm::Id vtkm::worklet::contourtree_distributed::hierarchical_augmenter::CreateSuperarcsWorklet::NumAugmentedTreeSupernodes
private

◆ NumSupernodesAlready

const vtkm::Id vtkm::worklet::contourtree_distributed::hierarchical_augmenter::CreateSuperarcsWorklet::NumSupernodesAlready
private

◆ RoundNumber

const vtkm::Id vtkm::worklet::contourtree_distributed::hierarchical_augmenter::CreateSuperarcsWorklet::RoundNumber
private

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