diff --git a/Accelerators/Vtkm/vtkmlib/ArrayConverters.hxx b/Accelerators/Vtkm/vtkmlib/ArrayConverters.hxx index fc1708984dfe387b957fe236550937ff8d750854..50b8f6cbd1bb3c0315052c11654c12217eac5dea 100644 --- a/Accelerators/Vtkm/vtkmlib/ArrayConverters.hxx +++ b/Accelerators/Vtkm/vtkmlib/ArrayConverters.hxx @@ -46,7 +46,8 @@ vtkm::cont::VariantArrayHandle vtkDataArrayToVariantArrayHandle(DataArrayType* i { vtkm::Id numTuples = input->GetNumberOfTuples(); auto subHandle = DataArrayToArrayHandle::Wrap(input); - auto offsets = vtkm::cont::ArrayHandleCounting(0, numComps, numTuples); + auto offsets = + vtkm::cont::ArrayHandleCounting(vtkm::Id(0), vtkm::Id(numComps), numTuples); auto handle = vtkm::cont::make_ArrayHandleGroupVecVariable(subHandle, offsets); return vtkm::cont::VariantArrayHandle(handle); } diff --git a/Accelerators/Vtkm/vtkmlib/CellSetConverters.cxx b/Accelerators/Vtkm/vtkmlib/CellSetConverters.cxx index 7d9f06e03bd3e8352b896fa93004796ca4bdf27d..448d53a397e9b7d9315bcac56777a38bf9d9bbf1 100644 --- a/Accelerators/Vtkm/vtkmlib/CellSetConverters.cxx +++ b/Accelerators/Vtkm/vtkmlib/CellSetConverters.cxx @@ -73,7 +73,7 @@ struct ReorderHex : public vtkm::exec::FunctorBase struct RunReorder { RunReorder(vtkm::cont::ArrayHandle& handle) - : Handle{ handle } + : Handle(handle) { } @@ -135,9 +135,13 @@ struct BuildSingleTypeVoxelCellSetVisitor vtkm::cont::ArrayCopy( vtkm::cont::make_ArrayHandle(origData, numIds, vtkm::CopyFlag::Off), connHandle); - // reorder cells from voxel->hex: + // reorder cells from voxel->hex: which only can run on + // devices that have shared memory / vtable with the CPU + using SMPTypes = vtkm::List; + RunReorder reorder{ connHandle }; - vtkm::cont::TryExecute(reorder); + vtkm::cont::TryExecute(reorder, SMPTypes{}); } using CellSetType = vtkm::cont::CellSetSingleType<>; diff --git a/Filters/Extraction/vtkValueSelector.cxx b/Filters/Extraction/vtkValueSelector.cxx index 7e7431958c7e8b9e167943bbb69ba951ad726328..e3c405faf6b3d60a82b2b56a807fa7318b50037b 100644 --- a/Filters/Extraction/vtkValueSelector.cxx +++ b/Filters/Extraction/vtkValueSelector.cxx @@ -97,11 +97,12 @@ struct ArrayValueMatchFunctor vtkSMPTools::For(0, fArray->GetNumberOfTuples(), [=](vtkIdType begin, vtkIdType end) { const auto fRange = vtk::DataArrayTupleRange(fArray, begin, end); auto insideRange = vtk::DataArrayValueRange<1>(insidednessArray, begin, end); - using FTupleCRefType = typename decltype(fRange)::ConstTupleReferenceType; - std::transform(fRange.cbegin(), fRange.cend(), insideRange.begin(), - [&](FTupleCRefType fTuple) -> signed char { - return std::binary_search(haystack_begin, haystack_end, fTuple[comp]) ? 1 : 0; - }); + auto insideIter = insideRange.begin(); + for (auto i = fRange.cbegin(); i != fRange.cend(); ++i, ++insideIter) + { + auto result = std::binary_search(haystack_begin, haystack_end, (*i)[comp]); + *insideIter = result ? 1 : 0; + } }); } else @@ -113,7 +114,7 @@ struct ArrayValueMatchFunctor using FTupleCRefType = typename decltype(fRange)::ConstTupleReferenceType; std::transform(fRange.cbegin(), fRange.cend(), insideRange.begin(), [&](FTupleCRefType fTuple) -> signed char { - ValueType val{ 0 }; + ValueType val = ValueType(0); for (const ValueType fComp : fTuple) { val += fComp * fComp; diff --git a/Filters/ParallelDIY2/vtkGenerateGlobalIds.cxx b/Filters/ParallelDIY2/vtkGenerateGlobalIds.cxx index 918d8bceb20b9e2d118306901d37814c5cd8b19d..4b32ad91d53fdd34982a81aa11bf66b686d291a2 100644 --- a/Filters/ParallelDIY2/vtkGenerateGlobalIds.cxx +++ b/Filters/ParallelDIY2/vtkGenerateGlobalIds.cxx @@ -156,7 +156,7 @@ static bool GenerateIds(vtkDataObject* dobj, vtkGenerateGlobalIds* self, bool ce diy::Master master( comm, 1, -1, []() { return static_cast(new ElementBlockT); }, - [](void* b) { delete static_cast(b); }); + [](void* b) -> void { delete static_cast(b); }); vtkLogStartScope(TRACE, "populate master"); std::vector gids; @@ -185,8 +185,8 @@ static bool GenerateIds(vtkDataObject* dobj, vtkGenerateGlobalIds* self, bool ce vtkLogStartScope(TRACE, "merge-points"); // iterate over all local blocks to give them unique ids. - master.foreach ([](ElementBlockT* b, // local block - const diy::Master::ProxyWithLink&) // communication proxy + master.foreach ([](ElementBlockT* b, // local block + const diy::Master::ProxyWithLink&) -> void // communication proxy { b->MergeElements(); }); vtkLogEndScope("merge-points"); self->UpdateProgress(0.75); @@ -454,8 +454,8 @@ public: vtkIdType UniqueElementsCount{ 0 }; std::map > OutMessage; - vtkSmartPointer GlobalIds = nullptr; - vtkSmartPointer GhostArray = nullptr; + vtkSmartPointer GlobalIds; + vtkSmartPointer GhostArray; void Initialize(int self_gid, vtkPoints* points, vtkDataSet* dataset) { diff --git a/ThirdParty/vtkm/vtkvtkm/vtk-m b/ThirdParty/vtkm/vtkvtkm/vtk-m index b30827215cfbfaae05943699d176ff1ca0e10471..f395e084d821265d4ddc782f22c8d9edf8f1f411 160000 --- a/ThirdParty/vtkm/vtkvtkm/vtk-m +++ b/ThirdParty/vtkm/vtkvtkm/vtk-m @@ -1 +1 @@ -Subproject commit b30827215cfbfaae05943699d176ff1ca0e10471 +Subproject commit f395e084d821265d4ddc782f22c8d9edf8f1f411