VTK-m  2.1
Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
vtkm::cont::BitField Class Reference

#include <BitField.h>

Classes

struct  ExecutionTypes
 

Public Types

using WritePortalType = detail::BitPortal
 The BitPortal used in the control environment. More...
 
using ReadPortalType = detail::BitPortalConst
 A read-only BitPortal used in the control environment. More...
 
using WordTypePreferred = vtkm::AtomicTypePreferred
 
template<typename WordType >
using IsValidWordType = detail::BitFieldTraits::IsValidWordType< WordType >
 Check whether a word type is valid for non-atomic operations. More...
 
template<typename WordType , typename Device = void>
using IsValidWordTypeAtomic = detail::BitFieldTraits::IsValidWordTypeAtomic< WordType >
 Check whether a word type is valid for atomic operations. More...
 

Public Member Functions

 BitField ()
 
 BitField (const BitField &)=default
 
 BitField (BitField &&) noexcept=default
 
 ~BitField ()=default
 
BitFieldoperator= (const BitField &)=default
 
BitFieldoperator= (BitField &&) noexcept=default
 
bool operator== (const BitField &rhs) const
 
bool operator!= (const BitField &rhs) const
 
vtkm::cont::internal::Buffer GetBuffer () const
 Return the internal Buffer used to store the BitField. More...
 
vtkm::Id GetNumberOfBits () const
 Return the number of bits stored by this BitField. More...
 
template<typename WordType >
vtkm::Id GetNumberOfWords () const
 Return the number of words (of WordType) stored in this bit fields. More...
 
void Allocate (vtkm::Id numberOfBits, vtkm::CopyFlag preserve, vtkm::cont::Token &token) const
 Allocate the requested number of bits. More...
 
void Allocate (vtkm::Id numberOfBits, vtkm::CopyFlag preserve=vtkm::CopyFlag::Off) const
 Allocate the requested number of bits. More...
 
template<typename ValueType >
void AllocateAndFill (vtkm::Id numberOfBits, ValueType value, vtkm::cont::Token &token) const
 Allocate the requested number of bits and fill with the requested bit or word. More...
 
template<typename ValueType >
void AllocateAndFill (vtkm::Id numberOfBits, ValueType value) const
 
template<typename WordType >
void Fill (WordType word, vtkm::cont::Token &token) const
 Set subsequent words to the given word of bits. More...
 
template<typename WordType >
void Fill (WordType word) const
 
void Fill (bool value, vtkm::cont::Token &token) const
 Set all the bits to the given value. More...
 
void Fill (bool value) const
 
void ReleaseResourcesExecution ()
 Release all execution-side resources held by this BitField. More...
 
void ReleaseResources ()
 Release all resources held by this BitField and reset to empty. More...
 
void SyncControlArray () const
 Force the control array to sync with the last-used device. More...
 
bool IsOnDevice (vtkm::cont::DeviceAdapterId device) const
 Returns true if the BitField's data is on the given device. More...
 
bool IsOnHost () const
 Returns true if the BitField's data is on the host. More...
 
WritePortalType WritePortal () const
 Get a portal to the data that is usable from the control environment. More...
 
ReadPortalType ReadPortal () const
 Get a read-only portal to the data that is usable from the control environment. More...
 
ReadPortalType PrepareForInput (vtkm::cont::DeviceAdapterId device, vtkm::cont::Token &token) const
 Prepares this BitField to be used as an input to an operation in the execution environment. More...
 
WritePortalType PrepareForOutput (vtkm::Id numBits, vtkm::cont::DeviceAdapterId device, vtkm::cont::Token &token) const
 Prepares (allocates) this BitField to be used as an output from an operation in the execution environment. More...
 
WritePortalType PrepareForInPlace (vtkm::cont::DeviceAdapterId device, vtkm::cont::Token &token) const
 Prepares this BitField to be used in an in-place operation (both as input and output) in the execution environment. More...
 

Private Member Functions

void FillImpl (const void *word, vtkm::BufferSizeType wordSize, vtkm::cont::Token &token) const
 

Private Attributes

vtkm::cont::internal::Buffer Buffer
 

Static Private Attributes

static constexpr vtkm::Id BlockSize = detail::BitFieldTraits::BlockSize
 

Member Typedef Documentation

◆ IsValidWordType

template<typename WordType >
using vtkm::cont::BitField::IsValidWordType = detail::BitFieldTraits::IsValidWordType<WordType>

Check whether a word type is valid for non-atomic operations.

◆ IsValidWordTypeAtomic

template<typename WordType , typename Device = void>
using vtkm::cont::BitField::IsValidWordTypeAtomic = detail::BitFieldTraits::IsValidWordTypeAtomic<WordType>

Check whether a word type is valid for atomic operations.

◆ ReadPortalType

using vtkm::cont::BitField::ReadPortalType = detail::BitPortalConst

A read-only BitPortal used in the control environment.

◆ WordTypePreferred

◆ WritePortalType

using vtkm::cont::BitField::WritePortalType = detail::BitPortal

The BitPortal used in the control environment.

Constructor & Destructor Documentation

◆ BitField() [1/3]

vtkm::cont::BitField::BitField ( )

◆ BitField() [2/3]

vtkm::cont::BitField::BitField ( const BitField )
default

◆ BitField() [3/3]

vtkm::cont::BitField::BitField ( BitField &&  )
defaultnoexcept

◆ ~BitField()

vtkm::cont::BitField::~BitField ( )
default

Member Function Documentation

◆ Allocate() [1/2]

void vtkm::cont::BitField::Allocate ( vtkm::Id  numberOfBits,
vtkm::CopyFlag  preserve,
vtkm::cont::Token token 
) const

