mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-19 10:35:42 +00:00
Fix bug in HierarchicalHyperSweeper call to TransferWeightsUpdateLHEWorklet
This commit is contained in:
parent
7c784c3651
commit
bfffff9b20
@ -328,7 +328,6 @@ void HierarchicalHyperSweeper<SweepValueType, ContourTreeFieldType>::InitializeI
|
||||
template <typename SweepValueType, typename ContourTreeFieldType>
|
||||
void HierarchicalHyperSweeper<SweepValueType, ContourTreeFieldType>::LocalHyperSweep()
|
||||
{ // LocalHyperSweep()
|
||||
// TODO: Implement this function
|
||||
#ifdef DEBUG_PRINT
|
||||
VTKM_LOG_S(vtkm::cont::LogLevel::Info,
|
||||
DebugPrint(std::string("Hypersweep Block ") + std::to_string(BlockId) +
|
||||
@ -628,6 +627,7 @@ void HierarchicalHyperSweeper<SweepValueType, ContourTreeFieldType>::TransferWei
|
||||
valuePrefixSumView, // input view of valuePrefixSum[firstSupernode, lastSupernode)
|
||||
this->DependentValues);
|
||||
}
|
||||
|
||||
{
|
||||
VTKM_ASSERT(firstSupernode + 1 + numSupernodesToProcess - 1 <=
|
||||
this->SortedTransferTarget.GetNumberOfValues());
|
||||
@ -636,13 +636,14 @@ void HierarchicalHyperSweeper<SweepValueType, ContourTreeFieldType>::TransferWei
|
||||
VTKM_ASSERT(firstSupernode + 1 + numSupernodesToProcess - 1 <=
|
||||
this->SortedTransferTarget.GetNumberOfValues());
|
||||
auto sortedTransferTargetShiftedView = vtkm::cont::make_ArrayHandleView(
|
||||
this->SortedTransferTarget, firstSupernode + 1, numSupernodesToProcess - 1);
|
||||
this->SortedTransferTarget, firstSupernode, numSupernodesToProcess - 1);
|
||||
auto valuePrefixSumPreviousValueView = vtkm::cont::make_ArrayHandleView(
|
||||
this->ValuePrefixSum, firstSupernode, numSupernodesToProcess - 1);
|
||||
|
||||
// 7b. Now find the LHE of each group and subtract out the prior weight
|
||||
this->Invoke(vtkm::worklet::contourtree_distributed::hierarchical_hyper_sweeper::
|
||||
TransferWeightsUpdateLHEWorklet{},
|
||||
vtkm::worklet::contourtree_distributed::hierarchical_hyper_sweeper::
|
||||
TransferWeightsUpdateLHEWorklet transferWeightsUpdateLHEWorklet;
|
||||
this->Invoke(transferWeightsUpdateLHEWorklet,
|
||||
sortedTransferTargetView,
|
||||
sortedTransferTargetShiftedView,
|
||||
valuePrefixSumPreviousValueView,
|
||||
|
18
vtkm/worklet/contourtree_distributed/hierarchical_hyper_sweeper/TransferWeightsUpdateLHEWorklet.h
18
vtkm/worklet/contourtree_distributed/hierarchical_hyper_sweeper/TransferWeightsUpdateLHEWorklet.h
@ -77,21 +77,23 @@ public:
|
||||
|
||||
template <typename InOutPortalType>
|
||||
VTKM_EXEC void operator()(const vtkm::Id& sortedTransferTargetValue,
|
||||
const vtkm::Id& sortedTransferTargetPreviusValue,
|
||||
const vtkm::Id& sortedTransferTargetPreviousValue,
|
||||
const vtkm::Id& valuePrefixSumPreviousValue,
|
||||
InOutPortalType& dependentValuesPortal) const
|
||||
{
|
||||
// per supernode
|
||||
// ignore any that point at NO_SUCH_ELEMENT
|
||||
if (!vtkm::worklet::contourtree_augmented::NoSuchElement(sortedTransferTargetValue))
|
||||
if (vtkm::worklet::contourtree_augmented::NoSuchElement(sortedTransferTargetValue))
|
||||
{
|
||||
if (sortedTransferTargetValue != sortedTransferTargetPreviusValue)
|
||||
{
|
||||
auto originalValue = dependentValuesPortal.Get(sortedTransferTargetValue);
|
||||
dependentValuesPortal.Set(sortedTransferTargetValue,
|
||||
originalValue - valuePrefixSumPreviousValue);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (sortedTransferTargetValue != sortedTransferTargetPreviousValue)
|
||||
{
|
||||
auto originalValue = dependentValuesPortal.Get(sortedTransferTargetValue);
|
||||
dependentValuesPortal.Set(sortedTransferTargetValue,
|
||||
originalValue - valuePrefixSumPreviousValue);
|
||||
}
|
||||
|
||||
|
||||
// In serial this worklet implements the following operation
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user