25 template<
typename T_Params,
typename T_Impl>
37 template<
typename TDistributionResultScalar>
51 template<
typename T, auto N>
77 constexpr void skip4(uint64_t offset)
79 Counter& counter = this->state.counter;
82 counter[1] +=
high32Bits(offset) + (counter[0] < temp[0] ? 1 : 0);
83 counter[2] += (counter[0] < temp[1] ? 1u : 0u);
84 counter[3] += (counter[0] < temp[2] ? 1u : 0u);
95 Counter& counter = this->state.counter;
98 counter[3] +=
high32Bits(subsequence) + (counter[2] < temp[2] ? 1 : 0);
typename PhiloxStateless< T_Params >::Counter Counter
typename PhiloxStateless< T_Params >::Key Key
PhiloxState< Counter, Key, T_Impl > State
State type.
constexpr void skip4(uint64_t offset)
Advance the internal state counter by offset N-vectors (N = counter size).
constexpr PhiloxBaseCommon(State &&state)
Vec< TDistributionResultScalar, T_Params::counterSize > ResultContainer
Distribution container type.
constexpr void skipSubsequence(uint64_t subsequence)
Advance the counter by the length of subsequence.
static constexpr void advanceCounter(alpaka::Vec< T, N > &counter)
Advance the counter to the next state.
Class basic Philox family counter-based PRNG.
alpaka::Vec< std::uint32_t, T_Params::counterSize/2 > Key
alpaka::Vec< std::uint32_t, T_Params::counterSize > Counter
constexpr auto low32Bits(std::uint64_t const x) -> std::uint32_t
Get low 32 bits of a 64-bit number.
constexpr auto high32Bits(std::uint64_t const x) -> std::uint32_t
Get high 32 bits of a 64-bit number.