[arrayfire] 24/284: converted lu & cholesky decomposition functions to async calls
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 551433e7aaf045d9c22ed4a2c107d7f9f1149b59
Author: pradeep <pradeep at arrayfire.com>
Date: Thu Nov 19 19:02:51 2015 -0500
converted lu & cholesky decomposition functions to async calls
---
src/backend/cpu/cholesky.cpp | 12 +++++++++---
src/backend/cpu/lu.cpp | 20 ++++++++++----------
2 files changed, 19 insertions(+), 13 deletions(-)
diff --git a/src/backend/cpu/cholesky.cpp b/src/backend/cpu/cholesky.cpp
index 57beaa4..d0bd3c8 100644
--- a/src/backend/cpu/cholesky.cpp
+++ b/src/backend/cpu/cholesky.cpp
@@ -18,8 +18,9 @@
#include <cassert>
#include <err_cpu.hpp>
#include <triangle.hpp>
-
#include <lapack_helper.hpp>
+#include <platform.hpp>
+#include <async_queue.hpp>
namespace cpu
{
@@ -65,8 +66,13 @@ int cholesky_inplace(Array<T> &in, const bool is_upper)
if(is_upper)
uplo = 'U';
- int info = potrf_func<T>()(AF_LAPACK_COL_MAJOR, uplo,
- N, in.get(), in.strides()[1]);
+ int info = 0;
+ auto func = [&] (int& info, Array<T>& in) {
+ info = potrf_func<T>()(AF_LAPACK_COL_MAJOR, uplo, N, in.get(), in.strides()[1]);
+ };
+
+ getQueue().enqueue(func, info, in);
+ getQueue().sync();
return info;
}
diff --git a/src/backend/cpu/lu.cpp b/src/backend/cpu/lu.cpp
index 0eefb16..ed165cb 100644
--- a/src/backend/cpu/lu.cpp
+++ b/src/backend/cpu/lu.cpp
@@ -17,9 +17,10 @@
#include <iostream>
#include <cassert>
#include <err_cpu.hpp>
-
#include <range.hpp>
#include <lapack_helper.hpp>
+#include <platform.hpp>
+#include <async_queue.hpp>
namespace cpu
{
@@ -128,23 +129,22 @@ void lu(Array<T> &lower, Array<T> &upper, Array<int> &pivot, const Array<T> &in)
lower = createEmptyArray<T>(ldims);
upper = createEmptyArray<T>(udims);
- lu_split<T>(lower, upper, in_copy);
+ getQueue().enqueue(lu_split<T>, lower, upper, in_copy);
}
template<typename T>
Array<int> lu_inplace(Array<T> &in, const bool convert_pivot)
{
dim4 iDims = in.dims();
- int M = iDims[0];
- int N = iDims[1];
-
- Array<int> pivot = createEmptyArray<int>(af::dim4(min(M, N), 1, 1, 1));
+ Array<int> pivot = createEmptyArray<int>(af::dim4(min(iDims[0], iDims[1]), 1, 1, 1));
- getrf_func<T>()(AF_LAPACK_COL_MAJOR, M, N,
- in.get(), in.strides()[1],
- pivot.get());
+ auto func = [=] (Array<T> in, Array<int> pivot, const bool convert_pivot) {
+ dim4 iDims = in.dims();
+ getrf_func<T>()(AF_LAPACK_COL_MAJOR, iDims[0], iDims[1], in.get(), in.strides()[1], pivot.get());
+ if(convert_pivot) convertPivot(pivot, iDims[0]);
+ };
- if(convert_pivot) convertPivot(pivot, M);
+ getQueue().enqueue(func, in, pivot, convert_pivot);
return pivot;
}
--
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