Prefer ArrayHandle::Fill over Algorithm::Fill

This commit is contained in:
Kenneth Moreland 2022-01-03 12:22:58 -07:00
parent f79cf1d5f7
commit 9da66ff320
10 changed files with 27 additions and 36 deletions

@ -64,8 +64,7 @@ void BenchAddSeq(benchmark::State& state)
auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites); auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites);
vtkm::cont::ArrayHandle<ValueType> atomicArray; vtkm::cont::ArrayHandle<ValueType> atomicArray;
vtkm::cont::Algorithm::Fill( atomicArray.AllocateAndFill(numValues, vtkm::TypeTraits<ValueType>::ZeroInitialization());
atomicArray, vtkm::TypeTraits<ValueType>::ZeroInitialization(), numValues);
vtkm::cont::Invoker invoker{ device }; vtkm::cont::Invoker invoker{ device };
vtkm::cont::Timer timer{ device }; vtkm::cont::Timer timer{ device };
@ -115,7 +114,7 @@ void BenchAddSeqBaseline(benchmark::State& state)
auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites); auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites);
vtkm::cont::ArrayHandle<ValueType> array; vtkm::cont::ArrayHandle<ValueType> array;
vtkm::cont::Algorithm::Fill(array, vtkm::TypeTraits<ValueType>::ZeroInitialization(), numValues); array.AllocateAndFill(numValues, vtkm::TypeTraits<ValueType>::ZeroInitialization());
vtkm::cont::Invoker invoker{ device }; vtkm::cont::Invoker invoker{ device };
vtkm::cont::Timer timer{ device }; vtkm::cont::Timer timer{ device };
@ -175,8 +174,7 @@ void BenchAddStride(benchmark::State& state)
auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites); auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites);
vtkm::cont::ArrayHandle<ValueType> atomicArray; vtkm::cont::ArrayHandle<ValueType> atomicArray;
vtkm::cont::Algorithm::Fill( atomicArray.AllocateAndFill(numValues, vtkm::TypeTraits<ValueType>::ZeroInitialization());
atomicArray, vtkm::TypeTraits<ValueType>::ZeroInitialization(), numValues);
vtkm::cont::Invoker invoker{ device }; vtkm::cont::Invoker invoker{ device };
vtkm::cont::Timer timer{ device }; vtkm::cont::Timer timer{ device };
@ -235,7 +233,7 @@ void BenchAddStrideBaseline(benchmark::State& state)
auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites); auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites);
vtkm::cont::ArrayHandle<ValueType> array; vtkm::cont::ArrayHandle<ValueType> array;
vtkm::cont::Algorithm::Fill(array, vtkm::TypeTraits<ValueType>::ZeroInitialization(), numValues); array.AllocateAndFill(numValues, vtkm::TypeTraits<ValueType>::ZeroInitialization());
vtkm::cont::Invoker invoker{ device }; vtkm::cont::Invoker invoker{ device };
vtkm::cont::Timer timer{ device }; vtkm::cont::Timer timer{ device };
@ -289,8 +287,7 @@ void BenchCASSeq(benchmark::State& state)
auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites); auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites);
vtkm::cont::ArrayHandle<ValueType> atomicArray; vtkm::cont::ArrayHandle<ValueType> atomicArray;
vtkm::cont::Algorithm::Fill( atomicArray.AllocateAndFill(numValues, vtkm::TypeTraits<ValueType>::ZeroInitialization());
atomicArray, vtkm::TypeTraits<ValueType>::ZeroInitialization(), numValues);
vtkm::cont::Invoker invoker{ device }; vtkm::cont::Invoker invoker{ device };
vtkm::cont::Timer timer{ device }; vtkm::cont::Timer timer{ device };
@ -342,7 +339,7 @@ void BenchCASSeqBaseline(benchmark::State& state)
auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites); auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites);
vtkm::cont::ArrayHandle<ValueType> array; vtkm::cont::ArrayHandle<ValueType> array;
vtkm::cont::Algorithm::Fill(array, vtkm::TypeTraits<ValueType>::ZeroInitialization(), numValues); array.AllocateAndFill(numValues, vtkm::TypeTraits<ValueType>::ZeroInitialization());
vtkm::cont::Invoker invoker{ device }; vtkm::cont::Invoker invoker{ device };
vtkm::cont::Timer timer{ device }; vtkm::cont::Timer timer{ device };
@ -406,8 +403,7 @@ void BenchCASStride(benchmark::State& state)
auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites); auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites);
vtkm::cont::ArrayHandle<ValueType> atomicArray; vtkm::cont::ArrayHandle<ValueType> atomicArray;
vtkm::cont::Algorithm::Fill( atomicArray.AllocateAndFill(numValues, vtkm::TypeTraits<ValueType>::ZeroInitialization());
atomicArray, vtkm::TypeTraits<ValueType>::ZeroInitialization(), numValues);
vtkm::cont::Invoker invoker{ device }; vtkm::cont::Invoker invoker{ device };
vtkm::cont::Timer timer{ device }; vtkm::cont::Timer timer{ device };
@ -468,7 +464,7 @@ void BenchCASStrideBaseline(benchmark::State& state)
auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites); auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites);
vtkm::cont::ArrayHandle<ValueType> array; vtkm::cont::ArrayHandle<ValueType> array;
vtkm::cont::Algorithm::Fill(array, vtkm::TypeTraits<ValueType>::ZeroInitialization(), numValues); array.AllocateAndFill(numValues, vtkm::TypeTraits<ValueType>::ZeroInitialization());
vtkm::cont::Invoker invoker{ device }; vtkm::cont::Invoker invoker{ device };
vtkm::cont::Timer timer{ device }; vtkm::cont::Timer timer{ device };

