[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