[arrayfire] 107/284: moved fftconvolve reorder helper fn to kernel namespace

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Sun Feb 7 18:59:24 UTC 2016


This is an automated email from the git hooks/post-receive script.

ghisvail-guest pushed a commit to branch debian/experimental
in repository arrayfire.

commit d1089f858eb15d2e74b2f63a5194ca8ab8db59a6
Author: pradeep <pradeep at arrayfire.com>
Date:   Mon Dec 28 16:54:30 2015 -0500

    moved fftconvolve reorder helper fn to kernel namespace
---
 src/backend/cpu/fftconvolve.cpp        | 32 +++-----------------------------
 src/backend/cpu/kernel/fftconvolve.hpp | 29 +++++++++++++++++++++++++++++
 2 files changed, 32 insertions(+), 29 deletions(-)

diff --git a/src/backend/cpu/fftconvolve.cpp b/src/backend/cpu/fftconvolve.cpp
index 2678c7b..c0a9a41 100644
--- a/src/backend/cpu/fftconvolve.cpp
+++ b/src/backend/cpu/fftconvolve.cpp
@@ -211,35 +211,9 @@ Array<T> fftconvolve(Array<T> const& signal, Array<T> const& filter,
 
     Array<T> out = createEmptyArray<T>(oDims);
 
-    auto reorderFunc = [=](Array<T> out, Array<convT> packed,
-                           const Array<T> filter, const dim_t sig_hald_d0, const dim_t fftScale,
-                           const dim4 sig_tmp_dims, const dim4 sig_tmp_strides,
-                           const dim4 filter_tmp_dims, const dim4 filter_tmp_strides) {
-        T* out_ptr = out.get();
-        const af::dim4 out_dims = out.dims();
-        const af::dim4 out_strides = out.strides();
-
-        const af::dim4 filter_dims = filter.dims();
-
-        convT* packed_ptr = packed.get();
-        convT* sig_tmp_ptr    = packed_ptr;
-        convT* filter_tmp_ptr = packed_ptr + sig_tmp_strides[3] * sig_tmp_dims[3];
-
-        // Reorder the output
-        if (kind == CONVOLVE_BATCH_KERNEL) {
-            kernel::reorderHelper<T, convT, roundOut>(out_ptr, out_dims, out_strides,
-                                              filter_tmp_ptr, filter_tmp_dims, filter_tmp_strides,
-                                              filter_dims, sig_half_d0, baseDim, fftScale, expand);
-        } else {
-            kernel::reorderHelper<T, convT, roundOut>(out_ptr, out_dims, out_strides,
-                                              sig_tmp_ptr, sig_tmp_dims, sig_tmp_strides,
-                                              filter_dims, sig_half_d0, baseDim, fftScale, expand);
-        }
-    };
-
-    getQueue().enqueue(reorderFunc, out, packed, filter, sig_half_d0, fftScale,
-                       sig_tmp_dims, sig_tmp_strides,
-                       filter_tmp_dims, filter_tmp_strides);
+    getQueue().enqueue(kernel::reorder<T, convT, roundOut, baseDim>, out, packed, filter,
+                       sig_half_d0, fftScale, sig_tmp_dims, sig_tmp_strides, filter_tmp_dims,
+                       filter_tmp_strides, expand, kind);
 
     return out;
 }
diff --git a/src/backend/cpu/kernel/fftconvolve.hpp b/src/backend/cpu/kernel/fftconvolve.hpp
index 6213cb2..ad586f7 100644
--- a/src/backend/cpu/kernel/fftconvolve.hpp
+++ b/src/backend/cpu/kernel/fftconvolve.hpp
@@ -223,5 +223,34 @@ void reorderHelper(To* out_ptr, const af::dim4& od, const af::dim4& os,
     }
 }
 
+template<typename T, typename convT, bool roundOut, int baseDim>
+void reorder(Array<T> out, Array<convT> packed,
+             const Array<T> filter, const dim_t sig_half_d0, const dim_t fftScale,
+             const dim4 sig_tmp_dims, const dim4 sig_tmp_strides,
+             const dim4 filter_tmp_dims, const dim4 filter_tmp_strides,
+             bool expand, ConvolveBatchKind kind)
+{
+    T* out_ptr = out.get();
+    const af::dim4 out_dims = out.dims();
+    const af::dim4 out_strides = out.strides();
+
+    const af::dim4 filter_dims = filter.dims();
+
+    convT* packed_ptr = packed.get();
+    convT* sig_tmp_ptr    = packed_ptr;
+    convT* filter_tmp_ptr = packed_ptr + sig_tmp_strides[3] * sig_tmp_dims[3];
+
+    // Reorder the output
+    if (kind == CONVOLVE_BATCH_KERNEL) {
+        reorderHelper<T, convT, roundOut>(out_ptr, out_dims, out_strides,
+                filter_tmp_ptr, filter_tmp_dims, filter_tmp_strides,
+                filter_dims, sig_half_d0, baseDim, fftScale, expand);
+    } else {
+        reorderHelper<T, convT, roundOut>(out_ptr, out_dims, out_strides,
+                sig_tmp_ptr, sig_tmp_dims, sig_tmp_strides,
+                filter_dims, sig_half_d0, baseDim, fftScale, expand);
+    }
+}
+
 }
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/arrayfire.git



More information about the debian-science-commits mailing list