diff options
author | Michalis Spyrou <michalis.spyrou@arm.com> | 2020-04-08 14:10:15 +0100 |
---|---|---|
committer | Michalis Spyrou <michalis.spyrou@arm.com> | 2020-04-17 14:20:01 +0000 |
commit | d1d7722cfc5ee130115d8d195068a98b16102a21 (patch) | |
tree | f68f3ecca02ab4edde90189266fa186ec1a69474 /tests/validation/reference/DFT.cpp | |
parent | 4c6bd514a8d424a29b776754f1b3426fa3a8c339 (diff) | |
download | ComputeLibrary-d1d7722cfc5ee130115d8d195068a98b16102a21.tar.gz |
COMPMID-3314: Enable OpenMP in the reference tests
Change-Id: I05b5fedb998317144e0dd13a6377a97207b27f46
Signed-off-by: Michalis Spyrou <michalis.spyrou@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3024
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'tests/validation/reference/DFT.cpp')
-rw-r--r-- | tests/validation/reference/DFT.cpp | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/tests/validation/reference/DFT.cpp b/tests/validation/reference/DFT.cpp index b3c2c6b0b9..ae030c7104 100644 --- a/tests/validation/reference/DFT.cpp +++ b/tests/validation/reference/DFT.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 ARM Limited. + * Copyright (c) 2019-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -50,6 +50,9 @@ namespace template <typename T> void rdft_1d_step(const T *src_ptr, size_t N, T *dst_ptr, size_t K) { +#if defined(_OPENMP) + #pragma omp parallel for +#endif /* _OPENMP */ for(unsigned int k = 0; k < K; ++k) { float Xr = 0; @@ -77,6 +80,9 @@ void rdft_1d_step(const T *src_ptr, size_t N, T *dst_ptr, size_t K) template <typename T> void dft_1d_step(const T *src_ptr, T *dst_ptr, size_t N) { +#if defined(_OPENMP) + #pragma omp parallel for +#endif /* _OPENMP */ for(unsigned int k = 0; k < N; ++k) { float Xr = 0; @@ -111,7 +117,9 @@ void irdft_1d_step(const T *src_ptr, size_t K, T *dst_ptr, size_t N) const bool is_odd = N % 2; const unsigned int Nleft = N - K; const int tail_start = is_odd ? K - 1 : K - 2; - +#if defined(_OPENMP) + #pragma omp parallel for +#endif /* _OPENMP */ for(unsigned int n = 0; n < N; ++n) { float xr = 0; @@ -142,6 +150,9 @@ void irdft_1d_step(const T *src_ptr, size_t K, T *dst_ptr, size_t N) template <typename T> void idft_1d_step(const T *src_ptr, T *dst_ptr, size_t N) { +#if defined(_OPENMP) + #pragma omp parallel for +#endif /* _OPENMP */ for(unsigned int n = 0; n < N; ++n) { float xr = 0; @@ -181,6 +192,9 @@ SimpleTensor<T> rdft_1d_core(const SimpleTensor<T> &src, FFTDirection direction, SimpleTensor<T> dst(dst_shape, src.data_type(), num_channels); const unsigned int upper_dims = src.shape().total_size_upper(1); +#if defined(_OPENMP) + #pragma omp parallel for +#endif /* _OPENMP */ for(unsigned int du = 0; du < upper_dims; ++du) { const T *src_row_ptr = src.data() + du * N * src.num_channels(); @@ -201,6 +215,9 @@ SimpleTensor<T> dft_1d_core(const SimpleTensor<T> &src, FFTDirection direction) SimpleTensor<T> dst(src.shape(), src.data_type(), src.num_channels()); const unsigned int upper_dims = src.shape().total_size_upper(1); +#if defined(_OPENMP) + #pragma omp parallel for +#endif /* _OPENMP */ for(unsigned int du = 0; du < upper_dims; ++du) { const T *src_row_ptr = src.data() + du * N * src.num_channels(); @@ -221,6 +238,9 @@ void scale(SimpleTensor<T> &tensor, T scaling_factor) { const int total_elements = tensor.num_elements() * tensor.num_channels(); T *data_ptr = tensor.data(); +#if defined(_OPENMP) + #pragma omp parallel for +#endif /* _OPENMP */ for(int i = 0; i < total_elements; ++i) { data_ptr[i] /= scaling_factor; @@ -249,7 +269,9 @@ SimpleTensor<T> complex_mul_and_reduce(const SimpleTensor<T> &input, const Simpl // MemSet dst memory to zero std::memset(dst.data(), 0, dst.size()); - +#if defined(_OPENMP) + #pragma omp parallel for collapse(5) +#endif /* _OPENMP */ for(uint32_t b = 0; b < N; ++b) { for(uint32_t co = 0; co < Co; ++co) |