28inline void print_vec(std::ostream &ostream, T a);
31inline T next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval);
34inline void print_vec(std::ostream &ostream, sycl::vec<T, 2> a) {
35 ostream <<
"(" << a.x() <<
"," << a.y() <<
")";
39inline void print_vec(std::ostream &ostream, sycl::vec<T, 3> a) {
40 ostream <<
"(" << a.x() <<
"," << a.y() <<
"," << a.z() <<
")";
44inline void print_vec(std::ostream &ostream, sycl::vec<T, 4> a) {
45 ostream <<
"(" << a.x() <<
"," << a.y() <<
"," << a.z() <<
"," << a.w() <<
")";
49inline void print_vec(std::ostream &ostream, sycl::vec<T, 8> a) {
50 ostream <<
"(" << a.s0() <<
"," << a.s1() <<
"," << a.s2() <<
"," << a.s3() << a.s4() <<
","
51 << a.s5() <<
"," << a.s6() <<
"," << a.s7() <<
")";
55inline void print_vec(std::ostream &ostream, sycl::vec<T, 16> a) {
56 ostream <<
"(" << a.s0() <<
"," << a.s1() <<
"," << a.s2() <<
"," << a.s3() << a.s4() <<
","
57 << a.s5() <<
"," << a.s6() <<
"," << a.s7() << a.s8() <<
"," << a.s9() <<
"," << a.sA()
58 <<
"," << a.sB() << a.sC() <<
"," << a.sD() <<
"," << a.sE() <<
"," << a.sF() <<
")";
62inline void print_vec(std::ostream &ostream, T a) {
67inline i64 next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
68 return i64(distval(eng));
71inline i32 next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
72 return i32(distval(eng));
75inline i16 next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
76 return i16(distval(eng));
79inline i8 next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
80 return i8(distval(eng));
83inline u64 next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
84 return u64(distval(eng));
87inline u32 next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
88 return u32(distval(eng));
91inline u16 next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
92 return u16(distval(eng));
95inline u8 next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
96 return u8(distval(eng));
98#ifdef SYCL_COMP_INTEL_LLVM
100inline f16 next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
101 return f16(distval(eng));
105inline f32 next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
106 return f32(distval(eng));
109inline f64 next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
110 return f64(distval(eng));
114inline sycl::vec<f32, 2> next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
115 return sycl::vec<f32, 2>{next_obj<f32>(eng, distval), next_obj<f32>(eng, distval)};
118inline sycl::vec<f32, 3> next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
119 return sycl::vec<f32, 3>{
120 next_obj<f32>(eng, distval), next_obj<f32>(eng, distval), next_obj<f32>(eng, distval)};
123inline sycl::vec<f32, 4> next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
124 return sycl::vec<f32, 4>{
125 next_obj<f32>(eng, distval),
126 next_obj<f32>(eng, distval),
127 next_obj<f32>(eng, distval),
128 next_obj<f32>(eng, distval)};
132inline sycl::vec<f32, 8> next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
133 return sycl::vec<f32, 8>{
134 next_obj<f32>(eng, distval),
135 next_obj<f32>(eng, distval),
136 next_obj<f32>(eng, distval),
137 next_obj<f32>(eng, distval),
138 next_obj<f32>(eng, distval),
139 next_obj<f32>(eng, distval),
140 next_obj<f32>(eng, distval),
141 next_obj<f32>(eng, distval)};
145inline sycl::vec<f32, 16> next_obj(
146 std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
147 return sycl::vec<f32, 16>{
148 next_obj<f32>(eng, distval),
149 next_obj<f32>(eng, distval),
150 next_obj<f32>(eng, distval),
151 next_obj<f32>(eng, distval),
152 next_obj<f32>(eng, distval),
153 next_obj<f32>(eng, distval),
154 next_obj<f32>(eng, distval),
155 next_obj<f32>(eng, distval),
156 next_obj<f32>(eng, distval),
157 next_obj<f32>(eng, distval),
158 next_obj<f32>(eng, distval),
159 next_obj<f32>(eng, distval),
160 next_obj<f32>(eng, distval),
161 next_obj<f32>(eng, distval),
162 next_obj<f32>(eng, distval),
163 next_obj<f32>(eng, distval)};
167inline sycl::vec<f64, 2> next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
168 return sycl::vec<f64, 2>{next_obj<f64>(eng, distval), next_obj<f64>(eng, distval)};
171inline sycl::vec<f64, 3> next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
172 return sycl::vec<f64, 3>{
173 next_obj<f64>(eng, distval), next_obj<f64>(eng, distval), next_obj<f64>(eng, distval)};
176inline sycl::vec<f64, 4> next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
177 return sycl::vec<f64, 4>{
178 next_obj<f64>(eng, distval),
179 next_obj<f64>(eng, distval),
180 next_obj<f64>(eng, distval),
181 next_obj<f64>(eng, distval)};
185inline sycl::vec<f64, 8> next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
186 return sycl::vec<f64, 8>{
187 next_obj<f64>(eng, distval),
188 next_obj<f64>(eng, distval),
189 next_obj<f64>(eng, distval),
190 next_obj<f64>(eng, distval),
191 next_obj<f64>(eng, distval),
192 next_obj<f64>(eng, distval),
193 next_obj<f64>(eng, distval),
194 next_obj<f64>(eng, distval)};
198inline sycl::vec<f64, 16> next_obj(
199 std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
200 return sycl::vec<f64, 16>{
201 next_obj<f64>(eng, distval),
202 next_obj<f64>(eng, distval),
203 next_obj<f64>(eng, distval),
204 next_obj<f64>(eng, distval),
205 next_obj<f64>(eng, distval),
206 next_obj<f64>(eng, distval),
207 next_obj<f64>(eng, distval),
208 next_obj<f64>(eng, distval),
209 next_obj<f64>(eng, distval),
210 next_obj<f64>(eng, distval),
211 next_obj<f64>(eng, distval),
212 next_obj<f64>(eng, distval),
213 next_obj<f64>(eng, distval),
214 next_obj<f64>(eng, distval),
215 next_obj<f64>(eng, distval),
216 next_obj<f64>(eng, distval)};
220inline sycl::vec<u16, 3> next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
221 return sycl::vec<u16, 3>{
222 next_obj<u16>(eng, distval), next_obj<u16>(eng, distval), next_obj<u16>(eng, distval)};
226inline sycl::vec<u32, 3> next_obj(std::mt19937 &eng, std::uniform_real_distribution<f64> &distval) {
227 return sycl::vec<u32, 3>{
228 next_obj<u32>(eng, distval), next_obj<u32>(eng, distval), next_obj<u32>(eng, distval)};
double f64
Alias for double.
float f32
Alias for float.
std::int8_t i8
8 bit integer
std::uint8_t u8
8 bit unsigned integer
std::uint32_t u32
32 bit unsigned integer
std::uint64_t u64
64 bit unsigned integer
std::uint16_t u16
16 bit unsigned integer
std::int16_t i16
16 bit integer
std::int64_t i64
64 bit integer
std::int32_t i32
32 bit integer