@ -278,7 +278,7 @@ struct DecoratorTests
auto ah1 = vtkm::cont::make_ArrayHandleCounting(ValueType{ 0 }, ValueType{ 2 }, ARRAY_SIZE); auto ah1 = vtkm::cont::make_ArrayHandleCounting(ValueType{ 0 }, ValueType{ 2 }, ARRAY_SIZE);
auto ah2 = vtkm::cont::make_ArrayHandleConstant(ValueType{ ARRAY_SIZE }, ARRAY_SIZE); auto ah2 = vtkm::cont::make_ArrayHandleConstant(ValueType{ ARRAY_SIZE }, ARRAY_SIZE);
vtkm::cont::ArrayHandle<ValueType> ah3; vtkm::cont::ArrayHandle<ValueType> ah3;
vtkm::cont::Algorithm::Fill(ah3, ValueType{ ARRAY_SIZE / 2 }, ARRAY_SIZE); ah3.AllocateAndFill(ARRAY_SIZE, ValueType{ ARRAY_SIZE / 2 });
auto ah3Const = vtkm::cont::make_ArrayHandleConstant(ValueType{ ARRAY_SIZE / 2 }, ARRAY_SIZE); auto ah3Const = vtkm::cont::make_ArrayHandleConstant(ValueType{ ARRAY_SIZE / 2 }, ARRAY_SIZE);

@ -348,16 +348,16 @@ public:
auto activePoints = vtkm::cont::make_ArrayHandleBitField(activePointBits); auto activePoints = vtkm::cont::make_ArrayHandleBitField(activePointBits);
vtkm::cont::BitField activeCellBits; vtkm::cont::BitField activeCellBits;
vtkm::cont::Algorithm::Fill(activeCellBits, false, numCells); activeCellBits.AllocateAndFill(numCells, false);
auto activeCells = vtkm::cont::make_ArrayHandleBitField(activeCellBits); auto activeCells = vtkm::cont::make_ArrayHandleBitField(activeCellBits);
// visited = cells / points that have been corrected. // visited = cells / points that have been corrected.
vtkm::cont::BitField visitedPointBits; vtkm::cont::BitField visitedPointBits;
vtkm::cont::Algorithm::Fill(visitedPointBits, false, numPoints); visitedPointBits.AllocateAndFill(numPoints, false);
auto visitedPoints = vtkm::cont::make_ArrayHandleBitField(visitedPointBits); auto visitedPoints = vtkm::cont::make_ArrayHandleBitField(visitedPointBits);
vtkm::cont::BitField visitedCellBits; vtkm::cont::BitField visitedCellBits;
vtkm::cont::Algorithm::Fill(visitedCellBits, false, numCells); visitedCellBits.AllocateAndFill(numCells, false);
auto visitedCells = vtkm::cont::make_ArrayHandleBitField(visitedCellBits); auto visitedCells = vtkm::cont::make_ArrayHandleBitField(visitedCellBits);
vtkm::cont::Invoker invoke; vtkm::cont::Invoker invoke;

