15 : seed(reinterpret_cast<const uint2&>(seed_))
18 ull2* tmp =
reinterpret_cast<ull2*
>(&counter);
25 uint4 counter_ = counter;
26 ull2* tmp =
reinterpret_cast<ull2*
>(&counter_);
32 for(
int i = 0; i < 6; i++)
34 counter_ = philox_single_round(counter_, key_);
38 uint4 output = philox_single_round(counter_, key_);
43 const unsigned long long subsequence)
const
48 uint32_t* out_tmp =
reinterpret_cast<uint32_t*
>(&out[0]);
50 out_tmp[0] = tmp_ph.x;
51 out_tmp[1] = tmp_ph.y;
52 out_tmp[2] = tmp_ph.z;
53 out_tmp[3] = tmp_ph.w;
57 const unsigned long long subsequence,
68 uint32_t* out_tmp =
reinterpret_cast<uint32_t*
>(&out[0]);
69 out_tmp[0] = tmp[start_idx];
70 out_tmp[1] = tmp[start_idx + 2];
74 const unsigned long long subsequence,
85 uint32_t* out_tmp =
reinterpret_cast<uint32_t*
>(&out[0]);
86 out_tmp[0] = tmp[start_idx];
101 unsigned long long tmp;
102 tmp =
static_cast<unsigned long long>(a) * b;
103 res =
reinterpret_cast<uint2*
>(&tmp);
110 uint2 res0 = mulhilo32(kPhiloxSA, ctr.x);
111 uint2 res1 = mulhilo32(kPhiloxSB, ctr.z);
112 uint4 ret = {res1.y ^ ctr.y ^ key.x, res1.x, res0.y ^ ctr.w ^ key.y, res0.x};
116 static const unsigned long kPhilox10A = 0x9E3779B9;
117 static const unsigned long kPhilox10B = 0xBB67AE85;
118 static const unsigned long kPhiloxSA = 0xD2511F53;
119 static const unsigned long kPhiloxSB = 0xCD9E8D57;
Definition: philox_rand.hpp:12
CK_TILE_HOST_DEVICE uint4 get_philox_4x32(const unsigned long long subsequence) const
Definition: philox_rand.hpp:22
CK_TILE_HOST_DEVICE philox(unsigned long long seed_, unsigned long long offset_)
Definition: philox_rand.hpp:14
CK_TILE_HOST_DEVICE void get_random_16x8(uint8_t *out, const unsigned long long subsequence) const
Definition: philox_rand.hpp:42
CK_TILE_HOST_DEVICE void get_random_8x8(uint8_t *out, const unsigned long long subsequence, const index_t start_idx) const
Definition: philox_rand.hpp:56
CK_TILE_HOST_DEVICE void get_random_4x8(uint8_t *out, const unsigned long long subsequence, const index_t start_idx) const
Definition: philox_rand.hpp:73
#define CK_TILE_HOST_DEVICE
Definition: config.hpp:41
Definition: cluster_descriptor.hpp:13
int32_t index_t
Definition: integer.hpp:9
uint32_t uint32x4_t
Definition: vector_type.hpp:123