|
| VTKM_ARRAY_HANDLE_SUBCLASS (ArrayHandleGroupVecVariable,(ArrayHandleGroupVecVariable< ComponentsArrayHandleType, OffsetsArrayHandleType >),(vtkm::cont::ArrayHandle< vtkm::VecFromPortal< typename ComponentsArrayHandleType::WritePortalType >, vtkm::cont::StorageTagGroupVecVariable< typename ComponentsArrayHandleType::StorageTag, typename OffsetsArrayHandleType::StorageTag >>)) |
|
VTKM_CONT | ArrayHandleGroupVecVariable (const ComponentsArrayHandleType &componentsArray, const OffsetsArrayHandleType &offsetsArray) |
|
VTKM_CONT ComponentsArrayHandleType | GetComponentsArray () const |
|
VTKM_CONT OffsetsArrayHandleType | GetOffsetsArray () const |
|
Public Member Functions inherited from vtkm::cont::ArrayHandle< vtkm::VecFromPortal< ComponentsArrayHandleType::WritePortalType >, vtkm::cont::StorageTagGroupVecVariable< ComponentsArrayHandleType::StorageTag, OffsetsArrayHandleType::StorageTag > > |
VTKM_CONT | ArrayHandle () |
| Constructs an empty ArrayHandle. More...
|
|
VTKM_CONT | ArrayHandle (const vtkm::cont::ArrayHandle< ValueType, StorageTag > &src) |
| Copy constructor. More...
|
|
VTKM_CONT | ArrayHandle (vtkm::cont::ArrayHandle< ValueType, StorageTag > &&src) noexcept |
| Move constructor. More...
|
|
VTKM_CONT | ~ArrayHandle () |
| Destructs an empty ArrayHandle. More...
|
|
VTKM_CONT vtkm::cont::ArrayHandle< ValueType, StorageTag > & | operator= (const vtkm::cont::ArrayHandle< ValueType, StorageTag > &src) |
| Copies an ArrayHandle. More...
|
|
VTKM_CONT vtkm::cont::ArrayHandle< ValueType, StorageTag > & | operator= (vtkm::cont::ArrayHandle< ValueType, StorageTag > &&src) noexcept |
| Move and Assignment of an ArrayHandle. More...
|
|
VTKM_CONT bool | operator== (const ArrayHandle< ValueType, StorageTag > &rhs) const |
| Like a pointer, two ArrayHandles are considered equal if they point to the same location in memory. More...
|
|
VTKM_CONT bool | operator== (const ArrayHandle< VT, ST > &) const |
|
VTKM_CONT bool | operator!= (const ArrayHandle< ValueType, StorageTag > &rhs) const |
|
VTKM_CONT bool | operator!= (const ArrayHandle< VT, ST > &) const |
|
VTKM_CONT StorageType | GetStorage () const |
| Get the storage. More...
|
|
VTKM_CONT WritePortalType | WritePortal () const |
| Get an array portal that can be used in the control environment. More...
|
|
VTKM_CONT WritePortalType | WritePortal (vtkm::cont::Token &token) const |
|
VTKM_CONT vtkm::Id | GetNumberOfValues () const |
| Returns the number of entries in the array. More...
|
|
VTKM_CONT void | ReleaseResourcesExecution () const |
| Releases any resources being used in the execution environment (that are not being shared by the control environment). More...
|
|
VTKM_CONT void | ReleaseResources () const |
| Releases all resources in both the control and execution environments. More...
|
|
VTKM_CONT ReadPortalType | PrepareForInput (vtkm::cont::DeviceAdapterId device, vtkm::cont::Token &token) const |
| Prepares this array to be used as an input to an operation in the execution environment. More...
|
|
VTKM_CONT WritePortalType | PrepareForInPlace (vtkm::cont::DeviceAdapterId device, vtkm::cont::Token &token) const |
| Prepares this array to be used in an in-place operation (both as input and output) in the execution environment. More...
|
|
VTKM_CONT WritePortalType | PrepareForOutput (vtkm::Id numberOfValues, vtkm::cont::DeviceAdapterId device, vtkm::cont::Token &token) const |
| Prepares (allocates) this array to be used as an output from an operation in the execution environment. More...
|
|
VTKM_CONT bool | IsOnDevice (vtkm::cont::DeviceAdapterId device) const |
| Returns true if the ArrayHandle's data is on the given device. More...
|
|
VTKM_CONT bool | IsOnHost () const |
| Returns true if the ArrayHandle's data is on the host. More...
|
|
VTKM_CONT void | SyncControlArray () const |
| Synchronizes the control array with the execution array. More...
|
|
VTKM_CONT void | Enqueue (const vtkm::cont::Token &token) const |
| Enqueue a token for access to this ArrayHandle. More...
|
|
VTKM_CONT void | DeepCopyFrom (const vtkm::cont::ArrayHandle< ValueType, StorageTag > &source) const |
| Deep copies the data in the array. More...
|
|
const VTKM_CONT std::vector< vtkm::cont::internal::Buffer > & | GetBuffers () const |
| Returns the internal Buffer structures that hold the data. More...
|
|
VTKM_CONT std::vector< vtkm::cont::internal::Buffer > & | GetBuffers () |
|
VTKM_CONT | ArrayHandle (const std::vector< vtkm::cont::internal::Buffer > &buffers) |
|
VTKM_CONT | ArrayHandle (std::vector< vtkm::cont::internal::Buffer > &&buffers) noexcept |
|
VTKM_CONT ReadPortalType | ReadPortal () const |
| Get an array portal that can be used in the control environment. More...
|
|
VTKM_CONT ReadPortalType | ReadPortal (vtkm::cont::Token &token) const |
| Get an array portal that can be used in the control environment. More...
|
|
VTKM_CONT void | Allocate (vtkm::Id numberOfValues, vtkm::CopyFlag preserve, vtkm::cont::Token &token) const |
| Allocates an array large enough to hold the given number of values. More...
|
|
VTKM_CONT void | Allocate (vtkm::Id numberOfValues, vtkm::CopyFlag preserve=vtkm::CopyFlag::Off) const |
| Allocates an array large enough to hold the given number of values. More...
|
|
VTKM_CONT void | AllocateAndFill (vtkm::Id numberOfValues, const ValueType &fillValue, vtkm::CopyFlag preserve, vtkm::cont::Token &token) const |
| Allocates an array and fills it with an initial value. More...
|
|
VTKM_CONT void | AllocateAndFill (vtkm::Id numberOfValues, const ValueType &fillValue, vtkm::CopyFlag preserve=vtkm::CopyFlag::Off) const |
| Allocates an array and fills it with an initial value. More...
|
|
VTKM_CONT void | Fill (const ValueType &fillValue, vtkm::Id startIndex, vtkm::Id endIndex, vtkm::cont::Token &token) const |
| Fills the array with a given value. More...
|
|
VTKM_CONT void | Fill (const ValueType &fillValue, vtkm::Id startIndex, vtkm::Id endIndex) const |
| Fills the array with a given value. More...
|
|
VTKM_CONT void | Fill (const ValueType &fillValue, vtkm::Id startIndex=0) const |
| Fills the array with a given value. More...
|
|
template<typename ComponentsArrayHandleType, typename OffsetsArrayHandleType>
class vtkm::cont::ArrayHandleGroupVecVariable< ComponentsArrayHandleType, OffsetsArrayHandleType >
Fancy array handle that groups values into vectors of different sizes.
It is sometimes the case that you need to run a worklet with an input or output that has a different number of values per instance. For example, the cells of a CellCetExplicit can have different numbers of points in each cell. If inputting or outputting cells of this type, each instance of the worklet might need a Vec
of a different length. This fance array handle takes an array of values and an array of offsets and groups the consecutive values in Vec-like objects. The values are treated as tightly packed, so that each Vec contains the values from one offset to the next. The last value contains values from the last offset to the end of the array.
For example, if you have an array handle with the 9 values 0,1,2,3,4,5,6,7,8 an offsets array handle with the 4 values 0,4,6,9 and give them to an ArrayHandleGroupVecVariable
, you get an array that looks like it contains three values of Vec-like objects with the data [0,1,2,3], [4,5], and [6,7,8].
Note that this version of ArrayHandle
breaks some of the assumptions about ArrayHandle
a little bit. Typically, there is exactly one type for every value in the array, and this value is also the same between the control and execution environment. However, this class uses VecFromPortal
it implement a Vec-like class that has a variable number of values, and this type can change between control and execution environments.
The offsets array is often derived from a list of sizes for each of the entries. You can use the convenience function ConvertNumComponentsToOffsets
to take an array of sizes (i.e. the number of components for each entry) and get an array of offsets needed for ArrayHandleGroupVecVariable
.