Bitset#
Header file: <Kokkos_Bitset.hpp>
Class Interface#
-
template<typename Device>
class Bitset# Kokkos::Bitsetrepresents a thread safe view to a fixed-size (at run-time) sequence of N bits.- Template Parameters:
Device – Device that physically contains the bits.
Static Constants
-
static constexpr unsigned BIT_SCAN_REVERSE = 1u#
BIT_SCAN_REVERSE: Bit mask for scanning direction
-
static constexpr unsigned MOVE_HINT_BACKWARD = 2u#
MOVE_HINT_BACKWARD: Bit mask for hint direction
-
static constexpr unsigned BIT_SCAN_FORWARD_MOVE_HINT_FORWARD = 0u#
BIT_SCAN_FORWARD_MOVE_HINT_FORWARD: When passed asscan_directiontofind_any_set_near(...)orfind_any_reset_near(...), scans for the bit in the forward (increasing index) direction. If the bit was not found, selects a new hint past the current hint.
-
static constexpr unsigned BIT_SCAN_REVERSE_MOVE_HINT_FORWARD = BIT_SCAN_REVERSE#
BIT_SCAN_REVERSE_MOVE_HINT_FORWARD: When passed asscan_directiontofind_any_set_near(...)orfind_any_reset_near(...), scans for the bit in the reverse (decreasing index) direction. If the bit was not found, selects a new hint past the current hint.
-
static constexpr unsigned BIT_SCAN_FORWARD_MOVE_HINT_BACKWARD = MOVE_HINT_BACKWARD#
BIT_SCAN_FORWARD_MOVE_HINT_BACKWARD: When passed asscan_directiontofind_any_set_near(...)orfind_any_reset_near(...), scans for the bit in the forward (increasing index) direction. If the bit was not found, selects a new hint before the current hint.
-
static constexpr unsigned BIT_SCAN_REVERSE_MOVE_HINT_BACKWARD = BIT_SCAN_REVERSE | MOVE_HINT_BACKWARD#
BIT_SCAN_REVERSE_MOVE_HINT_BACKWARD: When passed asscan_directiontofind_any_set_near(...)orfind_any_reset_near(...), scans for the bit in the reverse (decreasing index) direction. If the bit was not found, selects a new hint before the current hint.
Constructors
-
Bitset(unsigned arg_size = 0u)#
Host/Device: Construct a bitset with
arg_sizebits.
Data Access Functions
-
unsigned size() const#
Host/Device: return the number of bits.
-
unsigned count() const#
Host: return the number of bits which are set to
1.
-
void set()#
Host: set all the bits to
1.
-
void reset();#
-
void clear();#
Host/Device: set all the bits to
0.
-
void set(unsigned i)#
Device: set the
i‘th bit to1.
-
void reset(unsigned i)#
Device: set the
i‘th bit to0.
-
bool test(unsigned i) const#
Device: return
trueif and only if thei‘th bit is set to1.
-
unsigned max_hint() const#
Host/Device: used with
find_any_set_near(...)&find_any_reset_near(...)functions.Returns the max number of times those functions should be call when searching for an available bit.
-
Kokkos::pair<bool, unsigned> find_any_set_near(unsigned hint, unsigned scan_direction = BIT_SCAN_FORWARD_MOVE_HINT_FORWARD) const#
Host/Device: starting at the
hintposition, find the first bit set to1.Returns a
pair<bool, unsigned>.When
result.firstistruethenresult.secondis the bit position found.When
result.firstisfalsethenresult.secondis a new hint position.If
scan_direction & BIT_SCAN_REVERSE, then the scanning for the bit happens in decreasing index order; otherwise, it happens in increasing index order.If
scan_direction & MOVE_HINT_BACKWARDS, then the new hint position occurs at a smaller index thanhint; otherwise, it occurs at a larger index thanhint.
-
Kokkos::pair<bool, unsigned> find_any_unset_near(unsigned hint, unsigned scan_direction = BIT_SCAN_FORWARD_MOVE_HINT_FORWARD) const;#
Host/Device: starting at the
hintposition, find the first bit set to0.Returns a
pair<bool, unsigned>.When
result.firstistruethenresult.secondis the bit position found.When
result.firstisfalsethenresult.secondis a new hint position.If
scan_direction & BIT_SCAN_REVERSE, then the scanning for the bit happens in decreasing index order; otherwise, it happens in increasing index order.If
scan_direction & MOVE_HINT_BACKWARDS, then the new hint position occurs at a smaller index thanhint; otherwise, it occurs at a larger index thanhint.
-
constexpr bool is_allocated() const#
Host/Device: the bits are allocated on the device.
ConstBitset#
Class Interface#
-
template<typename Device>
class ConstBitset# - Template Parameters:
Device – Device that physically contains the bits.
Constructors / assignment
-
ConstBitset()#
Host/Device: Construct a bitset with no bits.
-
ConstBitset(ConstBitset const &rhs) = default#
-
ConstBitset &operator=(ConstBitset const &rhs) = default#
Copy constructor/assignment operator.
-
ConstBitset &operator=(Bitset<Device> const &rhs)#
Host/Device: Copy/assign a
Bitsetto aConstBitset.
-
unsigned size() const#
Host/Device: return the number of bits.
-
unsigned count() const#
Host/Device: return the number of bits which are set to
1.
-
bool test(unsigned i) const#
Host/Device: Return
trueif and only if thei‘th bit set to1.
Non-Member Functions#
- template<typename DstDevice, typename SrcDevice>
void deep_copy(Bitset<DstDevice> &dst, Bitset<SrcDevice> const &src)#Copy a
BitsetfromsrconSrcDevicetodstonDstDevice.
- template<typename DstDevice, typename SrcDevice>
void deep_copy(Bitset<DstDevice> &dst, ConstBitset<SrcDevice> const &src)#Copy a
ConstBitsetfromsrconSrcDeviceto aBitsetdstonDstDevice.