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);
vtkm::cont::ArrayHandle<ValueType> atomicArray;
vtkm::cont::Algorithm::Fill(
atomicArray, vtkm::TypeTraits<ValueType>::ZeroInitialization(), numValues);
atomicArray.AllocateAndFill(numValues, vtkm::TypeTraits<ValueType>::ZeroInitialization());
vtkm::cont::Invoker invoker{ 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);
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::Timer timer{ device };
@ -175,8 +174,7 @@ void BenchAddStride(benchmark::State& state)
auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites);
vtkm::cont::ArrayHandle<ValueType> atomicArray;
vtkm::cont::Algorithm::Fill(
atomicArray, vtkm::TypeTraits<ValueType>::ZeroInitialization(), numValues);
atomicArray.AllocateAndFill(numValues, vtkm::TypeTraits<ValueType>::ZeroInitialization());
vtkm::cont::Invoker invoker{ 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);
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::Timer timer{ device };
@ -289,8 +287,7 @@ void BenchCASSeq(benchmark::State& state)
auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites);
vtkm::cont::ArrayHandle<ValueType> atomicArray;
vtkm::cont::Algorithm::Fill(
atomicArray, vtkm::TypeTraits<ValueType>::ZeroInitialization(), numValues);
atomicArray.AllocateAndFill(numValues, vtkm::TypeTraits<ValueType>::ZeroInitialization());
vtkm::cont::Invoker invoker{ 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);
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::Timer timer{ device };
@ -406,8 +403,7 @@ void BenchCASStride(benchmark::State& state)
auto ones = vtkm::cont::make_ArrayHandleConstant<ValueType>(static_cast<ValueType>(1), numWrites);
vtkm::cont::ArrayHandle<ValueType> atomicArray;
vtkm::cont::Algorithm::Fill(
atomicArray, vtkm::TypeTraits<ValueType>::ZeroInitialization(), numValues);
atomicArray.AllocateAndFill(numValues, vtkm::TypeTraits<ValueType>::ZeroInitialization());
vtkm::cont::Invoker invoker{ 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);
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::Timer timer{ device };

@ -278,7 +278,7 @@ struct DecoratorTests
auto ah1 = vtkm::cont::make_ArrayHandleCounting(ValueType{ 0 }, ValueType{ 2 }, ARRAY_SIZE);
auto ah2 = vtkm::cont::make_ArrayHandleConstant(ValueType{ ARRAY_SIZE }, ARRAY_SIZE);
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);

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

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

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

@ -173,7 +173,7 @@ struct launchComputePass1
vtkm::cont::Invoker invoke(device);
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);
return true;
}

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

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

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

@ -44,7 +44,7 @@ vtkm::cont::DataSet GenerateDataSet()
const auto numCells = ds.GetNumberOfCells();
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));
return ds;