diff --git a/benchmarking/BenchmarkFieldAlgorithms.cxx b/benchmarking/BenchmarkFieldAlgorithms.cxx index a23c2c3b8..8a690f073 100644 --- a/benchmarking/BenchmarkFieldAlgorithms.cxx +++ b/benchmarking/BenchmarkFieldAlgorithms.cxx @@ -226,20 +226,20 @@ public: using ExecutionSignature = void(_1, _2, _3, _4); using InputDomain = _1; - template + template VTKM_EXEC void operator()(const vtkm::Id2& low_high, const WeightType& weight, - const vtkm::exec::ExecutionWholeArrayConst& inPortal, + const vtkm::exec::ExecutionWholeArrayConst& inPortal, T& result) const { //fetch the low / high values from inPortal result = vtkm::Lerp(inPortal.Get(low_high[0]), inPortal.Get(low_high[1]), weight); } - template + template VTKM_EXEC void operator()(const vtkm::Id2&, const WeightType&, - const vtkm::exec::ExecutionWholeArrayConst&, + const vtkm::exec::ExecutionWholeArrayConst&, U&) const { //the inPortal and result need to be the same type so this version only diff --git a/vtkm/cont/arg/TransportTagWholeArrayIn.h b/vtkm/cont/arg/TransportTagWholeArrayIn.h index c4dad8e93..86454234d 100644 --- a/vtkm/cont/arg/TransportTagWholeArrayIn.h +++ b/vtkm/cont/arg/TransportTagWholeArrayIn.h @@ -56,7 +56,7 @@ struct Transport; + using ExecObjectType = vtkm::exec::ExecutionWholeArrayConst; template VTKM_CONT ExecObjectType operator()(ContObjectType& array, @@ -69,7 +69,7 @@ struct Transport; + using ExecObjectType = vtkm::exec::ExecutionWholeArray; template VTKM_CONT ExecObjectType operator()(ContObjectType& array, @@ -71,7 +71,7 @@ struct Transport; + using ExecObjectType = vtkm::exec::ExecutionWholeArray; template VTKM_CONT ExecObjectType operator()(ContObjectType& array, @@ -71,7 +71,7 @@ struct Transport #include +#include + namespace vtkm { namespace exec { -/// The following classes have been deprecated and are meant to be used +/// The following classes have been sort of deprecated and are meant to be used /// internally only. Please use the \c WholeArrayIn, \c WholeArrayOut, and /// \c WholeArrayInOut \c ControlSignature tags instead. @@ -27,8 +29,11 @@ namespace exec /// function. This can be used to allow worklets to have a shared search /// structure. /// -template -class ExecutionWholeArray +template +class ExecutionWholeArray; + +template +class ExecutionWholeArray { public: using ValueType = T; @@ -41,29 +46,20 @@ public: { } - // This constructor is deprecated in VTK-m 1.6 VTKM_CONT - ExecutionWholeArray(HandleType& handle) - : Portal(handle.PrepareForInPlace(DeviceAdapterTag())) - { - } - - // This constructor is deprecated in VTK-m 1.6 - VTKM_CONT - ExecutionWholeArray(HandleType& handle, vtkm::Id length) - : Portal(handle.PrepareForOutput(length, DeviceAdapterTag())) + ExecutionWholeArray(HandleType& handle, + vtkm::cont::DeviceAdapterId device, + vtkm::cont::Token& token) + : Portal(handle.PrepareForInPlace(device, token)) { } VTKM_CONT - ExecutionWholeArray(HandleType& handle, vtkm::cont::Token& token) - : Portal(handle.PrepareForInPlace(DeviceAdapterTag(), token)) - { - } - - VTKM_CONT - ExecutionWholeArray(HandleType& handle, vtkm::Id length, vtkm::cont::Token& token) - : Portal(handle.PrepareForOutput(length, DeviceAdapterTag(), token)) + ExecutionWholeArray(HandleType& handle, + vtkm::Id length, + vtkm::cont::DeviceAdapterId device, + vtkm::cont::Token& token) + : Portal(handle.PrepareForOutput(length, device, token)) { } @@ -86,13 +82,50 @@ private: PortalType Portal; }; +template +class VTKM_DEPRECATED(1.6, "ExecutionWholeArray no longer uses Device template parameter.") + ExecutionWholeArray : public ExecutionWholeArray +{ + using Superclass = ExecutionWholeArray; + using HandleType = typename Superclass::HandleType; + +public: + using Superclass::Superclass; + + VTKM_CONT ExecutionWholeArray(HandleType& handle) + : Superclass(handle, Device{}, vtkm::cont::Token{}) + { + } + + VTKM_CONT + ExecutionWholeArray(HandleType& handle, vtkm::Id length) + : Superclass(handle, length, Device{}, vtkm::cont::Token{}) + { + } + + VTKM_CONT + ExecutionWholeArray(HandleType& handle, vtkm::cont::Token& token) + : Superclass(handle, Device{}, token) + { + } + + VTKM_CONT + ExecutionWholeArray(HandleType& handle, vtkm::Id length, vtkm::cont::Token& token) + : Superclass(handle, length, Device{}, token) + { + } +}; + /// \c ExecutionWholeArrayConst is an execution object that allows an array handle /// content to be a parameter in an execution environment /// function. This can be used to allow worklets to have a shared search /// structure /// -template -class ExecutionWholeArrayConst +template +class ExecutionWholeArrayConst; + +template +class ExecutionWholeArrayConst { public: using ValueType = T; @@ -105,16 +138,11 @@ public: { } - // This constructor is deprecated in VTK-m 1.6 VTKM_CONT - ExecutionWholeArrayConst(const HandleType& handle) - : Portal(handle.PrepareForInput(DeviceAdapterTag())) - { - } - - VTKM_CONT - ExecutionWholeArrayConst(const HandleType& handle, vtkm::cont::Token& token) - : Portal(handle.PrepareForInput(DeviceAdapterTag(), token)) + ExecutionWholeArrayConst(const HandleType& handle, + vtkm::cont::DeviceAdapterId device, + vtkm::cont::Token& token) + : Portal(handle.PrepareForInput(device, token)) { } @@ -133,6 +161,30 @@ public: private: PortalType Portal; }; + +template +class VTKM_DEPRECATED(1.6, "ExecutionWholeArray no longer uses Device template parameter.") + ExecutionWholeArrayConst : public ExecutionWholeArrayConst +{ + using Superclass = ExecutionWholeArrayConst; + using HandleType = typename Superclass::HandleType; + +public: + using Superclass::Superclass; + + VTKM_CONT ExecutionWholeArrayConst(HandleType& handle) + : Superclass(handle, Device{}, vtkm::cont::Token{}) + { + } + + VTKM_CONT + ExecutionWholeArrayConst(HandleType& handle, vtkm::cont::Token& token) + : Superclass(handle, Device{}, token) + { + } +}; + + } } // namespace vtkm::exec