From 9da66ff320f300f77c799939f74b6c4a4aa9ece2 Mon Sep 17 00:00:00 2001 From: Kenneth Moreland Date: Mon, 3 Jan 2022 12:22:58 -0700 Subject: [PATCH] Prefer ArrayHandle::Fill over Algorithm::Fill --- benchmarking/BenchmarkAtomicArray.cxx | 20 ++++++++----------- .../testing/UnitTestArrayHandleDecorator.cxx | 2 +- vtkm/worklet/OrientCellNormals.h | 6 +++--- vtkm/worklet/OrientPointAndCellNormals.h | 4 ++-- vtkm/worklet/OrientPointNormals.h | 4 ++-- vtkm/worklet/contour/FlyingEdgesPass1.h | 2 +- .../meshtypes/ContourTreeMesh.h | 5 ++--- .../HierarchicalHyperSweeper.h | 14 +++++-------- .../worklet/testing/UnitTestOrientNormals.cxx | 4 ++-- .../testing/UnitTestTriangleWinding.cxx | 2 +- 10 files changed, 27 insertions(+), 36 deletions(-) diff --git a/benchmarking/BenchmarkAtomicArray.cxx b/benchmarking/BenchmarkAtomicArray.cxx index f2dd2cbd1..b41ae6710 100644 --- a/benchmarking/BenchmarkAtomicArray.cxx +++ b/benchmarking/BenchmarkAtomicArray.cxx @@ -64,8 +64,7 @@ void BenchAddSeq(benchmark::State& state) auto ones = vtkm::cont::make_ArrayHandleConstant(static_cast(1), numWrites); vtkm::cont::ArrayHandle atomicArray; - vtkm::cont::Algorithm::Fill( - atomicArray, vtkm::TypeTraits::ZeroInitialization(), numValues); + atomicArray.AllocateAndFill(numValues, vtkm::TypeTraits::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(static_cast(1), numWrites); vtkm::cont::ArrayHandle array; - vtkm::cont::Algorithm::Fill(array, vtkm::TypeTraits::ZeroInitialization(), numValues); + array.AllocateAndFill(numValues, vtkm::TypeTraits::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(static_cast(1), numWrites); vtkm::cont::ArrayHandle atomicArray; - vtkm::cont::Algorithm::Fill( - atomicArray, vtkm::TypeTraits::ZeroInitialization(), numValues); + atomicArray.AllocateAndFill(numValues, vtkm::TypeTraits::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(static_cast(1), numWrites); vtkm::cont::ArrayHandle array; - vtkm::cont::Algorithm::Fill(array, vtkm::TypeTraits::ZeroInitialization(), numValues); + array.AllocateAndFill(numValues, vtkm::TypeTraits::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(static_cast(1), numWrites); vtkm::cont::ArrayHandle atomicArray; - vtkm::cont::Algorithm::Fill( - atomicArray, vtkm::TypeTraits::ZeroInitialization(), numValues); + atomicArray.AllocateAndFill(numValues, vtkm::TypeTraits::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(static_cast(1), numWrites); vtkm::cont::ArrayHandle array; - vtkm::cont::Algorithm::Fill(array, vtkm::TypeTraits::ZeroInitialization(), numValues); + array.AllocateAndFill(numValues, vtkm::TypeTraits::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(static_cast(1), numWrites); vtkm::cont::ArrayHandle atomicArray; - vtkm::cont::Algorithm::Fill( - atomicArray, vtkm::TypeTraits::ZeroInitialization(), numValues); + atomicArray.AllocateAndFill(numValues, vtkm::TypeTraits::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(static_cast(1), numWrites); vtkm::cont::ArrayHandle array; - vtkm::cont::Algorithm::Fill(array, vtkm::TypeTraits::ZeroInitialization(), numValues); + array.AllocateAndFill(numValues, vtkm::TypeTraits::ZeroInitialization()); vtkm::cont::Invoker invoker{ device }; vtkm::cont::Timer timer{ device }; diff --git a/vtkm/cont/testing/UnitTestArrayHandleDecorator.cxx b/vtkm/cont/testing/UnitTestArrayHandleDecorator.cxx index 68c200db9..e619a1546 100644 --- a/vtkm/cont/testing/UnitTestArrayHandleDecorator.cxx +++ b/vtkm/cont/testing/UnitTestArrayHandleDecorator.cxx @@ -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 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); diff --git a/vtkm/worklet/OrientCellNormals.h b/vtkm/worklet/OrientCellNormals.h index 1822f5f65..eb1702392 100644 --- a/vtkm/worklet/OrientCellNormals.h +++ b/vtkm/worklet/OrientCellNormals.h @@ -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; diff --git a/vtkm/worklet/OrientPointAndCellNormals.h b/vtkm/worklet/OrientPointAndCellNormals.h index c73fc153d..b35ea1288 100644 --- a/vtkm/worklet/OrientPointAndCellNormals.h +++ b/vtkm/worklet/OrientPointAndCellNormals.h @@ -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 mask; // Allocated as needed diff --git a/vtkm/worklet/OrientPointNormals.h b/vtkm/worklet/OrientPointNormals.h index 5efef6039..3ad5baf4a 100644 --- a/vtkm/worklet/OrientPointNormals.h +++ b/vtkm/worklet/OrientPointNormals.h @@ -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 mask; // Allocated as needed diff --git a/vtkm/worklet/contour/FlyingEdgesPass1.h b/vtkm/worklet/contour/FlyingEdgesPass1.h index 802671753..dd1c63a64 100644 --- a/vtkm/worklet/contour/FlyingEdgesPass1.h +++ b/vtkm/worklet/contour/FlyingEdgesPass1.h @@ -173,7 +173,7 @@ struct launchComputePass1 vtkm::cont::Invoker invoke(device); metaDataMesh2D = make_metaDataMesh2D(SumYAxis{}, worklet.PointDims); - vtkm::cont::Algorithm::Fill(edgeCases, static_cast(FlyingEdges3D::Below)); + edgeCases.Fill(static_cast(FlyingEdges3D::Below)); invoke(worklet, metaDataMesh2D, std::forward(args)..., edgeCases, inputField); return true; } diff --git a/vtkm/worklet/contourtree_augmented/meshtypes/ContourTreeMesh.h b/vtkm/worklet/contourtree_augmented/meshtypes/ContourTreeMesh.h index 75776f992..9cd1e1d7c 100644 --- a/vtkm/worklet/contourtree_augmented/meshtypes/ContourTreeMesh.h +++ b/vtkm/worklet/contourtree_augmented/meshtypes/ContourTreeMesh.h @@ -738,9 +738,8 @@ inline void ContourTreeMesh::MergeWith(ContourTreeMesh& ot vtkm::cont::ArrayHandle thisToCombinedSortOrderIsDuplicate; thisToCombinedSortOrderIsDuplicate.Allocate(thisToCombinedSortOrder.GetNumberOfValues()); vtkm::cont::ArrayHandle 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, diff --git a/vtkm/worklet/contourtree_distributed/HierarchicalHyperSweeper.h b/vtkm/worklet/contourtree_distributed/HierarchicalHyperSweeper.h index 2298e1694..02cd2929f 100644 --- a/vtkm/worklet/contourtree_distributed/HierarchicalHyperSweeper.h +++ b/vtkm/worklet/contourtree_distributed/HierarchicalHyperSweeper.h @@ -215,13 +215,10 @@ HierarchicalHyperSweeper::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::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:: diff --git a/vtkm/worklet/testing/UnitTestOrientNormals.cxx b/vtkm/worklet/testing/UnitTestOrientNormals.cxx index c36a3838f..fc9d9f8ea 100644 --- a/vtkm/worklet/testing/UnitTestOrientNormals.cxx +++ b/vtkm/worklet/testing/UnitTestOrientNormals.cxx @@ -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) diff --git a/vtkm/worklet/testing/UnitTestTriangleWinding.cxx b/vtkm/worklet/testing/UnitTestTriangleWinding.cxx index bfd9c347b..8af93e766 100644 --- a/vtkm/worklet/testing/UnitTestTriangleWinding.cxx +++ b/vtkm/worklet/testing/UnitTestTriangleWinding.cxx @@ -44,7 +44,7 @@ vtkm::cont::DataSet GenerateDataSet() const auto numCells = ds.GetNumberOfCells(); vtkm::cont::ArrayHandle 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;