| 203 | |
| 204 | template<typename T> |
| 205 | meanvar_test<T> meanvar_test_gen(string name, int in_index, int weight_index, |
| 206 | af_var_bias bias, int dim, int mean_index, |
| 207 | int var_index, test_size size) { |
| 208 | if (noDoubleTests((af_dtype)af::dtype_traits<T>::af_type) || |
| 209 | noDoubleTests(( |
| 210 | af_dtype)af::dtype_traits<typename varOutType<T>::type>::af_type) || |
| 211 | noHalfTests((af_dtype)af::dtype_traits<T>::af_type)) { |
| 212 | meanvar_test<T> out(name); |
| 213 | return out; |
| 214 | } |
| 215 | |
| 216 | vector<af_array> inputs; |
| 217 | vector<vector<typename varOutType<T>::type>> outputs; |
| 218 | if (size == MEANVAR_SMALL) { |
| 219 | vector<af::dim4> numDims_; |
| 220 | vector<vector<T>> in_; |
| 221 | vector<vector<typename varOutType<T>::type>> tests_; |
| 222 | readTests<T, typename varOutType<T>::type, double>( |
| 223 | TEST_DIR "/meanvar/meanvar.data", numDims_, in_, tests_); |
| 224 | |
| 225 | inputs.resize(in_.size()); |
| 226 | for (size_t i = 0; i < in_.size(); i++) { |
| 227 | af_create_array(&inputs[i], &in_[i].front(), numDims_[i].ndims(), |
| 228 | numDims_[i].get(), |
| 229 | (af_dtype)af::dtype_traits<T>::af_type); |
| 230 | } |
| 231 | |
| 232 | outputs.resize(tests_.size()); |
| 233 | for (size_t i = 0; i < tests_.size(); i++) { |
| 234 | copy(tests_[i].begin(), tests_[i].end(), back_inserter(outputs[i])); |
| 235 | } |
| 236 | } else { |
| 237 | dim_t full_array_size = 2000; |
| 238 | vector<vector<dim_t>> dimensions = { |
| 239 | {2000, 1, 1, 1}, // 0 |
| 240 | {1, 2000, 1, 1}, // 1 |
| 241 | {1, 1, 2000, 1}, // 2 |
| 242 | |
| 243 | {500, 4, 1, 1}, // 3 |
| 244 | {4, 500, 1, 1}, // 4 |
| 245 | {50, 40, 1, 1} // 5 |
| 246 | }; |
| 247 | |
| 248 | vector<T> large_(full_array_size); |
| 249 | for (size_t i = 0; i < large_.size(); i++) { |
| 250 | large_[i] = static_cast<T>(i); |
| 251 | } |
| 252 | |
| 253 | inputs.resize(dimensions.size()); |
| 254 | for (size_t i = 0; i < dimensions.size(); i++) { |
| 255 | af_create_array(&inputs[i], &large_.front(), 4, |
| 256 | dimensions[i].data(), |
| 257 | (af_dtype)af::dtype_traits<T>::af_type); |
| 258 | } |
| 259 | |
| 260 | outputs.push_back( |
| 261 | vector<typename varOutType<T>::type>(1, outType<T>(999.5))); |
| 262 | outputs.push_back( |
nothing calls this directly
no test coverage detected