@ -330,7 +330,7 @@ public:
auto activePoints = vtkm::cont::make_ArrayHandleBitField(activePointBits); auto activePoints = vtkm::cont::make_ArrayHandleBitField(activePointBits);
vtkm::cont::BitField activeCellBits; vtkm::cont::BitField activeCellBits;
vtkm::cont::Algorithm::Fill(activeCellBits, false, numCells); activeCellBits.AllocateAndFill(numCells, false);
auto activeCells = vtkm::cont::make_ArrayHandleBitField(activeCellBits); auto activeCells = vtkm::cont::make_ArrayHandleBitField(activeCellBits);
// visited = cells / points that have been corrected. // visited = cells / points that have been corrected.
@ -338,7 +338,7 @@ public:
auto visitedPoints = vtkm::cont::make_ArrayHandleBitField(visitedPointBits); auto visitedPoints = vtkm::cont::make_ArrayHandleBitField(visitedPointBits);
vtkm::cont::BitField visitedCellBits; vtkm::cont::BitField visitedCellBits;
vtkm::cont::Algorithm::Fill(visitedCellBits, false, numCells); visitedCellBits.AllocateAndFill(numCells, false);
auto visitedCells = vtkm::cont::make_ArrayHandleBitField(visitedCellBits); auto visitedCells = vtkm::cont::make_ArrayHandleBitField(visitedCellBits);
vtkm::cont::ArrayHandle<vtkm::Id> mask; // Allocated as needed vtkm::cont::ArrayHandle<vtkm::Id> mask; // Allocated as needed

@ -291,7 +291,7 @@ public:
auto activePoints = vtkm::cont::make_ArrayHandleBitField(activePointBits); auto activePoints = vtkm::cont::make_ArrayHandleBitField(activePointBits);
vtkm::cont::BitField activeCellBits; vtkm::cont::BitField activeCellBits;
vtkm::cont::Algorithm::Fill(activeCellBits, false, numCells); activeCellBits.AllocateAndFill(numCells, false);
auto activeCells = vtkm::cont::make_ArrayHandleBitField(activeCellBits); auto activeCells = vtkm::cont::make_ArrayHandleBitField(activeCellBits);
// visited = cells / points that have been corrected. // visited = cells / points that have been corrected.
@ -299,7 +299,7 @@ public:
auto visitedPoints = vtkm::cont::make_ArrayHandleBitField(visitedPointBits); auto visitedPoints = vtkm::cont::make_ArrayHandleBitField(visitedPointBits);
vtkm::cont::BitField visitedCellBits; vtkm::cont::BitField visitedCellBits;
vtkm::cont::Algorithm::Fill(visitedCellBits, false, numCells); visitedCellBits.AllocateAndFill(numCells, false);
auto visitedCells = vtkm::cont::make_ArrayHandleBitField(visitedCellBits); auto visitedCells = vtkm::cont::make_ArrayHandleBitField(visitedCellBits);
vtkm::cont::ArrayHandle<vtkm::Id> mask; // Allocated as needed vtkm::cont::ArrayHandle<vtkm::Id> mask; // Allocated as needed

@ -173,7 +173,7 @@ struct launchComputePass1
vtkm::cont::Invoker invoke(device); vtkm::cont::Invoker invoke(device);
metaDataMesh2D = make_metaDataMesh2D(SumYAxis{}, worklet.PointDims); metaDataMesh2D = make_metaDataMesh2D(SumYAxis{}, worklet.PointDims);
vtkm::cont::Algorithm::Fill(edgeCases, static_cast<vtkm::UInt8>(FlyingEdges3D::Below)); edgeCases.Fill(static_cast<vtkm::UInt8>(FlyingEdges3D::Below));
invoke(worklet, metaDataMesh2D, std::forward<Args>(args)..., edgeCases, inputField); invoke(worklet, metaDataMesh2D, std::forward<Args>(args)..., edgeCases, inputField);
return true; return true;
} }

