VTK-m
2.0
|
An ArrayHandle
that provides a source of random bits.
More...
#include <ArrayHandleRandomUniformBits.h>
Public Types | |
using | SeedType = vtkm::Vec< vtkm::UInt32, 1 > |
Public Types inherited from vtkm::cont::ArrayHandle< T, StorageTag_ > | |
using | ValueType = T |
using | StorageTag = StorageTag_ |
using | StorageType = vtkm::cont::internal::Storage< ValueType, StorageTag > |
using | ReadPortalType = typename StorageType::ReadPortalType |
using | WritePortalType = typename StorageType::WritePortalType |
Public Member Functions | |
VTKM_ARRAY_HANDLE_SUBCLASS_NT (ArrayHandleRandomUniformBits,(vtkm::cont::ArrayHandleImplicit< detail::PhiloxFunctor >)) | |
ArrayHandleRandomUniformBits (vtkm::Id length, SeedType seed={ std::random_device{}() }) | |
The type of seed is specifically designed to be an vtkm::Vec<> to provide type safety for the parameters so user will not transpose two integer parameters. More... | |
Public Member Functions inherited from vtkm::cont::ArrayHandle< T, 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< ValueType, StorageTag > &rhs) const |
template<typename VT , typename ST > | |
VTKM_CONT bool | operator== (const ArrayHandle< VT, ST > &) const |
template<typename VT , typename ST > | |
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... | |
Additional Inherited Members | |
Protected Member Functions inherited from vtkm::cont::ArrayHandle< T, StorageTag_ > | |
VTKM_CONT void | SetBuffer (vtkm::IdComponent index, const vtkm::cont::internal::Buffer &buffer) |
VTKM_CONT void | SetBuffers (const std::vector< vtkm::cont::internal::Buffer > &buffers) |
VTKM_CONT void | SetBuffers (std::vector< vtkm::cont::internal::Buffer > &&buffers) |
An ArrayHandle
that provides a source of random bits.
ArrayHandleRandomUniformBits
is a specialization of ArrayHandleImplicit. It takes a user supplied seed and hash it with the a given index value. The hashed value is the value of the array at that position.
Currently, Philox2x32x10 as described in the "Parallel Random Numbers: As Easy as 1, 2, 3," Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis (SC11) is used as the hash function.
Note: In contrast to traditional random number generator, ArrayHandleRandomUniformBits does not have "state", i.e. multiple calls the Get() method with the same index will always return the same hash value. To ge a new set of random bits, create a new ArrayHandleRandomUniformBits with a different seed.
|
inlineexplicit |
The type of seed is specifically designed to be an vtkm::Vec<> to provide type safety for the parameters so user will not transpose two integer parameters.
vtkm::cont::ArrayHandleRandomUniformBits::VTKM_ARRAY_HANDLE_SUBCLASS_NT | ( | ArrayHandleRandomUniformBits | , |
(vtkm::cont::ArrayHandleImplicit< detail::PhiloxFunctor >) | |||
) |