53 #ifndef ROCRAND_THREEFRY4X32_20_H_ 
   54 #define ROCRAND_THREEFRY4X32_20_H_ 
   56 #include "rocrand/rocrand_threefry4_impl.h" 
   58 #include <hip/hip_runtime.h> 
   60 namespace rocrand_device
 
   63 class threefry4x32_20_engine : 
public threefry_engine4_base<uint4, unsigned int, 20>
 
   66     ROCRAND_DEPRECATED(
"Alias \"threefry4x32_20_state\" is deprecated. Use \"state_type\" instead.")
 
   67     typedef threefry_engine4_base<uint4, 
unsigned int, 20>::threefry_state_4 threefry4x32_20_state;
 
   74     __forceinline__ __device__ __host__ threefry4x32_20_engine(const 
unsigned long long seed = 0,
 
   75                                                                const 
unsigned long long subsequence
 
   77                                                                const 
unsigned long long offset = 0)
 
   79         this->seed(seed, subsequence, offset);
 
   87     __forceinline__ __device__ __host__ 
void seed(
const unsigned long long seed        = 0,
 
   88                                                   const unsigned long long subsequence = 0,
 
   89                                                   const unsigned long long offset      = 0)
 
   91         m_state.counter  = {0U, 0U, 0U, 0U};
 
   92         m_state.result   = {0U, 0U, 0U, 0U};
 
   95         m_state.key = {
static_cast<unsigned int>(seed),
 
   96                        static_cast<unsigned int>(seed >> 16),
 
   97                        static_cast<unsigned int>(seed >> 32),
 
   98                        static_cast<unsigned int>(seed >> 48)};
 
  100         this->discard_subsequence_impl(subsequence);
 
  101         this->discard(offset);
 
  102         m_state.result = this->threefry_rounds(m_state.counter, m_state.key);
 
  108 typedef rocrand_device::threefry4x32_20_engine rocrand_state_threefry4x32_20;
 
  121 __forceinline__ __device__ __host__
 
  123                   const unsigned long long       subsequence,
 
  124                   const unsigned long long       offset,
 
  125                   rocrand_state_threefry4x32_20* state)
 
  127     *state = rocrand_state_threefry4x32_20(seed, subsequence, offset);
 
  144 __forceinline__ __device__ __host__
 
  145 unsigned int rocrand(rocrand_state_threefry4x32_20* state)
 
  147     return state->next();
 
  162 __forceinline__ __device__ __host__
 
  163 uint4 
rocrand4(rocrand_state_threefry4x32_20* state)
 
  165     return state->next4();
 
__forceinline__ __device__ __host__ void rocrand_init(const uint4 seed, const unsigned int subsequence, rocrand_state_lfsr113 *state)
Initializes LFSR113 state.
Definition: rocrand_lfsr113.h:239
 
__forceinline__ __device__ __host__ uint4 rocrand4(rocrand_state_philox4x32_10 *state)
Returns four uniformly distributed random unsigned int values from [0; 2^32 - 1] range.
Definition: rocrand_philox4x32_10.h:379
 
__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:277