@ -738,9 +738,8 @@ inline void ContourTreeMesh<FieldType>::MergeWith(ContourTreeMesh<FieldType>& ot
vtkm::cont::ArrayHandle<vtkm::IdComponent> thisToCombinedSortOrderIsDuplicate; vtkm::cont::ArrayHandle<vtkm::IdComponent> thisToCombinedSortOrderIsDuplicate;
thisToCombinedSortOrderIsDuplicate.Allocate(thisToCombinedSortOrder.GetNumberOfValues()); thisToCombinedSortOrderIsDuplicate.Allocate(thisToCombinedSortOrder.GetNumberOfValues());
vtkm::cont::ArrayHandle<vtkm::IdComponent> otherToCombinedSortOrderIsDuplicate; vtkm::cont::ArrayHandle<vtkm::IdComponent> otherToCombinedSortOrderIsDuplicate;
vtkm::cont::Algorithm::Fill(otherToCombinedSortOrderIsDuplicate, otherToCombinedSortOrderIsDuplicate.AllocateAndFill(otherToCombinedSortOrder.GetNumberOfValues(),
vtkm::IdComponent{ 0 }, vtkm::IdComponent{ 0 });
otherToCombinedSortOrder.GetNumberOfValues());
this->Invoke(contourtree_mesh_inc_ns::FindDuplicateInOtherWorklet{}, this->Invoke(contourtree_mesh_inc_ns::FindDuplicateInOtherWorklet{},
thisToCombinedSortOrder, thisToCombinedSortOrder,
otherToCombinedSortOrder, otherToCombinedSortOrder,

@ -215,13 +215,10 @@ HierarchicalHyperSweeper<SweepValueType, ContourTreeFieldType>::HierarchicalHype
, NumOwnedRegularVertices(vtkm::Id{ 0 }) , NumOwnedRegularVertices(vtkm::Id{ 0 })
{ // constructor { // constructor
// Initalize arrays with 0s // Initalize arrays with 0s
vtkm::cont::Algorithm::Fill( this->ValuePrefixSum.AllocateAndFill(this->HierarchicalTree.Supernodes.GetNumberOfValues(), 0);
this->ValuePrefixSum, vtkm::Id{ 0 }, this->HierarchicalTree.Supernodes.GetNumberOfValues()); this->TransferTarget.AllocateAndFill(this->HierarchicalTree.Supernodes.GetNumberOfValues(), 0);
vtkm::cont::Algorithm::Fill( this->SortedTransferTarget.AllocateAndFill(this->HierarchicalTree.Supernodes.GetNumberOfValues(),
this->TransferTarget, vtkm::Id{ 0 }, this->HierarchicalTree.Supernodes.GetNumberOfValues()); 0);
vtkm::cont::Algorithm::Fill(this->SortedTransferTarget,
vtkm::Id{ 0 },
this->HierarchicalTree.Supernodes.GetNumberOfValues());
// Initialize the supersortPermute to the identity // Initialize the supersortPermute to the identity
vtkm::cont::ArrayHandleIndex tempIndexArray( vtkm::cont::ArrayHandleIndex tempIndexArray(
this->HierarchicalTree.Supernodes.GetNumberOfValues()); this->HierarchicalTree.Supernodes.GetNumberOfValues());
@ -295,8 +292,7 @@ void HierarchicalHyperSweeper<SweepValueType, ContourTreeFieldType>::InitializeI
#endif #endif
// initialize the counts to zero. // initialize the counts to zero.
vtkm::cont::Algorithm::Fill( superarcRegularCounts.AllocateAndFill(this->HierarchicalTree.Supernodes.GetNumberOfValues(), 0);
superarcRegularCounts, vtkm::Id{ 0 }, this->HierarchicalTree.Supernodes.GetNumberOfValues());
// set the count to the Id one off the high end of each range // set the count to the Id one off the high end of each range
Invoke(vtkm::worklet::contourtree_distributed::hierarchical_hyper_sweeper:: Invoke(vtkm::worklet::contourtree_distributed::hierarchical_hyper_sweeper::

@ -222,8 +222,8 @@ private:
void Prepare() void Prepare()
{ {
vtkm::cont::Algorithm::Fill(this->VisitedPointsField, false, this->Coords.GetNumberOfPoints()); this->VisitedPointsField.AllocateAndFill(this->Coords.GetNumberOfPoints(), false);
vtkm::cont::Algorithm::Fill(this->VisitedCellsField, false, this->Cells.GetNumberOfCells()); this->VisitedCellsField.AllocateAndFill(this->Cells.GetNumberOfCells(), false);
} }
void ValidateImpl(vtkm::Id startPtIdx, const NormalType& startRefNormal) void ValidateImpl(vtkm::Id startPtIdx, const NormalType& startRefNormal)

@ -44,7 +44,7 @@ vtkm::cont::DataSet GenerateDataSet()
const auto numCells = ds.GetNumberOfCells(); const auto numCells = ds.GetNumberOfCells();
vtkm::cont::ArrayHandle<MyNormalT> cellNormals; vtkm::cont::ArrayHandle<MyNormalT> cellNormals;
vtkm::cont::Algorithm::Fill(cellNormals, MyNormalT{ 1., 0., 0. }, numCells); cellNormals.AllocateAndFill(numCells, MyNormalT{ 1., 0., 0. });
ds.AddField(vtkm::cont::make_FieldCell("normals", cellNormals)); ds.AddField(vtkm::cont::make_FieldCell("normals", cellNormals));
return ds; return ds;