Allocate the requested number of bits.

◆ Allocate() [2/2]

void vtkm::cont::BitField::Allocate ( vtkm::Id  numberOfBits,
vtkm::CopyFlag  preserve = vtkm::CopyFlag::Off 
) const
inline

Allocate the requested number of bits.

◆ AllocateAndFill() [1/2]

template<typename ValueType >
void vtkm::cont::BitField::AllocateAndFill ( vtkm::Id  numberOfBits,
ValueType  value 
) const
inline

◆ AllocateAndFill() [2/2]

template<typename ValueType >
void vtkm::cont::BitField::AllocateAndFill ( vtkm::Id  numberOfBits,
ValueType  value,
vtkm::cont::Token token 
) const
inline

Allocate the requested number of bits and fill with the requested bit or word.

◆ Fill() [1/4]

void vtkm::cont::BitField::Fill ( bool  value) const
inline

◆ Fill() [2/4]

void vtkm::cont::BitField::Fill ( bool  value,
vtkm::cont::Token token 
) const
inline

Set all the bits to the given value.

◆ Fill() [3/4]

template<typename WordType >
void vtkm::cont::BitField::Fill ( WordType  word) const
inline

◆ Fill() [4/4]

template<typename WordType >
void vtkm::cont::BitField::Fill ( WordType  word,
vtkm::cont::Token token 
) const
inline

Set subsequent words to the given word of bits.

◆ FillImpl()

void vtkm::cont::BitField::FillImpl ( const void *  word,
vtkm::BufferSizeType  wordSize,
vtkm::cont::Token token 
) const
private

◆ GetBuffer()

vtkm::cont::internal::Buffer vtkm::cont::BitField::GetBuffer ( ) const
inline

Return the internal Buffer used to store the BitField.

◆ GetNumberOfBits()

vtkm::Id vtkm::cont::BitField::GetNumberOfBits ( ) const

Return the number of bits stored by this BitField.

◆ GetNumberOfWords()

template<typename WordType >
vtkm::Id vtkm::cont::BitField::GetNumberOfWords ( ) const
inline

Return the number of words (of WordType) stored in this bit fields.

◆ IsOnDevice()

bool vtkm::cont::BitField::IsOnDevice ( vtkm::cont::DeviceAdapterId  device) const

Returns true if the BitField's data is on the given device.

If the data are on the given device, then preparing for that device should not require any data movement.

◆ IsOnHost()

bool vtkm::cont::BitField::IsOnHost ( ) const
inline

Returns true if the BitField's data is on the host.

If the data are on the given device, then calling ReadPortal or WritePortal should not require any data movement.

◆ operator!=()

bool vtkm::cont::BitField::operator!= ( const BitField rhs) const
inline

◆ operator=() [1/2]

BitField& vtkm::cont::BitField::operator= ( BitField &&  )
defaultnoexcept

◆ operator=() [2/2]

BitField& vtkm::cont::BitField::operator= ( const BitField )
default

◆ operator==()

bool vtkm::cont::BitField::operator== ( const BitField rhs) const
inline

◆ PrepareForInPlace()

WritePortalType vtkm::cont::BitField::PrepareForInPlace ( vtkm::cont::DeviceAdapterId  device,
vtkm::cont::Token token 
) const

Prepares this BitField to be used in an in-place operation (both as input and output) in the execution environment.

If necessary, copies data to the execution environment. Can throw an exception if this BitField does not yet contain any data. Returns a portal that can be used in code running in the execution environment.

◆ PrepareForInput()

ReadPortalType vtkm::cont::BitField::PrepareForInput ( vtkm::cont::DeviceAdapterId  device,
vtkm::cont::Token token 
) const

Prepares this BitField to be used as an input to an operation in the execution environment.

If necessary, copies data to the execution environment. Can throw an exception if this BitField does not yet contain any data. Returns a portal that can be used in code running in the execution environment.

◆ PrepareForOutput()

WritePortalType vtkm::cont::BitField::PrepareForOutput ( vtkm::Id  numBits,
vtkm::cont::DeviceAdapterId  device,
vtkm::cont::Token token 
) const

Prepares (allocates) this BitField to be used as an output from an operation in the execution environment.

The internal state of this class is set to have valid data in the execution BitField with the assumption that the array will be filled soon (i.e. before any other methods of this object are called). Returns a portal that can be used in code running in the execution environment.

◆ ReadPortal()

ReadPortalType vtkm::cont::BitField::ReadPortal ( ) const

Get a read-only portal to the data that is usable from the control environment.

As long as this portal is in scope, no one else will be able to write in the BitField.

◆ ReleaseResources()

void vtkm::cont::BitField::ReleaseResources ( )

Release all resources held by this BitField and reset to empty.

◆ ReleaseResourcesExecution()

void vtkm::cont::BitField::ReleaseResourcesExecution ( )

Release all execution-side resources held by this BitField.

◆ SyncControlArray()

void vtkm::cont::BitField::SyncControlArray ( ) const

Force the control array to sync with the last-used device.

◆ WritePortal()

WritePortalType vtkm::cont::BitField::WritePortal ( ) const

Get a portal to the data that is usable from the control environment.

As long as this portal is in scope, no one else will be able to read or write the BitField.

Member Data Documentation

◆ BlockSize

constexpr vtkm::Id vtkm::cont::BitField::BlockSize = detail::BitFieldTraits::BlockSize
staticconstexprprivate

◆ Buffer

vtkm::cont::internal::Buffer vtkm::cont::BitField::Buffer
mutableprivate

The documentation for this class was generated from the following file: