From f63be1abe6183400c7ab6e315a9791183bd79da6 Mon Sep 17 00:00:00 2001 From: Robert Maynard Date: Thu, 29 Nov 2018 13:37:50 -0500 Subject: [PATCH] Update vtkm/filter to work with ArrayHandleVariant --- vtkm/filter/ClipWithField.hxx | 26 ---------------- vtkm/filter/ClipWithImplicitFunction.hxx | 26 ---------------- vtkm/filter/CrossProduct.hxx | 2 +- vtkm/filter/DotProduct.hxx | 2 +- vtkm/filter/ExtractGeometry.hxx | 2 +- vtkm/filter/FieldMetadata.h | 13 +++----- vtkm/filter/Histogram.hxx | 8 ++--- vtkm/filter/MarchingCubes.hxx | 1 - vtkm/filter/PolicyBase.h | 31 ++++++------------- vtkm/filter/internal/CreateResult.h | 4 +-- .../testing/UnitTestCellMeasuresFilter.cxx | 3 +- .../testing/UnitTestClipWithFieldFilter.cxx | 3 +- ...UnitTestClipWithImplicitFunctionFilter.cxx | 5 ++- .../testing/UnitTestMarchingCubesFilter.cxx | 28 +++-------------- .../testing/UnitTestMultiBlockFilters.cxx | 1 - .../testing/UnitTestWarpScalarFilter.cxx | 17 ++-------- .../worklet/testing/UnitTestMarchingCubes.cxx | 10 +++--- 17 files changed, 38 insertions(+), 144 deletions(-) diff --git a/vtkm/filter/ClipWithField.hxx b/vtkm/filter/ClipWithField.hxx index a95f934ed..757779f08 100644 --- a/vtkm/filter/ClipWithField.hxx +++ b/vtkm/filter/ClipWithField.hxx @@ -21,7 +21,6 @@ #include #include #include -#include #include #include #include @@ -31,29 +30,6 @@ namespace vtkm namespace filter { -namespace clipwithfield -{ - -struct PointMapHelper -{ - PointMapHelper(const vtkm::worklet::Clip& worklet, vtkm::cont::DynamicArrayHandle& output) - : Worklet(worklet) - , Output(output) - { - } - - template - void operator()(const ArrayType& array) const - { - this->Output = this->Worklet.ProcessPointField(array); - } - - const vtkm::worklet::Clip& Worklet; - vtkm::cont::DynamicArrayHandle& Output; -}; - -} // end namespace clipwithfield - //----------------------------------------------------------------------------- inline VTKM_CONT ClipWithField::ClipWithField() : vtkm::filter::FilterDataSetWithField() @@ -71,8 +47,6 @@ inline VTKM_CONT vtkm::cont::DataSet ClipWithField::DoExecute( const vtkm::filter::FieldMetadata& fieldMeta, vtkm::filter::PolicyBase policy) { - using namespace clipwithfield; - if (fieldMeta.IsPointField() == false) { throw vtkm::cont::ErrorFilterExecution("Point field expected."); diff --git a/vtkm/filter/ClipWithImplicitFunction.hxx b/vtkm/filter/ClipWithImplicitFunction.hxx index 1cddf125a..62d490750 100644 --- a/vtkm/filter/ClipWithImplicitFunction.hxx +++ b/vtkm/filter/ClipWithImplicitFunction.hxx @@ -28,30 +28,6 @@ namespace vtkm { namespace filter { - -namespace clipwithimplicitfunction -{ - -struct PointMapHelper -{ - PointMapHelper(const vtkm::worklet::Clip& worklet, vtkm::cont::DynamicArrayHandle& output) - : Worklet(worklet) - , Output(output) - { - } - - template - void operator()(const ArrayType& array) const - { - this->Output = this->Worklet.ProcessPointField(array); - } - - const vtkm::worklet::Clip& Worklet; - vtkm::cont::DynamicArrayHandle& Output; -}; - -} // end namespace clipwithimplicitfunction - //----------------------------------------------------------------------------- ClipWithImplicitFunction::ClipWithImplicitFunction() @@ -64,8 +40,6 @@ inline vtkm::cont::DataSet ClipWithImplicitFunction::DoExecute( const vtkm::cont::DataSet& input, const vtkm::filter::PolicyBase& policy) { - using namespace clipwithimplicitfunction; - //get the cells and coordinates of the dataset const vtkm::cont::DynamicCellSet& cells = input.GetCellSet(this->GetActiveCellSetIndex()); diff --git a/vtkm/filter/CrossProduct.hxx b/vtkm/filter/CrossProduct.hxx index 8094cb0b4..bb0f6661e 100644 --- a/vtkm/filter/CrossProduct.hxx +++ b/vtkm/filter/CrossProduct.hxx @@ -82,7 +82,7 @@ inline VTKM_CONT vtkm::cont::DataSet CrossProduct::DoExecute( inDataSet.GetField(this->SecondaryFieldName, this->SecondaryFieldAssociation), policy, Traits()) - .ResetTypeList(TypeList()) + .ResetTypes(TypeList()) .CastAndCall(functor, field); } } diff --git a/vtkm/filter/DotProduct.hxx b/vtkm/filter/DotProduct.hxx index f71eebffb..7d8e162ad 100644 --- a/vtkm/filter/DotProduct.hxx +++ b/vtkm/filter/DotProduct.hxx @@ -83,7 +83,7 @@ inline VTKM_CONT vtkm::cont::DataSet DotProduct::DoExecute( inDataSet.GetField(this->SecondaryFieldName, this->SecondaryFieldAssociation), policy, Traits()) - .ResetTypeList(TypeList()) + .ResetTypes(TypeList()) .CastAndCall(functor, field); } } diff --git a/vtkm/filter/ExtractGeometry.hxx b/vtkm/filter/ExtractGeometry.hxx index 0710ea19a..f2b617c5c 100644 --- a/vtkm/filter/ExtractGeometry.hxx +++ b/vtkm/filter/ExtractGeometry.hxx @@ -119,7 +119,7 @@ inline VTKM_CONT bool ExtractGeometry::DoMapField( const vtkm::filter::FieldMetadata& fieldMeta, const vtkm::filter::PolicyBase&) { - vtkm::cont::DynamicArrayHandle output; + vtkm::cont::ArrayHandleVariant output; if (fieldMeta.IsPointField()) { diff --git a/vtkm/filter/FieldMetadata.h b/vtkm/filter/FieldMetadata.h index 29e55b990..f5a31a86f 100644 --- a/vtkm/filter/FieldMetadata.h +++ b/vtkm/filter/FieldMetadata.h @@ -74,29 +74,26 @@ public: template VTKM_CONT vtkm::cont::Field AsField(const vtkm::cont::ArrayHandle& handle) const { - //Field only handles arrayHandles with default storage tag, so use - //dynamic array handles - vtkm::cont::DynamicArrayHandle dhandle(handle); if (this->IsCellField()) { - return vtkm::cont::Field(this->Name, this->Association, this->CellSetName, dhandle); + return vtkm::cont::Field(this->Name, this->Association, this->CellSetName, handle); } else { - return vtkm::cont::Field(this->Name, this->Association, dhandle); + return vtkm::cont::Field(this->Name, this->Association, handle); } } VTKM_CONT - vtkm::cont::Field AsField(const vtkm::cont::DynamicArrayHandle& dhandle) const + vtkm::cont::Field AsField(const vtkm::cont::ArrayHandleVariant& handle) const { if (this->IsCellField()) { - return vtkm::cont::Field(this->Name, this->Association, this->CellSetName, dhandle); + return vtkm::cont::Field(this->Name, this->Association, this->CellSetName, handle); } else { - return vtkm::cont::Field(this->Name, this->Association, dhandle); + return vtkm::cont::Field(this->Name, this->Association, handle); } } diff --git a/vtkm/filter/Histogram.hxx b/vtkm/filter/Histogram.hxx index f8b7179bd..89fce88c2 100644 --- a/vtkm/filter/Histogram.hxx +++ b/vtkm/filter/Histogram.hxx @@ -231,18 +231,14 @@ inline VTKM_CONT void Histogram::PreExecute(const vtkm::cont::MultiBlock& input, const vtkm::filter::PolicyBase&) { using TypeList = typename DerivedPolicy::FieldTypeList; - using StorageList = typename DerivedPolicy::FieldStorageList; if (this->Range.IsNonEmpty()) { this->ComputedRange = this->Range; } else { - auto handle = vtkm::cont::FieldRangeGlobalCompute(input, - this->GetActiveFieldName(), - this->GetActiveFieldAssociation(), - TypeList(), - StorageList()); + auto handle = vtkm::cont::FieldRangeGlobalCompute( + input, this->GetActiveFieldName(), this->GetActiveFieldAssociation(), TypeList()); if (handle.GetNumberOfValues() != 1) { throw vtkm::cont::ErrorFilterExecution("expecting scalar field."); diff --git a/vtkm/filter/MarchingCubes.hxx b/vtkm/filter/MarchingCubes.hxx index 853804e06..9f7da4901 100644 --- a/vtkm/filter/MarchingCubes.hxx +++ b/vtkm/filter/MarchingCubes.hxx @@ -21,7 +21,6 @@ #include #include #include -#include #include #include diff --git a/vtkm/filter/PolicyBase.h b/vtkm/filter/PolicyBase.h index bbc4db5ec..b200028a6 100644 --- a/vtkm/filter/PolicyBase.h +++ b/vtkm/filter/PolicyBase.h @@ -42,7 +42,6 @@ template struct PolicyBase { using FieldTypeList = VTKM_DEFAULT_TYPE_LIST_TAG; - using FieldStorageList = VTKM_DEFAULT_STORAGE_LIST_TAG; using StructuredCellSetList = vtkm::cont::CellSetListTagStructured; using UnstructuredCellSetList = vtkm::cont::CellSetListTagUnstructured; @@ -51,29 +50,25 @@ struct PolicyBase //----------------------------------------------------------------------------- template -VTKM_CONT vtkm::cont::DynamicArrayHandleBase -ApplyPolicy(const vtkm::cont::Field& field, const vtkm::filter::PolicyBase&) +VTKM_CONT vtkm::cont::ArrayHandleVariantBase ApplyPolicy( + const vtkm::cont::Field& field, + const vtkm::filter::PolicyBase&) { using TypeList = typename DerivedPolicy::FieldTypeList; - using StorageList = typename DerivedPolicy::FieldStorageList; - return field.GetData().ResetTypeAndStorageLists(TypeList(), StorageList()); + return field.GetData().ResetTypes(TypeList()); } //----------------------------------------------------------------------------- template -VTKM_CONT vtkm::cont::DynamicArrayHandleBase< - typename vtkm::filter::DeduceFilterFieldTypes::TypeList, - typename DerivedPolicy::FieldStorageList> +VTKM_CONT vtkm::cont::ArrayHandleVariantBase< + typename vtkm::filter::DeduceFilterFieldTypes::TypeList> ApplyPolicy(const vtkm::cont::Field& field, const vtkm::filter::PolicyBase&, const vtkm::filter::FilterTraits&) { using TypeList = typename vtkm::filter::DeduceFilterFieldTypes::TypeList; - - using StorageList = typename DerivedPolicy::FieldStorageList; - return field.GetData().ResetTypeAndStorageLists(TypeList(), StorageList()); + return field.GetData().ResetTypes(TypeList()); } //----------------------------------------------------------------------------- @@ -108,26 +103,22 @@ ApplyPolicyUnstructured(const vtkm::cont::DynamicCellSet& cellset, //----------------------------------------------------------------------------- template -VTKM_CONT vtkm::cont::SerializableField +VTKM_CONT vtkm::cont::SerializableField MakeSerializableField(const vtkm::filter::PolicyBase&) { return {}; } template -VTKM_CONT vtkm::cont::SerializableField +VTKM_CONT vtkm::cont::SerializableField MakeSerializableField(const vtkm::cont::Field& field, const vtkm::filter::PolicyBase&) { - return vtkm::cont::SerializableField{ field }; + return vtkm::cont::SerializableField{ field }; } template VTKM_CONT vtkm::cont::SerializableDataSet MakeSerializableDataSet(const vtkm::filter::PolicyBase&) { @@ -136,13 +127,11 @@ MakeSerializableDataSet(const vtkm::filter::PolicyBase&) template VTKM_CONT vtkm::cont::SerializableDataSet MakeSerializableDataSet(const vtkm::cont::DataSet& dataset, const vtkm::filter::PolicyBase&) { return vtkm::cont::SerializableDataSet{ dataset }; } } diff --git a/vtkm/filter/internal/CreateResult.h b/vtkm/filter/internal/CreateResult.h index 821e0a378..9be6ef7fa 100644 --- a/vtkm/filter/internal/CreateResult.h +++ b/vtkm/filter/internal/CreateResult.h @@ -108,7 +108,7 @@ inline VTKM_CONT vtkm::cont::DataSet CreateResult( return clone; } -/// Use this function if you have a DynamicArrayHandle that holds the data +/// Use this function if you have a ArrayHandleVariant that holds the data /// for the field. You also need to specify a name and an association for the /// field. If the field is associated with a particular element set (for /// example, a cell association is associated with a cell set), the name of @@ -116,7 +116,7 @@ inline VTKM_CONT vtkm::cont::DataSet CreateResult( /// for \c Association::WHOLE_MESH and \c Association::POINTS associations. /// inline VTKM_CONT vtkm::cont::DataSet CreateResult(const vtkm::cont::DataSet& inDataSet, - const vtkm::cont::DynamicArrayHandle& fieldArray, + const vtkm::cont::ArrayHandleVariant& fieldArray, const std::string& fieldName, vtkm::cont::Field::Association fieldAssociation, const std::string& elementSetName = "") diff --git a/vtkm/filter/testing/UnitTestCellMeasuresFilter.cxx b/vtkm/filter/testing/UnitTestCellMeasuresFilter.cxx index 00b6dece1..7cde3c467 100644 --- a/vtkm/filter/testing/UnitTestCellMeasuresFilter.cxx +++ b/vtkm/filter/testing/UnitTestCellMeasuresFilter.cxx @@ -20,7 +20,6 @@ #include "vtkm/filter/CellMeasures.h" -#include "vtkm/cont/DynamicArrayHandle.h" #include "vtkm/cont/testing/MakeTestDataSet.h" #include "vtkm/cont/testing/Testing.h" @@ -51,7 +50,7 @@ void TestCellMeasuresFilter(vtkm::cont::DataSet& dataset, // Check that the empty measure name above produced a field with the expected name. vols.SetCellMeasureName("measure"); - vtkm::cont::DynamicArrayHandle temp = outputData.GetField(vols.GetCellMeasureName()).GetData(); + auto temp = outputData.GetField(vols.GetCellMeasureName()).GetData(); VTKM_TEST_ASSERT(temp.GetNumberOfValues() == static_cast(expected.size()), "Output field could not be found or was improper."); diff --git a/vtkm/filter/testing/UnitTestClipWithFieldFilter.cxx b/vtkm/filter/testing/UnitTestClipWithFieldFilter.cxx index 2d31efbc1..a51ca0afb 100644 --- a/vtkm/filter/testing/UnitTestClipWithFieldFilter.cxx +++ b/vtkm/filter/testing/UnitTestClipWithFieldFilter.cxx @@ -20,7 +20,6 @@ #include -#include #include #include @@ -80,7 +79,7 @@ void TestClipExplicit() VTKM_TEST_ASSERT(outputData.GetNumberOfFields() == 1, "Wrong number of fields in the output dataset"); - vtkm::cont::DynamicArrayHandle temp = outputData.GetField("scalars").GetData(); + auto temp = outputData.GetField("scalars").GetData(); vtkm::cont::ArrayHandle resultArrayHandle; temp.CopyTo(resultArrayHandle); diff --git a/vtkm/filter/testing/UnitTestClipWithImplicitFunctionFilter.cxx b/vtkm/filter/testing/UnitTestClipWithImplicitFunctionFilter.cxx index fe81da422..fd2cb5d1d 100644 --- a/vtkm/filter/testing/UnitTestClipWithImplicitFunctionFilter.cxx +++ b/vtkm/filter/testing/UnitTestClipWithImplicitFunctionFilter.cxx @@ -20,7 +20,6 @@ #include -#include #include #include @@ -76,7 +75,7 @@ void TestClipStructured() VTKM_TEST_ASSERT(outputData.GetCellSet().GetNumberOfCells() == 8, "Wrong number of cells in the output dataset"); - vtkm::cont::DynamicArrayHandle temp = outputData.GetField("scalars").GetData(); + vtkm::cont::ArrayHandleVariant temp = outputData.GetField("scalars").GetData(); vtkm::cont::ArrayHandle resultArrayHandle; temp.CopyTo(resultArrayHandle); @@ -116,7 +115,7 @@ void TestClipStructuredInverted() VTKM_TEST_ASSERT(outputData.GetCellSet().GetNumberOfCells() == 4, "Wrong number of cells in the output dataset"); - vtkm::cont::DynamicArrayHandle temp = outputData.GetField("scalars").GetData(); + vtkm::cont::ArrayHandleVariant temp = outputData.GetField("scalars").GetData(); vtkm::cont::ArrayHandle resultArrayHandle; temp.CopyTo(resultArrayHandle); diff --git a/vtkm/filter/testing/UnitTestMarchingCubesFilter.cxx b/vtkm/filter/testing/UnitTestMarchingCubesFilter.cxx index 8ef970a33..0b5e244a8 100644 --- a/vtkm/filter/testing/UnitTestMarchingCubesFilter.cxx +++ b/vtkm/filter/testing/UnitTestMarchingCubesFilter.cxx @@ -24,7 +24,6 @@ #include #include #include -#include #include #include @@ -229,22 +228,7 @@ public: class PolicyRadiantDataSet : public vtkm::filter::PolicyBase { - using DataHandleType = MakeRadiantDataSet::DataArrayHandle; - using CountingHandleType = MakeRadiantDataSet::ConnectivityArrayHandle; - - using TransformHandleType = - vtkm::cont::ArrayHandleTransform, - CubeGridConnectivity>; - public: - struct TypeListTagRadiantTypes : vtkm::ListTagBase - { - }; - - using FieldStorageList = TypeListTagRadiantTypes; - struct TypeListTagRadiantCellSetTypes : vtkm::ListTagBase { }; @@ -281,12 +265,10 @@ inline vtkm::cont::DataSet MakeRadiantDataSet::Make3DRadiantDataSet(vtkm::IdComp dataSet.AddCoordinateSystem(vtkm::cont::CoordinateSystem("coordinates", coordinates)); //Set point scalar - dataSet.AddField(vtkm::cont::Field("distanceToOrigin", - vtkm::cont::Field::Association::POINTS, - vtkm::cont::DynamicArrayHandle(distanceToOrigin))); - dataSet.AddField(vtkm::cont::Field("distanceToOther", - vtkm::cont::Field::Association::POINTS, - vtkm::cont::DynamicArrayHandle(distanceToOther))); + dataSet.AddField(vtkm::cont::Field( + "distanceToOrigin", vtkm::cont::Field::Association::POINTS, distanceToOrigin)); + dataSet.AddField( + vtkm::cont::Field("distanceToOther", vtkm::cont::Field::Association::POINTS, distanceToOther)); CellSet cellSet("cells"); cellSet.Fill(coordinates.GetNumberOfValues(), HexTag::Id, HexTraits::NUM_POINTS, connectivity); @@ -384,7 +366,7 @@ void TestMarchingCubesCustomPolicy() //custom field type mc.SetActiveField("distanceToOrigin"); mc.SetFieldsToPass({ "distanceToOrigin", "distanceToOther" }); - vtkm::cont::DataSet outputData = mc.Execute(dataSet, PolicyRadiantDataSet()); + vtkm::cont::DataSet outputData = mc.Execute(dataSet, PolicyRadiantDataSet{}); VTKM_TEST_ASSERT(outputData.GetNumberOfCellSets() == 1, "Wrong number of cellsets in the output dataset"); diff --git a/vtkm/filter/testing/UnitTestMultiBlockFilters.cxx b/vtkm/filter/testing/UnitTestMultiBlockFilters.cxx index 218c16258..56a729b28 100644 --- a/vtkm/filter/testing/UnitTestMultiBlockFilters.cxx +++ b/vtkm/filter/testing/UnitTestMultiBlockFilters.cxx @@ -24,7 +24,6 @@ #include #include #include -#include #include #include diff --git a/vtkm/filter/testing/UnitTestWarpScalarFilter.cxx b/vtkm/filter/testing/UnitTestWarpScalarFilter.cxx index 04c59f1a0..be668295c 100644 --- a/vtkm/filter/testing/UnitTestWarpScalarFilter.cxx +++ b/vtkm/filter/testing/UnitTestWarpScalarFilter.cxx @@ -64,19 +64,6 @@ vtkm::cont::DataSet MakeWarpScalarTestDataSet() return dataSet; } -class PolicyWarpScalar : public vtkm::filter::PolicyBase -{ -public: - using vecType = vtkm::Vec; - struct TypeListTagWarpScalarTags - : vtkm::ListTagBase::StorageTag, - vtkm::cont::ArrayHandle::StorageTag, - vtkm::cont::ArrayHandle::StorageTag> - { - }; - using FieldStorageList = TypeListTagWarpScalarTags; -}; - void CheckResult(const vtkm::filter::WarpScalar& filter, const vtkm::cont::DataSet& result) { VTKM_TEST_ASSERT(result.HasField("warpscalar", vtkm::cont::Field::Association::POINTS), @@ -124,7 +111,7 @@ void TestWarpScalarFilter() filter.SetUseCoordinateSystemAsPrimaryField(true); filter.SetNormalField("normal"); filter.SetScalarFactorField("scalarfactor"); - vtkm::cont::DataSet result = filter.Execute(ds, PolicyWarpScalar()); + vtkm::cont::DataSet result = filter.Execute(ds); CheckResult(filter, result); } @@ -134,7 +121,7 @@ void TestWarpScalarFilter() filter.SetPrimaryField("vec1"); filter.SetNormalField("normal"); filter.SetScalarFactorField("scalarfactor"); - vtkm::cont::DataSet result = filter.Execute(ds, PolicyWarpScalar()); + vtkm::cont::DataSet result = filter.Execute(ds); CheckResult(filter, result); } } diff --git a/vtkm/worklet/testing/UnitTestMarchingCubes.cxx b/vtkm/worklet/testing/UnitTestMarchingCubes.cxx index bf6bd27f6..a38b8638d 100644 --- a/vtkm/worklet/testing/UnitTestMarchingCubes.cxx +++ b/vtkm/worklet/testing/UnitTestMarchingCubes.cxx @@ -286,7 +286,7 @@ inline vtkm::cont::DataSet MakeRadiantDataSet::Make3DRadiantDataSet(vtkm::IdComp void TestMarchingCubesUniformGrid() { - std::cout << "Testing MarchingCubes filter on a uniform grid" << std::endl; + std::cout << "Testing MarchingCubes worklet on a uniform grid" << std::endl; vtkm::Id3 dims(4, 4, 4); vtkm::cont::DataSet dataSet = vtkm_ut_mc_worklet::MakeIsosurfaceTestDataSet(dims); @@ -341,7 +341,7 @@ void TestMarchingCubesUniformGrid() void TestMarchingCubesExplicit() { - std::cout << "Testing MarchingCubes filter on explicit data" << std::endl; + std::cout << "Testing MarchingCubes worklet on explicit data" << std::endl; using DataSetGenerator = vtkm_ut_mc_worklet::MakeRadiantDataSet; using Vec3Handle = vtkm::cont::ArrayHandle>; @@ -400,11 +400,11 @@ void TestMarchingCubesExplicit() VTKM_TEST_ASSERT(result.GetNumberOfCells() == cellFieldArrayOut.GetNumberOfValues(), "Output cell data invalid"); VTKM_TEST_ASSERT(test_equal(vertices.GetNumberOfValues(), 2472), - "Wrong vertices result for MarchingCubes filter"); + "Wrong vertices result for MarchingCubes worklet"); VTKM_TEST_ASSERT(test_equal(normals.GetNumberOfValues(), 2472), - "Wrong normals result for MarchingCubes filter"); + "Wrong normals result for MarchingCubes worklet"); VTKM_TEST_ASSERT(test_equal(scalars.GetNumberOfValues(), 2472), - "Wrong scalars result for MarchingCubes filter"); + "Wrong scalars result for MarchingCubes worklet"); } void TestMarchingCubes()