[arrayfire] 102/284: Fixed orb async cpu fn

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Sun Feb 7 18:59:23 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 b684b06418efe9d2c0f0f3d4be8389c4b2d7789a
Author: pradeep <pradeep at arrayfire.com>
Date:   Mon Dec 21 18:19:39 2015 -0500

    Fixed orb async cpu fn
    
    It was a bug in upstream function cpu::fast
---
 src/backend/cpu/fast.cpp |  2 +-
 src/backend/cpu/orb.cpp  | 12 ++++--------
 2 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/src/backend/cpu/fast.cpp b/src/backend/cpu/fast.cpp
index fe02387..42607d8 100644
--- a/src/backend/cpu/fast.cpp
+++ b/src/backend/cpu/fast.cpp
@@ -30,7 +30,6 @@ unsigned fast(Array<float> &x_out, Array<float> &y_out, Array<float> &score_out,
               const unsigned edge)
 {
     in.eval();
-    getQueue().sync();
 
     dim4 in_dims = in.dims();
     const unsigned max_feat = ceil(in.elements() * feature_ratio);
@@ -43,6 +42,7 @@ unsigned fast(Array<float> &x_out, Array<float> &y_out, Array<float> &score_out,
         V = createValueArray<float>(V_dims, (float)0);
         V.eval();
     }
+    getQueue().sync();
 
     // Arrays containing all features detected before non-maximal suppression.
     dim4 max_feat_dims(max_feat);
diff --git a/src/backend/cpu/orb.cpp b/src/backend/cpu/orb.cpp
index 00fe820..5dd9326 100644
--- a/src/backend/cpu/orb.cpp
+++ b/src/backend/cpu/orb.cpp
@@ -103,12 +103,13 @@ unsigned orb(Array<float> &x, Array<float> &y,
             ldims[1] = round(idims[1] / lvl_scl);
 
             lvl_img = resize<T>(prev_img, ldims[0], ldims[1], AF_INTERP_BILINEAR);
-            lvl_img.eval();
-            getQueue().sync();
 
             prev_img = lvl_img;
             prev_ldims = lvl_img.dims();
         }
+        prev_img.eval();
+        lvl_img.eval();
+        getQueue().sync();
 
 
         Array<float> x_feat = createEmptyArray<float>(dim4());
@@ -125,10 +126,6 @@ unsigned orb(Array<float> &x, Array<float> &y,
 
         unsigned lvl_feat = fast(x_feat, y_feat, score_feat,
                                  lvl_img, fast_thr, 9, 1, 0.15f, edge);
-        x_feat.eval();
-        y_feat.eval();
-        score_feat.eval();
-        getQueue().sync();
 
         if (lvl_feat == 0) {
             continue;
@@ -164,8 +161,6 @@ unsigned orb(Array<float> &x, Array<float> &y,
         Array<unsigned> harris_idx = createEmptyArray<unsigned>(af::dim4());
 
         sort_index<float, false>(harris_sorted, harris_idx, score_harris, 0);
-        harris_sorted.eval();
-        harris_idx.eval();
         getQueue().sync();
 
         usable_feat = std::min(usable_feat, lvl_best[i]);
@@ -203,6 +198,7 @@ unsigned orb(Array<float> &x, Array<float> &y,
                 h_gauss = memAlloc<T>(gauss_dims[0]);
                 gaussian1D(h_gauss, gauss_dims[0], 2.f);
                 gauss_filter = createDeviceDataArray<T>(gauss_dims, h_gauss);
+                gauss_filter.eval();
             }
 
             // Filter level image with Gaussian kernel to reduce noise sensitivity

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