aboutsummaryrefslogtreecommitdiff
path: root/tests/validation/reference/DFT.cpp
diff options
context:
space:
mode:
authorMichalis Spyrou <michalis.spyrou@arm.com>2020-04-08 14:10:15 +0100
committerMichalis Spyrou <michalis.spyrou@arm.com>2020-04-17 14:20:01 +0000
commitd1d7722cfc5ee130115d8d195068a98b16102a21 (patch)
treef68f3ecca02ab4edde90189266fa186ec1a69474 /tests/validation/reference/DFT.cpp
parent4c6bd514a8d424a29b776754f1b3426fa3a8c339 (diff)
downloadComputeLibrary-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.cpp28
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)