Remove the use of ResetTypes for ArrayCopy

It used to be the case where you needed to call `ResetTypes` on a
`VariantArrayHandle` before using `ArrayCopy` to limit the types it gets
compiled for. However, there is now a general form for
`UnknownArrayHandle`, so `ResetTypes` no longer does anything useful in
this case. Remove the use of that.
This commit is contained in:
Kenneth Moreland 2021-02-01 16:36:47 -07:00
parent ad7033684f
commit 1faed3712e
6 changed files with 13 additions and 27 deletions

@ -705,8 +705,7 @@ int main(int argc, char* argv[])
auto tempFieldData = inDataSet.GetField(0).GetData(); auto tempFieldData = inDataSet.GetField(0).GetData();
values.resize(static_cast<std::size_t>(tempFieldData.GetNumberOfValues())); values.resize(static_cast<std::size_t>(tempFieldData.GetNumberOfValues()));
auto valuesHandle = vtkm::cont::make_ArrayHandle(values, vtkm::CopyFlag::Off); auto valuesHandle = vtkm::cont::make_ArrayHandle(values, vtkm::CopyFlag::Off);
vtkm::cont::ArrayCopy( vtkm::cont::ArrayCopy(tempFieldData, valuesHandle);
tempFieldData.ResetTypes<vtkm::List<ValueType>, VTKM_DEFAULT_STORAGE_LIST>(), valuesHandle);
valuesHandle.SyncControlArray(); //Forces values to get updated if copy happened on GPU valuesHandle.SyncControlArray(); //Forces values to get updated if copy happened on GPU
} }
// Read ASCII data input // Read ASCII data input

