mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-16 17:22:55 +00:00
Merge topic 'deprecate-atomicarrayexec-device'
71a5bd3b9 Fix compile error with MSVC 7df5c3935 Remove device template argument from AtomicArrayExecutionObject Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Nick Thompson <nathompson7@protonmail.com> Merge-request: !2397
This commit is contained in:
commit
5b9eb1ceb0
@ -73,12 +73,11 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
template <typename Device>
|
||||
VTKM_CONT vtkm::exec::AtomicArrayExecutionObject<T, Device> PrepareForExecution(
|
||||
Device,
|
||||
VTKM_CONT vtkm::exec::AtomicArrayExecutionObject<T> PrepareForExecution(
|
||||
vtkm::cont::DeviceAdapterId device,
|
||||
vtkm::cont::Token& token) const
|
||||
{
|
||||
return vtkm::exec::AtomicArrayExecutionObject<T, Device>(this->Handle, token);
|
||||
return vtkm::exec::AtomicArrayExecutionObject<T>(this->Handle, device, token);
|
||||
}
|
||||
|
||||
template <typename Device>
|
||||
|
@ -48,7 +48,7 @@ struct Transport<vtkm::cont::arg::TransportTagAtomicArray,
|
||||
vtkm::cont::ArrayHandle<T, vtkm::cont::StorageTagBasic>,
|
||||
Device>
|
||||
{
|
||||
using ExecObjectType = vtkm::exec::AtomicArrayExecutionObject<T, Device>;
|
||||
using ExecObjectType = vtkm::exec::AtomicArrayExecutionObject<T>;
|
||||
using ExecType = vtkm::cont::AtomicArray<T>;
|
||||
|
||||
template <typename InputDomainType>
|
||||
@ -74,7 +74,7 @@ struct Transport<vtkm::cont::arg::TransportTagAtomicArray,
|
||||
vtkm::cont::ArrayHandle<T, vtkm::cont::StorageTagVirtual>,
|
||||
Device>
|
||||
{
|
||||
using ExecObjectType = vtkm::exec::AtomicArrayExecutionObject<T, Device>;
|
||||
using ExecObjectType = vtkm::exec::AtomicArrayExecutionObject<T>;
|
||||
using ExecType = vtkm::cont::AtomicArray<T>;
|
||||
|
||||
template <typename InputDomainType>
|
||||
|
@ -311,7 +311,7 @@ public:
|
||||
|
||||
VTKM_CONT void SetErrorMessageBuffer(const vtkm::exec::internal::ErrorMessageBuffer&) {}
|
||||
|
||||
vtkm::exec::AtomicArrayExecutionObject<T, DeviceAdapterTag> AArray;
|
||||
vtkm::exec::AtomicArrayExecutionObject<T> AArray;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
@ -335,7 +335,7 @@ public:
|
||||
|
||||
VTKM_CONT void SetErrorMessageBuffer(const vtkm::exec::internal::ErrorMessageBuffer&) {}
|
||||
|
||||
vtkm::exec::AtomicArrayExecutionObject<T, DeviceAdapterTag> AArray;
|
||||
vtkm::exec::AtomicArrayExecutionObject<T> AArray;
|
||||
};
|
||||
|
||||
class VirtualObjectTransferKernel
|
||||
|
@ -51,8 +51,46 @@ struct MakeUnsigned<vtkm::Int64>
|
||||
};
|
||||
}
|
||||
|
||||
template <typename T, typename... MaybeDevice>
|
||||
class AtomicArrayExecutionObject;
|
||||
|
||||
template <typename T, typename Device>
|
||||
class AtomicArrayExecutionObject
|
||||
class VTKM_DEPRECATED(1.6, "AtomicArrayExecutionObject no longer uses Device template parameter.")
|
||||
AtomicArrayExecutionObject<T, Device> : public AtomicArrayExecutionObject<T>
|
||||
{
|
||||
using Superclass = AtomicArrayExecutionObject<T>;
|
||||
|
||||
public:
|
||||
AtomicArrayExecutionObject() = default;
|
||||
|
||||
// This constructor is deprecated in VTK-m 1.6.
|
||||
VTKM_DEPRECATED(1.6, "AtomicArrayExecutionObject no longer uses Device template parameter.")
|
||||
AtomicArrayExecutionObject(vtkm::cont::ArrayHandle<T> handle)
|
||||
: Superclass(handle, Device{})
|
||||
{
|
||||
}
|
||||
|
||||
VTKM_DEPRECATED(1.6, "AtomicArrayExecutionObject no longer uses Device template parameter.")
|
||||
AtomicArrayExecutionObject(vtkm::cont::ArrayHandle<T> handle, vtkm::cont::Token& token)
|
||||
: Superclass(handle, Device{}, token)
|
||||
{
|
||||
}
|
||||
|
||||
// How does this even work?
|
||||
template <typename PortalType>
|
||||
#ifndef VTKM_MSVC
|
||||
// Some versions of visual studio seem to have a bug that causes an error with the
|
||||
// deprecated attribute at this location.
|
||||
VTKM_DEPRECATED(1.6, "AtomicArrayExecutionObject no longer uses Device template parameter.")
|
||||
#endif
|
||||
AtomicArrayExecutionObject(const PortalType& portal)
|
||||
: Superclass(portal)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
class AtomicArrayExecutionObject<T>
|
||||
{
|
||||
// Checks if PortalType has a GetIteratorBegin() method that returns a
|
||||
// pointer.
|
||||
@ -68,21 +106,25 @@ public:
|
||||
AtomicArrayExecutionObject() = default;
|
||||
|
||||
// This constructor is deprecated in VTK-m 1.6.
|
||||
VTKM_CONT AtomicArrayExecutionObject(vtkm::cont::ArrayHandle<T> handle)
|
||||
: Data{ handle.PrepareForInPlace(Device{}).GetIteratorBegin() }
|
||||
VTKM_CONT VTKM_DEPRECATED(1.6, "AtomicArrayExecutionObject constructor needs token.")
|
||||
AtomicArrayExecutionObject(vtkm::cont::ArrayHandle<T> handle,
|
||||
vtkm::cont::DeviceAdapterId device)
|
||||
: Data{ handle.PrepareForInPlace(device).GetIteratorBegin() }
|
||||
, NumberOfValues{ handle.GetNumberOfValues() }
|
||||
{
|
||||
using PortalType = decltype(handle.PrepareForInPlace(Device{}));
|
||||
using PortalType = decltype(handle.PrepareForInPlace(device));
|
||||
VTKM_STATIC_ASSERT_MSG(HasPointerAccess<PortalType>::value,
|
||||
"Source portal must return a pointer from "
|
||||
"GetIteratorBegin().");
|
||||
}
|
||||
|
||||
VTKM_CONT AtomicArrayExecutionObject(vtkm::cont::ArrayHandle<T> handle, vtkm::cont::Token& token)
|
||||
: Data{ handle.PrepareForInPlace(Device{}, token).GetIteratorBegin() }
|
||||
VTKM_CONT AtomicArrayExecutionObject(vtkm::cont::ArrayHandle<T> handle,
|
||||
vtkm::cont::DeviceAdapterId device,
|
||||
vtkm::cont::Token& token)
|
||||
: Data{ handle.PrepareForInPlace(device, token).GetIteratorBegin() }
|
||||
, NumberOfValues{ handle.GetNumberOfValues() }
|
||||
{
|
||||
using PortalType = decltype(handle.PrepareForInPlace(Device{}, token));
|
||||
using PortalType = decltype(handle.PrepareForInPlace(device, token));
|
||||
VTKM_STATIC_ASSERT_MSG(HasPointerAccess<PortalType>::value,
|
||||
"Source portal must return a pointer from "
|
||||
"GetIteratorBegin().");
|
||||
@ -173,7 +215,7 @@ public:
|
||||
/// an atomic multiplication may be implemented using compare-exchange as follows:
|
||||
///
|
||||
/// ```cpp
|
||||
/// AtomicArrayExecutionObject<vtkm::Int32, ...> atomicArray = ...;
|
||||
/// AtomicArrayExecutionObject<vtkm::Int32> atomicArray = ...;
|
||||
///
|
||||
/// // Compare-exchange multiplication:
|
||||
/// vtkm::Int32 current = atomicArray.Get(idx); // Load the current value at idx
|
||||
|
@ -147,8 +147,7 @@ template <typename DeviceTag>
|
||||
class EdgePlotter : public vtkm::worklet::WorkletMapField
|
||||
{
|
||||
public:
|
||||
using AtomicPackedFrameBufferHandle =
|
||||
vtkm::exec::AtomicArrayExecutionObject<vtkm::Int64, DeviceTag>;
|
||||
using AtomicPackedFrameBufferHandle = vtkm::exec::AtomicArrayExecutionObject<vtkm::Int64>;
|
||||
using AtomicPackedFrameBuffer = vtkm::cont::AtomicArray<vtkm::Int64>;
|
||||
|
||||
using ControlSignature = void(FieldIn, WholeArrayIn, WholeArrayIn);
|
||||
|
Loading…
Reference in New Issue
Block a user