Replace implicit array handles to adapt to vtk-m changes.
This commit is contained in:
parent
336fd1f2e8
commit
f0213d065e
@ -65,7 +65,6 @@
|
||||
#include <vtkm/worklet/contourtree_distributed/InteriorForest.h>
|
||||
|
||||
#include <vtkm/worklet/contourtree_distributed/boundary_tree_maker/AddTerminalFlagsToUpDownNeighboursWorklet.h>
|
||||
#include <vtkm/worklet/contourtree_distributed/boundary_tree_maker/ArraySumFunctor.h>
|
||||
#include <vtkm/worklet/contourtree_distributed/boundary_tree_maker/AugmentBoundaryWithNecessaryInteriorSupernodesAppendNecessarySupernodesWorklet.h>
|
||||
#include <vtkm/worklet/contourtree_distributed/boundary_tree_maker/AugmentBoundaryWithNecessaryInteriorSupernodesUnsetBoundarySupernodesWorklet.h>
|
||||
#include <vtkm/worklet/contourtree_distributed/boundary_tree_maker/BRACTNodeComparator.h>
|
||||
@ -88,9 +87,9 @@
|
||||
#include <vtkm/worklet/contourtree_distributed/boundary_tree_maker/PropagateBoundaryCountsSubtractDependentCountsWorklet.h>
|
||||
#include <vtkm/worklet/contourtree_distributed/boundary_tree_maker/PropagateBoundaryCountsTransferCumulativeCountsWorklet.h>
|
||||
#include <vtkm/worklet/contourtree_distributed/boundary_tree_maker/PropagateBoundaryCountsTransferDependentCountsWorklet.h>
|
||||
#include <vtkm/worklet/contourtree_distributed/boundary_tree_maker/SelectRangeFunctor.h>
|
||||
#include <vtkm/worklet/contourtree_distributed/boundary_tree_maker/SetInteriorForestWorklet.h>
|
||||
#include <vtkm/worklet/contourtree_distributed/boundary_tree_maker/SetUpAndDownNeighboursWorklet.h>
|
||||
#include <vtkm/worklet/contourtree_distributed/boundary_tree_maker/SumFunctor.h>
|
||||
|
||||
|
||||
// vtkm includes
|
||||
@ -459,10 +458,11 @@ void BoundaryTreeMaker<MeshType, MeshBoundaryExecObjType>::PropagateBoundaryCoun
|
||||
// Compute the sum of this->SupernodeTransferBoundaryCount and this->SuperarcIntrinsicBoundaryCount
|
||||
// for the [firstSupernodex, lastSupernode) subrange and copy to the this->SuperarcDependentBoundaryCount
|
||||
{ // make local context so fancyTempSumArray gets deleted
|
||||
auto fancyTempSumArray = vtkm::cont::make_ArrayHandleImplicit(
|
||||
bract_maker::ArraySumFunctor(this->SupernodeTransferBoundaryCount,
|
||||
this->SuperarcIntrinsicBoundaryCount),
|
||||
this->SupernodeTransferBoundaryCount.GetNumberOfValues());
|
||||
auto fancyTempZippedArray = vtkm::cont::make_ArrayHandleZip(
|
||||
this->SupernodeTransferBoundaryCount, this->SuperarcIntrinsicBoundaryCount);
|
||||
auto fancyTempSumArray =
|
||||
vtkm::cont::make_ArrayHandleTransform(fancyTempZippedArray, bract_maker::SumFunctor{});
|
||||
|
||||
vtkm::cont::Algorithm::CopySubRange(
|
||||
fancyTempSumArray, // input array
|
||||
firstSupernode, // start index for the copy
|
||||
@ -477,9 +477,8 @@ void BoundaryTreeMaker<MeshType, MeshBoundaryExecObjType>::PropagateBoundaryCoun
|
||||
#endif
|
||||
// iii.Perform prefix sum on dependent count range
|
||||
{ // make local context so tempArray and fancyRangeArraySuperarcDependentBoundaryCountget deleted
|
||||
auto fancyRangeArraySuperarcDependentBoundaryCount = vtkm::cont::make_ArrayHandleImplicit(
|
||||
bract_maker::SelectRangeFunctor(this->SuperarcDependentBoundaryCount, firstSupernode),
|
||||
lastSupernode - firstSupernode);
|
||||
auto fancyRangeArraySuperarcDependentBoundaryCount = make_ArrayHandleView(
|
||||
this->SuperarcDependentBoundaryCount, firstSupernode, lastSupernode - firstSupernode);
|
||||
// Write to temporary array first as it is not clear whether ScanInclusive is safe to read and write
|
||||
// to the same array and range
|
||||
vtkm::worklet::contourtree_augmented::IdArrayType tempArray;
|
||||
|
@ -1,99 +0,0 @@
|
||||
//============================================================================
|
||||
// Copyright (c) Kitware, Inc.
|
||||
// All rights reserved.
|
||||
// See LICENSE.txt for details.
|
||||
//
|
||||
// This software is distributed WITHOUT ANY WARRANTY; without even
|
||||
// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
// PURPOSE. See the above copyright notice for more information.
|
||||
//============================================================================
|
||||
// Copyright (c) 2018, The Regents of the University of California, through
|
||||
// Lawrence Berkeley National Laboratory (subject to receipt of any required approvals
|
||||
// from the U.S. Dept. of Energy). All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
// are permitted provided that the following conditions are met:
|
||||
//
|
||||
// (1) Redistributions of source code must retain the above copyright notice, this
|
||||
// list of conditions and the following disclaimer.
|
||||
//
|
||||
// (2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
//
|
||||
// (3) Neither the name of the University of California, Lawrence Berkeley National
|
||||
// Laboratory, U.S. Dept. of Energy nor the names of its contributors may be
|
||||
// used to endorse or promote products derived from this software without
|
||||
// specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
// OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
//=============================================================================
|
||||
//
|
||||
// This code is an extension of the algorithm presented in the paper:
|
||||
// Parallel Peak Pruning for Scalable SMP Contour Tree Computation.
|
||||
// Hamish Carr, Gunther Weber, Christopher Sewell, and James Ahrens.
|
||||
// Proceedings of the IEEE Symposium on Large Data Analysis and Visualization
|
||||
// (LDAV), October 2016, Baltimore, Maryland.
|
||||
//
|
||||
// The PPP2 algorithm and software were jointly developed by
|
||||
// Hamish Carr (University of Leeds), Gunther H. Weber (LBNL), and
|
||||
// Oliver Ruebel (LBNL)
|
||||
//==============================================================================
|
||||
|
||||
#ifndef vtk_m_worklet_contourtree_distributed_bract_maker_select_range_functor_h
|
||||
#define vtk_m_worklet_contourtree_distributed_bract_maker_select_range_functor_h
|
||||
|
||||
#include <vtkm/worklet/WorkletMapField.h>
|
||||
#include <vtkm/worklet/contourtree_augmented/Types.h>
|
||||
|
||||
namespace vtkm
|
||||
{
|
||||
namespace worklet
|
||||
{
|
||||
namespace contourtree_distributed
|
||||
{
|
||||
namespace bract_maker
|
||||
{
|
||||
|
||||
//Simple functor to subset a VTKm ArrayHandle
|
||||
class SelectRangeFunctor
|
||||
{
|
||||
public:
|
||||
VTKM_EXEC_CONT
|
||||
SelectRangeFunctor() {}
|
||||
|
||||
VTKM_EXEC_CONT
|
||||
SelectRangeFunctor(const vtkm::worklet::contourtree_augmented::IdArrayType& dataArray,
|
||||
vtkm::Id startIndex)
|
||||
: DataArray(dataArray)
|
||||
, StartIndex(startIndex)
|
||||
{
|
||||
}
|
||||
|
||||
VTKM_EXEC_CONT
|
||||
vtkm::Id operator()(const vtkm::Id index) const
|
||||
{
|
||||
return this->DataArray.ReadPortal().Get(this->StartIndex + index);
|
||||
}
|
||||
|
||||
private:
|
||||
vtkm::worklet::contourtree_augmented::IdArrayType DataArray;
|
||||
vtkm::Id StartIndex;
|
||||
};
|
||||
|
||||
} // namespace bract_maker
|
||||
} // namespace contourtree_distributed
|
||||
} // namespace worklet
|
||||
} // namespace vtkm
|
||||
|
||||
#endif
|
@ -65,30 +65,18 @@ namespace contourtree_distributed
|
||||
namespace bract_maker
|
||||
{
|
||||
|
||||
//Simple functor to implement a fancy array handle that returns the sum of two arrays
|
||||
class ArraySumFunctor
|
||||
// Simple functor used to sum two zipped arrays
|
||||
class SumFunctor
|
||||
{
|
||||
public:
|
||||
VTKM_CONT
|
||||
ArraySumFunctor() {}
|
||||
|
||||
VTKM_CONT
|
||||
ArraySumFunctor(const vtkm::worklet::contourtree_augmented::IdArrayType& first,
|
||||
const vtkm::worklet::contourtree_augmented::IdArrayType& second)
|
||||
: First(first)
|
||||
, Second(second)
|
||||
{
|
||||
}
|
||||
SumFunctor() {}
|
||||
|
||||
VTKM_EXEC_CONT
|
||||
vtkm::Id operator()(const vtkm::Id index) const
|
||||
vtkm::Id operator()(const vtkm::Pair<vtkm::Id, vtkm::Id>& inp) const
|
||||
{
|
||||
return First.ReadPortal().Get(index) + Second.ReadPortal().Get(index);
|
||||
return inp.first + inp.second;
|
||||
}
|
||||
|
||||
private:
|
||||
vtkm::worklet::contourtree_augmented::IdArrayType First;
|
||||
vtkm::worklet::contourtree_augmented::IdArrayType Second;
|
||||
};
|
||||
|
||||
} // namespace bract_maker
|
Loading…
Reference in New Issue
Block a user