@ -299,9 +299,7 @@ VTKM_CONT void ContourTreeAugmented::DoPostExecute(
currBlock.GetField(this->GetActiveFieldName(), this->GetActiveFieldAssociation()); currBlock.GetField(this->GetActiveFieldName(), this->GetActiveFieldAssociation());
//const vtkm::cont::ArrayHandle<T,StorageType> &fieldData = currField.GetData().Cast<vtkm::cont::ArrayHandle<T,StorageType> >(); //const vtkm::cont::ArrayHandle<T,StorageType> &fieldData = currField.GetData().Cast<vtkm::cont::ArrayHandle<T,StorageType> >();
vtkm::cont::ArrayHandle<T> fieldData; vtkm::cont::ArrayHandle<T> fieldData;
vtkm::cont::ArrayCopy( vtkm::cont::ArrayCopy(currField.GetData(), fieldData);
currField.GetData().template ResetTypes<vtkm::List<T>, VTKM_DEFAULT_STORAGE_LIST>(),
fieldData);
auto currContourTreeMesh = vtkm::worklet::contourtree_distributed::MultiBlockContourTreeHelper:: auto currContourTreeMesh = vtkm::worklet::contourtree_distributed::MultiBlockContourTreeHelper::
ComputeLocalContourTreeMesh<T>( ComputeLocalContourTreeMesh<T>(
this->MultiBlockTreeHelper->MultiBlockSpatialDecomposition.LocalBlockOrigins.ReadPortal() this->MultiBlockTreeHelper->MultiBlockSpatialDecomposition.LocalBlockOrigins.ReadPortal()

@ -680,9 +680,7 @@ VTKM_CONT void ContourTreeUniformDistributed::DoPostExecute(
auto currField = auto currField =
currBlock.GetField(this->GetActiveFieldName(), this->GetActiveFieldAssociation()); currBlock.GetField(this->GetActiveFieldName(), this->GetActiveFieldAssociation());
vtkm::cont::ArrayHandle<FieldType> fieldData; vtkm::cont::ArrayHandle<FieldType> fieldData;
vtkm::cont::ArrayCopy( vtkm::cont::ArrayCopy(currField.GetData(), fieldData);
currField.GetData().ResetTypes(vtkm::List<FieldType>{}, VTKM_DEFAULT_STORAGE_LIST{}),
fieldData);
// ... compute and store the actual mesh // ... compute and store the actual mesh
localDataBlocks[bi]->ContourTreeMeshes.emplace_back(this->LocalBoundaryTrees[bi].VertexIndex, localDataBlocks[bi]->ContourTreeMeshes.emplace_back(this->LocalBoundaryTrees[bi].VertexIndex,
@ -916,9 +914,7 @@ VTKM_CONT void ContourTreeUniformDistributed::DoPostExecute(
auto currField = auto currField =
currBlock.GetField(this->GetActiveFieldName(), this->GetActiveFieldAssociation()); currBlock.GetField(this->GetActiveFieldName(), this->GetActiveFieldAssociation());
vtkm::cont::ArrayHandle<FieldType> fieldData; vtkm::cont::ArrayHandle<FieldType> fieldData;
vtkm::cont::ArrayCopy( vtkm::cont::ArrayCopy(currField.GetData(), fieldData);
currField.GetData().ResetTypes(vtkm::List<FieldType>{}, VTKM_DEFAULT_STORAGE_LIST{}),
fieldData);
auto localToGlobalIdRelabeler = vtkm::worklet::contourtree_augmented::mesh_dem::IdRelabeler( auto localToGlobalIdRelabeler = vtkm::worklet::contourtree_augmented::mesh_dem::IdRelabeler(
this->MultiBlockSpatialDecomposition.LocalBlockOrigins.ReadPortal().Get( this->MultiBlockSpatialDecomposition.LocalBlockOrigins.ReadPortal().Get(
blockData->BlockIndex), blockData->BlockIndex),

@ -46,8 +46,7 @@ public:
if (fieldData.IsType<FieldHandle>()) if (fieldData.IsType<FieldHandle>())
fieldArray = fieldData.AsArrayHandle<FieldHandle>(); fieldArray = fieldData.AsArrayHandle<FieldHandle>();
else else
vtkm::cont::ArrayCopy( vtkm::cont::ArrayCopy(fieldData, fieldArray);
fieldData.ResetTypes<vtkm::TypeListFieldVec3, VTKM_DEFAULT_STORAGE_LIST>(), fieldArray);
this->Eval = std::shared_ptr<GridEvalType>(new GridEvalType(ds, fieldArray)); this->Eval = std::shared_ptr<GridEvalType>(new GridEvalType(ds, fieldArray));
} }

@ -57,6 +57,7 @@
#include <iomanip> #include <iomanip>
#include <iostream> #include <iostream>
#include <vtkm/Types.h> #include <vtkm/Types.h>
#include <vtkm/cont/ArrayCopy.h>
#include <vtkm/cont/DataSet.h> #include <vtkm/cont/DataSet.h>
#include <vtkm/worklet/contourtree_augmented/Types.h> #include <vtkm/worklet/contourtree_augmented/Types.h>
@ -222,42 +223,36 @@ inline std::istream& operator>>(std::istream& inStream, SupernodeOnSuperarc& nod
inline void TreeCompiler::AddHierarchicalTree(const vtkm::cont::DataSet& addedTree) inline void TreeCompiler::AddHierarchicalTree(const vtkm::cont::DataSet& addedTree)
{ // TreeCompiler::AddHierarchicalTree() { // TreeCompiler::AddHierarchicalTree()
// Copy relevant tree content to STL arrays // Copy relevant tree content to STL arrays
vtkm::cont::VariantArrayHandle dataValues_array = addedTree.GetField("DataValues").GetData(); vtkm::cont::UnknownArrayHandle dataValues_array = addedTree.GetField("DataValues").GetData();
std::vector<vtkm::FloatDefault> dataValues(dataValues_array.GetNumberOfValues()); std::vector<vtkm::FloatDefault> dataValues(dataValues_array.GetNumberOfValues());
auto dataValues_handle = vtkm::cont::make_ArrayHandle(dataValues, vtkm::CopyFlag::Off); auto dataValues_handle = vtkm::cont::make_ArrayHandle(dataValues, vtkm::CopyFlag::Off);
vtkm::cont::ArrayCopy(dataValues_array.ResetTypes(vtkm::TypeListScalarAll{}), dataValues_handle); vtkm::cont::ArrayCopy(dataValues_array, dataValues_handle);
dataValues_handle.SyncControlArray(); dataValues_handle.SyncControlArray();
auto regularNodeGlobalIds_array = addedTree.GetField("RegularNodeGlobalIds").GetData(); auto regularNodeGlobalIds_array = addedTree.GetField("RegularNodeGlobalIds").GetData();
std::vector<vtkm::Id> regularNodeGlobalIds(regularNodeGlobalIds_array.GetNumberOfValues()); std::vector<vtkm::Id> regularNodeGlobalIds(regularNodeGlobalIds_array.GetNumberOfValues());
auto regularNodeGlobalIds_handle = auto regularNodeGlobalIds_handle =
vtkm::cont::make_ArrayHandle(regularNodeGlobalIds, vtkm::CopyFlag::Off); vtkm::cont::make_ArrayHandle(regularNodeGlobalIds, vtkm::CopyFlag::Off);
vtkm::cont::ArrayCopy( vtkm::cont::ArrayCopy(regularNodeGlobalIds_array, regularNodeGlobalIds_handle);
regularNodeGlobalIds_array.ResetTypes<vtkm::TypeListId, VTKM_DEFAULT_STORAGE_LIST>(),
regularNodeGlobalIds_handle);
regularNodeGlobalIds_handle regularNodeGlobalIds_handle
.SyncControlArray(); //Forces values to get updated if copy happened on GPU .SyncControlArray(); //Forces values to get updated if copy happened on GPU
auto superarcs_array = addedTree.GetField("Superarcs").GetData(); auto superarcs_array = addedTree.GetField("Superarcs").GetData();
std::vector<vtkm::Id> added_tree_superarcs(superarcs_array.GetNumberOfValues()); std::vector<vtkm::Id> added_tree_superarcs(superarcs_array.GetNumberOfValues());
auto superarcs_handle = vtkm::cont::make_ArrayHandle(added_tree_superarcs, vtkm::CopyFlag::Off); auto superarcs_handle = vtkm::cont::make_ArrayHandle(added_tree_superarcs, vtkm::CopyFlag::Off);
vtkm::cont::ArrayCopy(superarcs_array.ResetTypes<vtkm::TypeListId, VTKM_DEFAULT_STORAGE_LIST>(), vtkm::cont::ArrayCopy(superarcs_array, superarcs_handle);
superarcs_handle);
superarcs_handle.SyncControlArray(); //Forces values to get updated if copy happened on GPU superarcs_handle.SyncControlArray(); //Forces values to get updated if copy happened on GPU
auto supernodes_array = addedTree.GetField("Supernodes").GetData(); auto supernodes_array = addedTree.GetField("Supernodes").GetData();
std::vector<vtkm::Id> added_tree_supernodes(supernodes_array.GetNumberOfValues()); std::vector<vtkm::Id> added_tree_supernodes(supernodes_array.GetNumberOfValues());
auto supernodes_handle = vtkm::cont::make_ArrayHandle(added_tree_supernodes, vtkm::CopyFlag::Off); auto supernodes_handle = vtkm::cont::make_ArrayHandle(added_tree_supernodes, vtkm::CopyFlag::Off);
vtkm::cont::ArrayCopy(supernodes_array.ResetTypes<vtkm::TypeListId, VTKM_DEFAULT_STORAGE_LIST>(), vtkm::cont::ArrayCopy(supernodes_array, supernodes_handle);
supernodes_handle);
supernodes_handle.SyncControlArray(); //Forces values to get updated if copy happened on GPU supernodes_handle.SyncControlArray(); //Forces values to get updated if copy happened on GPU
auto superparents_array = addedTree.GetField("Superparents").GetData(); auto superparents_array = addedTree.GetField("Superparents").GetData();
std::vector<vtkm::Id> superparents(superparents_array.GetNumberOfValues()); std::vector<vtkm::Id> superparents(superparents_array.GetNumberOfValues());
auto superparents_handle = vtkm::cont::make_ArrayHandle(superparents, vtkm::CopyFlag::Off); auto superparents_handle = vtkm::cont::make_ArrayHandle(superparents, vtkm::CopyFlag::Off);
vtkm::cont::ArrayCopy( vtkm::cont::ArrayCopy(superparents_array, superparents_handle);
superparents_array.ResetTypes<vtkm::TypeListId, VTKM_DEFAULT_STORAGE_LIST>(),
superparents_handle);
superparents_handle.SyncControlArray(); //Forces values to get updated if copy happened on GPU superparents_handle.SyncControlArray(); //Forces values to get updated if copy happened on GPU
// loop through all of the supernodes in the hierarchical tree // loop through all of the supernodes in the hierarchical tree

@ -838,8 +838,7 @@ void TestParticleAdvectionFile(const std::string& fname,
if (fieldData.IsType<FieldHandle>()) if (fieldData.IsType<FieldHandle>())
fieldArray = fieldData.AsArrayHandle<FieldHandle>(); fieldArray = fieldData.AsArrayHandle<FieldHandle>();
else else
vtkm::cont::ArrayCopy( vtkm::cont::ArrayCopy(fieldData, fieldArray);
fieldData.ResetTypes<vtkm::TypeListFieldVec3, VTKM_DEFAULT_STORAGE_LIST>(), fieldArray);
FieldType velocities(fieldArray); FieldType velocities(fieldArray);
GridEvalType eval(ds.GetCoordinateSystem(), ds.GetCellSet(), velocities); GridEvalType eval(ds.GetCoordinateSystem(), ds.GetCellSet(), velocities);