53 #ifndef ROCRAND_THREEFRY2X32_20_H_
54 #define ROCRAND_THREEFRY2X32_20_H_
56 #include "rocrand/rocrand_threefry2_impl.h"
58 namespace rocrand_device
61 class threefry2x32_20_engine :
public threefry_engine2_base<uint2, unsigned int, 20>
64 ROCRAND_DEPRECATED(
"Alias \"threefry2x32_20_state\" is deprecated. Use \"state_type\" instead.")
65 typedef threefry_engine2_base<uint2,
unsigned int, 20>::threefry_state_2 threefry2x32_20_state;
72 __forceinline__ __device__ __host__ threefry2x32_20_engine(const
unsigned long long seed = 0,
73 const
unsigned long long subsequence
75 const
unsigned long long offset = 0)
77 this->seed(seed, subsequence, offset);
85 __forceinline__ __device__ __host__
void seed(
const unsigned long long seed = 0,
86 const unsigned long long subsequence = 0,
87 const unsigned long long offset = 0)
89 m_state.counter = {0U, 0U};
90 m_state.result = {0U, 0U};
93 m_state.key = {
static_cast<unsigned int>(seed),
static_cast<unsigned int>(seed >> 32)};
95 this->discard_subsequence_impl(subsequence);
96 this->discard(offset);
97 m_state.result = this->threefry_rounds(m_state.counter, m_state.key);
104 typedef rocrand_device::threefry2x32_20_engine rocrand_state_threefry2x32_20;
117 __forceinline__ __device__ __host__
void rocrand_init(
const unsigned long long seed,
118 const unsigned long long subsequence,
119 const unsigned long long offset,
120 rocrand_state_threefry2x32_20* state)
122 *state = rocrand_state_threefry2x32_20(seed, subsequence, offset);
139 __forceinline__ __device__ __host__
unsigned int rocrand(rocrand_state_threefry2x32_20* state)
141 return state->next();
156 __forceinline__ __device__ __host__ uint2 rocrand2(rocrand_state_threefry2x32_20* state)
158 return state->next2();
__forceinline__ __device__ __host__ void rocrand_init(const uint4 seed, const unsigned int subsequence, rocrand_state_lfsr113 *state)
Initializes LFSR113 state.
Definition: rocrand_lfsr113.h:238
__forceinline__ __device__ __host__ unsigned int rocrand(rocrand_state_lfsr113 *state)
Returns uniformly distributed random unsigned int value from [0; 2^32 - 1] range.
Definition: rocrand_lfsr113.h:274