[arrayfire] 21/284: converted cpu tile to asychronous call

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Sun Feb 7 18:59:15 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 0aeed429006dcf95a2aa502bf7aad5e409b90a3b
Author: pradeep <pradeep at arrayfire.com>
Date:   Thu Nov 19 16:54:34 2015 -0500

    converted cpu tile to asychronous call
    
    This fixed `Assign.LinearAssignSeq` unit test in assign unit tests.
---
 src/backend/cpu/tile.cpp | 58 ++++++++++++++++++++++++++++--------------------
 1 file changed, 34 insertions(+), 24 deletions(-)

diff --git a/src/backend/cpu/tile.cpp b/src/backend/cpu/tile.cpp
index 77e72af..f756012 100644
--- a/src/backend/cpu/tile.cpp
+++ b/src/backend/cpu/tile.cpp
@@ -11,25 +11,32 @@
 #include <tile.hpp>
 #include <stdexcept>
 #include <err_cpu.hpp>
+#include <platform.hpp>
+#include <async_queue.hpp>
 
 namespace cpu
 {
-    template<typename T>
-    Array<T> tile(const Array<T> &in, const af::dim4 &tileDims)
-    {
-        const af::dim4 iDims = in.dims();
-        af::dim4 oDims = iDims;
-        oDims *= tileDims;
 
-        if(iDims.elements() == 0 || oDims.elements() == 0) {
-            throw std::runtime_error("Elements are 0");
-        }
+template<typename T>
+Array<T> tile(const Array<T> &in, const af::dim4 &tileDims)
+{
+    const af::dim4 iDims = in.dims();
+    af::dim4 oDims = iDims;
+    oDims *= tileDims;
+
+    if(iDims.elements() == 0 || oDims.elements() == 0) {
+        throw std::runtime_error("Elements are 0");
+    }
 
-        Array<T> out = createEmptyArray<T>(oDims);
+    Array<T> out = createEmptyArray<T>(oDims);
+
+    auto func = [=] (Array<T> out, const Array<T> in) {
 
         T* outPtr = out.get();
         const T* inPtr = in.get();
 
+        const af::dim4 iDims = in.dims();
+        const af::dim4 oDims = out.dims();
         const af::dim4 ist = in.strides();
         const af::dim4 ost = out.strides();
 
@@ -54,24 +61,27 @@ namespace cpu
                 }
             }
         }
+    };
 
-        return out;
-    }
+    getQueue().enqueue(func, out, in);
+
+    return out;
+}
 
 #define INSTANTIATE(T)                                                         \
     template Array<T> tile<T>(const Array<T> &in, const af::dim4 &tileDims);  \
 
-    INSTANTIATE(float)
-    INSTANTIATE(double)
-    INSTANTIATE(cfloat)
-    INSTANTIATE(cdouble)
-    INSTANTIATE(int)
-    INSTANTIATE(uint)
-    INSTANTIATE(intl)
-    INSTANTIATE(uintl)
-    INSTANTIATE(uchar)
-    INSTANTIATE(char)
-    INSTANTIATE(short)
-    INSTANTIATE(ushort)
+INSTANTIATE(float)
+INSTANTIATE(double)
+INSTANTIATE(cfloat)
+INSTANTIATE(cdouble)
+INSTANTIATE(int)
+INSTANTIATE(uint)
+INSTANTIATE(intl)
+INSTANTIATE(uintl)
+INSTANTIATE(uchar)
+INSTANTIATE(char)
+INSTANTIATE(short)
+INSTANTIATE(ushort)
 
 }

-- 
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