|
| ArrayHandleGroupVecVariable () |
|
VTKM_CONT | ArrayHandleGroupVecVariable (const Thisclass &src) |
|
VTKM_CONT | ArrayHandleGroupVecVariable (Thisclass &&src) noexcept |
|
VTKM_CONT | ArrayHandleGroupVecVariable (const vtkm::cont::ArrayHandle< typename Superclass::ValueType, typename Superclass::StorageTag > &src) |
|
VTKM_CONT | ArrayHandleGroupVecVariable (vtkm::cont::ArrayHandle< typename Superclass::ValueType, typename Superclass::StorageTag > &&src) noexcept |
|
VTKM_CONT | ArrayHandleGroupVecVariable (const std::vector< vtkm::cont::internal::Buffer > &buffers) |
|
VTKM_CONT | ArrayHandleGroupVecVariable (std::vector< vtkm::cont::internal::Buffer > &&buffers) noexcept |
|
VTKM_CONT Thisclass & | operator= (const Thisclass &src) |
|
VTKM_CONT Thisclass & | operator= (Thisclass &&src) noexcept |
|
| ArrayHandleGroupVecVariable (const ComponentsArrayHandleType &componentsArray, const OffsetsArrayHandleType &offsetsArray) |
| Construct an ArrayHandleGroupVecVariable More...
|
|
ComponentsArrayHandleType | GetComponentsArray () const |
| Return the components array providing the data for the grouped vec array. More...
|
|
OffsetsArrayHandleType | GetOffsetsArray () const |
| Return the offsets array defining the locations and sizes of each value. More...
|
|
Public Member Functions inherited from vtkm::cont::ArrayHandle< vtkm::VecFromPortal< ComponentsArrayHandleType::WritePortalType >, vtkm::cont::StorageTagGroupVecVariable< ComponentsArrayHandleType::StorageTag, OffsetsArrayHandleType::StorageTag > > |
| ArrayHandle () |
| Constructs an empty ArrayHandle. More...
|
|
| ArrayHandle (const vtkm::cont::ArrayHandle< ValueType, StorageTag > &src) |
| Copy constructor. More...
|
|
| ArrayHandle (vtkm::cont::ArrayHandle< ValueType, StorageTag > &&src) noexcept |
| Move constructor. More...
|
|
| ArrayHandle (const std::vector< vtkm::cont::internal::Buffer > &buffers) |
| Special constructor for subclass specializations that need to set the initial state array. More...
|
|
| ArrayHandle (std::vector< vtkm::cont::internal::Buffer > &&buffers) noexcept |
| Special constructor for subclass specializations that need to set the initial state array. More...
|
|
| ~ArrayHandle () |
| Destructs an empty ArrayHandle. More...
|
|
vtkm::cont::ArrayHandle< ValueType, StorageTag > & | operator= (const vtkm::cont::ArrayHandle< ValueType, StorageTag > &src) |
| Shallow copies an ArrayHandle. More...
|
|
vtkm::cont::ArrayHandle< ValueType, StorageTag > & | operator= (vtkm::cont::ArrayHandle< ValueType, StorageTag > &&src) noexcept |
| Move and Assignment of an ArrayHandle. More...
|
|
bool | operator== (const ArrayHandle< ValueType, StorageTag > &rhs) const |
| Like a pointer, two ArrayHandle s are considered equal if they point to the same location in memory. More...
|
|
bool | operator== (const ArrayHandle< VT, ST > &) const |
|
bool | operator!= (const ArrayHandle< ValueType, StorageTag > &rhs) const |
|
bool | operator!= (const ArrayHandle< VT, ST > &) const |
|
StorageType | GetStorage () const |
| Get the storage. More...
|
|
ReadPortalType | ReadPortal () const |
| Get an array portal that can be used in the control environment. More...
|
|
ReadPortalType | ReadPortal (vtkm::cont::Token &token) const |
| The type of portal used when accessing data in a read-only mode. More...
|
|
WritePortalType | WritePortal () const |
| Get an array portal that can be used in the control environment. More...
|
|
WritePortalType | WritePortal (vtkm::cont::Token &token) const |
| Get an array portal that can be used in the control environment. More...
|
|
vtkm::Id | GetNumberOfValues () const |
| Returns the number of entries in the array. More...
|
|
vtkm::IdComponent | GetNumberOfComponentsFlat () const |
| Returns the total number of components for each value in the array. More...
|
|
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...
|
|
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...
|
|
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...
|
|
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...
|
|
void | Fill (const ValueType &fillValue, vtkm::Id startIndex, vtkm::Id endIndex, vtkm::cont::Token &token) const |
| Fills the array with a given value. More...
|
|
void | Fill (const ValueType &fillValue, vtkm::Id startIndex, vtkm::Id endIndex) const |
| Fills the array with a given value. More...
|
|
void | Fill (const ValueType &fillValue, vtkm::Id startIndex=0) const |
| Fills the array with a given value. More...
|
|
void | ReleaseResourcesExecution () const |
| Releases any resources being used in the execution environment (that are not being shared by the control environment). More...
|
|
void | ReleaseResources () const |
| Releases all resources in both the control and execution environments. More...
|
|
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...
|
|
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...
|
|
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...
|
|
bool | IsOnDevice (vtkm::cont::DeviceAdapterId device) const |
| Returns true if the ArrayHandle's data is on the given device. More...
|
|
bool | IsOnHost () const |
| Returns true if the ArrayHandle's data is on the host. More...
|
|
void | SyncControlArray () const |
| Synchronizes the control array with the execution array. More...
|
|
void | Enqueue (const vtkm::cont::Token &token) const |
| Enqueue a token for access to this ArrayHandle. More...
|
|
void | DeepCopyFrom (const vtkm::cont::ArrayHandle< ValueType, StorageTag > &source) const |
| Deep copies the data in the array. More...
|
|
const std::vector< vtkm::cont::internal::Buffer > & | GetBuffers () const |
| Returns the internal Buffer structures that hold the data. More...
|
|
std::vector< vtkm::cont::internal::Buffer > & | GetBuffers () |
|
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 vtkm::cont::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 vtkm::Vec
of a different length. This fancy 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 caution should be used with ArrayHandleRuntimeVec
because the size of the vtkm::Vec
values is not known at compile time. Thus, the value type of this array is forced to a special vtkm::VecFromPortal
class that can cause surprises if treated as a vtkm::Vec
. In particular, the static NUM_COMPONENTS
expression does not exist. Furthermore, new variables of type vtkm::VecFromPortal
cannot be created. This means that simple operators like +
will not work because they require an intermediate object to be created. (Equal operators like +=
do work because they are given an existing variable to place the output.)
The offsets array is often derived from a list of sizes for each of the entries. You can use the convenience function vtkm::cont::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
.