26
26
#include < dpnp_iface.hpp>
27
27
#include < dpnp_iface_fptr.hpp>
28
28
29
+ #include < iostream>
30
+
29
31
#include < math.h>
30
32
#include < vector>
31
33
32
34
#include " gtest/gtest.h"
33
35
36
+ // TODO
37
+ // * data management will be redesigned: allocation as chars (and casting on teste suits)
38
+ // * this class will be generlized
39
+ class RandomTestCase : public ::testing::Test
40
+ {
41
+ public:
42
+ static void SetUpTestCase ()
43
+ {
44
+ _get_device_mem ();
45
+ }
46
+
47
+ static void TearDownTestCase ()
48
+ {
49
+ dpnp_memory_free_c (result1);
50
+ result1 = result2 = nullptr ;
51
+ }
52
+
53
+ void SetUp () override
54
+ {
55
+ for (size_t i = 0 ; i < size; ++i)
56
+ {
57
+ result1[i] = 1 ;
58
+ result2[i] = 0 ;
59
+ }
60
+ }
61
+
62
+ void TearDown () override
63
+ {
64
+ }
65
+
66
+ private:
67
+ static void _get_device_mem ()
68
+ {
69
+ result1 = (double *)dpnp_memory_alloc_c (size * 2 * sizeof (double ));
70
+ result2 = result1 + size;
71
+ }
72
+
73
+ protected:
74
+ static size_t size;
75
+ static double * result1;
76
+ static double * result2;
77
+ };
78
+
79
+ double * RandomTestCase::result1 = nullptr ;
80
+ double * RandomTestCase::result2 = nullptr ;
81
+ size_t RandomTestCase::size = 10 ;
82
+
34
83
template <typename _DataType>
35
84
bool check_statistics (_DataType* r, double tM, double tD, double tQ, size_t size)
36
85
{
@@ -64,115 +113,75 @@ bool check_statistics(_DataType* r, double tM, double tD, double tQ, size_t size
64
113
return true ;
65
114
}
66
115
67
- TEST (TestBackendRandomBeta, test_seed )
116
+ TEST_F (RandomTestCase, rng_beta_test_seed )
68
117
{
69
- const size_t size = 256 ;
70
- size_t seed = 10 ;
71
- double a = 0.4 ;
72
- double b = 0.5 ;
73
-
74
- auto QueueOptionsDevices = std::vector<QueueOptions>{QueueOptions::CPU_SELECTOR, QueueOptions::GPU_SELECTOR};
118
+ const size_t seed = 10 ;
119
+ const double a = 0.4 ;
120
+ const double b = 0.5 ;
75
121
76
- for (auto device_selector : QueueOptionsDevices)
77
- {
78
- dpnp_queue_initialize_c (device_selector);
79
- double * result1 = (double *)dpnp_memory_alloc_c (size * sizeof (double ));
80
- double * result2 = (double *)dpnp_memory_alloc_c (size * sizeof (double ));
81
-
82
- dpnp_rng_srand_c (seed);
83
- dpnp_rng_beta_c<double >(result1, a, b, size);
122
+ dpnp_rng_srand_c (seed);
123
+ dpnp_rng_beta_c<double >(result1, a, b, size);
84
124
85
- dpnp_rng_srand_c (seed);
86
- dpnp_rng_beta_c<double >(result2, a, b, size);
125
+ dpnp_rng_srand_c (seed);
126
+ dpnp_rng_beta_c<double >(result2, a, b, size);
87
127
88
- for (size_t i = 0 ; i < size; ++i)
89
- {
90
- EXPECT_NEAR (result1[i], result2[i], 0.004 );
91
- }
128
+ for (size_t i = 0 ; i < size; ++i)
129
+ {
130
+ EXPECT_NEAR (result1[i], result2[i], 0.004 );
92
131
}
93
132
}
94
133
95
- TEST (TestBackendRandomF, test_seed )
134
+ TEST_F (RandomTestCase, rng_f_test_seed )
96
135
{
97
- const size_t size = 256 ;
98
- size_t seed = 10 ;
99
- double dfnum = 10.4 ;
100
- double dfden = 12.5 ;
136
+ const size_t seed = 10 ;
137
+ const double dfnum = 10.4 ;
138
+ const double dfden = 12.5 ;
101
139
102
- auto QueueOptionsDevices = std::vector<QueueOptions>{QueueOptions::CPU_SELECTOR, QueueOptions::GPU_SELECTOR};
140
+ dpnp_rng_srand_c (seed);
141
+ dpnp_rng_f_c<double >(result1, dfnum, dfden, size);
103
142
104
- for (auto device_selector : QueueOptionsDevices)
105
- {
106
- dpnp_queue_initialize_c (device_selector);
107
- double * result1 = (double *)dpnp_memory_alloc_c (size * sizeof (double ));
108
- double * result2 = (double *)dpnp_memory_alloc_c (size * sizeof (double ));
109
-
110
- dpnp_rng_srand_c (seed);
111
- dpnp_rng_f_c<double >(result1, dfnum, dfden, size);
143
+ dpnp_rng_srand_c (seed);
144
+ dpnp_rng_f_c<double >(result2, dfnum, dfden, size);
112
145
113
- dpnp_rng_srand_c (seed);
114
- dpnp_rng_f_c<double >(result2, dfnum, dfden, size);
115
-
116
- for (size_t i = 0 ; i < size; ++i)
117
- {
118
- EXPECT_NEAR (result1[i], result2[i], 0.004 );
119
- }
146
+ for (size_t i = 0 ; i < size; ++i)
147
+ {
148
+ EXPECT_NEAR (result1[i], result2[i], 0.004 );
120
149
}
121
150
}
122
151
123
- TEST (TestBackendRandomNormal, test_seed )
152
+ TEST_F (RandomTestCase, rng_normal_test_seed )
124
153
{
125
- const size_t size = 256 ;
126
- size_t seed = 10 ;
127
- double loc = 2.56 ;
128
- double scale = 0.8 ;
129
-
130
- auto QueueOptionsDevices = std::vector<QueueOptions>{QueueOptions::CPU_SELECTOR, QueueOptions::GPU_SELECTOR};
131
-
132
- for (auto device_selector : QueueOptionsDevices)
133
- {
134
- dpnp_queue_initialize_c (device_selector);
135
- double * result1 = (double *)dpnp_memory_alloc_c (size * sizeof (double ));
136
- double * result2 = (double *)dpnp_memory_alloc_c (size * sizeof (double ));
154
+ const size_t seed = 10 ;
155
+ const double loc = 2.56 ;
156
+ const double scale = 0.8 ;
137
157
138
- dpnp_rng_srand_c (seed);
139
- dpnp_rng_normal_c<double >(result1, loc, scale, size);
158
+ dpnp_rng_srand_c (seed);
159
+ dpnp_rng_normal_c<double >(result1, loc, scale, size);
140
160
141
- dpnp_rng_srand_c (seed);
142
- dpnp_rng_normal_c<double >(result2, loc, scale, size);
161
+ dpnp_rng_srand_c (seed);
162
+ dpnp_rng_normal_c<double >(result2, loc, scale, size);
143
163
144
- for (size_t i = 0 ; i < size; ++i)
145
- {
146
- EXPECT_NEAR (result1[i], result2[i], 0.004 );
147
- }
164
+ for (size_t i = 0 ; i < size; ++i)
165
+ {
166
+ EXPECT_NEAR (result1[i], result2[i], 0.004 );
148
167
}
149
168
}
150
169
151
- TEST (TestBackendRandomUniform, test_seed )
170
+ TEST_F (RandomTestCase, rng_uniform_test_seed )
152
171
{
153
- const size_t size = 256 ;
154
- size_t seed = 10 ;
155
- long low = 1 ;
156
- long high = 120 ;
157
-
158
- auto QueueOptionsDevices = std::vector<QueueOptions>{QueueOptions::CPU_SELECTOR, QueueOptions::GPU_SELECTOR};
159
-
160
- for (auto device_selector : QueueOptionsDevices)
161
- {
162
- dpnp_queue_initialize_c (device_selector);
163
- double * result1 = (double *)dpnp_memory_alloc_c (size * sizeof (double ));
164
- double * result2 = (double *)dpnp_memory_alloc_c (size * sizeof (double ));
172
+ const size_t seed = 10 ;
173
+ const long low = 1 ;
174
+ const long high = 120 ;
165
175
166
- dpnp_rng_srand_c (seed);
167
- dpnp_rng_uniform_c<double >(result1, low, high, size);
176
+ dpnp_rng_srand_c (seed);
177
+ dpnp_rng_uniform_c<double >(result1, low, high, size);
168
178
169
- dpnp_rng_srand_c (seed);
170
- dpnp_rng_uniform_c<double >(result2, low, high, size);
179
+ dpnp_rng_srand_c (seed);
180
+ dpnp_rng_uniform_c<double >(result2, low, high, size);
171
181
172
- for (size_t i = 0 ; i < size; ++i)
173
- {
174
- EXPECT_NEAR (result1[i], result2[i], 0.004 );
175
- }
182
+ for (size_t i = 0 ; i < size; ++i)
183
+ {
184
+ EXPECT_NEAR (result1[i], result2[i], 0.004 );
176
185
}
177
186
}
178
187
@@ -189,20 +198,16 @@ TEST(TestBackendRandomUniform, test_statistics)
189
198
double tD = ((b - a) * (b - a)) / 12.0 ;
190
199
double tQ = ((b - a) * (b - a) * (b - a) * (b - a)) / 80.0 ;
191
200
192
- auto QueueOptionsDevices = std::vector<QueueOptions>{QueueOptions::CPU_SELECTOR, QueueOptions::GPU_SELECTOR};
193
-
194
- for (auto device_selector : QueueOptionsDevices)
195
- {
196
- dpnp_queue_initialize_c (device_selector);
197
- double * result = (double *)dpnp_memory_alloc_c (size * sizeof (double ));
198
- dpnp_rng_srand_c (seed);
199
- dpnp_rng_uniform_c<double >(result, a, b, size);
200
- check_statistics_res = check_statistics<double >(result, tM, tD, tQ, size);
201
-
202
- ASSERT_TRUE (check_statistics_res);
203
- }
201
+ double * result = (double *)dpnp_memory_alloc_c (size * sizeof (double ));
202
+ dpnp_rng_srand_c (seed);
203
+ dpnp_rng_uniform_c<double >(result, a, b, size);
204
+ check_statistics_res = check_statistics<double >(result, tM, tD, tQ, size);
205
+ ASSERT_TRUE (check_statistics_res);
206
+ dpnp_memory_free_c (result);
204
207
}
205
208
209
+ // TODO:
210
+ // Generalization for all DPNPFuncName
206
211
TEST (TestBackendRandomSrand, test_func_ptr)
207
212
{
208
213
void * fptr = nullptr ;
@@ -216,9 +221,3 @@ TEST(TestBackendRandomSrand, test_func_ptr)
216
221
217
222
EXPECT_TRUE (fptr != nullptr );
218
223
}
219
-
220
- int main (int argc, char ** argv)
221
- {
222
- ::testing::InitGoogleTest (&argc, argv);
223
- return RUN_ALL_TESTS ();
224
- }
0 commit comments