This is an automated email from the ASF dual-hosted git repository.

jxie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-mxnet.git


The following commit(s) were added to refs/heads/master by this push:
     new 3f742d2  Scala fix (#7782)
3f742d2 is described below

commit 3f742d254846fbc14dbaa459191403330425ef83
Author: Chris Olivier <[email protected]>
AuthorDate: Thu Sep 7 23:40:25 2017 -0700

    Scala fix (#7782)
    
    * Occasional test failure, reduce testing threshold
    
    * Fix signed/unsigned warning
    
    * providing explicit null pointer for the provided_arg_stypes. (#7791)
    
    * fix wrong dist-kvstore push/pull/rsp_pull (#7762)
    
    * rm duplicated and unused code (#7764)
    
    * rm not use variables
    
    * rm duplicated and unused code
    
    * bug
    
    * Fix Moderngpu usages in MXNet for CUDA 9 (#7789)
    
    * Modify ModernGPU for CUDA 9
    
    * Remove unused shfl_up that triggered compiler warning
    
    * adjust types to pass to between, add 'const' where possible
    
    * Add MSHADOW_CINLINE
    
    * lint
    
    * Trigger build
---
 .../test/scala/ml/dmlc/mxnet/OperatorSuite.scala   |  2 +-
 src/operator/spatial_transformer.cc                | 57 ++++++++++++----------
 2 files changed, 31 insertions(+), 28 deletions(-)

diff --git 
a/scala-package/core/src/test/scala/ml/dmlc/mxnet/OperatorSuite.scala 
b/scala-package/core/src/test/scala/ml/dmlc/mxnet/OperatorSuite.scala
index 86f0436..6c9a2fa 100644
--- a/scala-package/core/src/test/scala/ml/dmlc/mxnet/OperatorSuite.scala
+++ b/scala-package/core/src/test/scala/ml/dmlc/mxnet/OperatorSuite.scala
@@ -37,7 +37,7 @@ class OperatorSuite extends FunSuite with BeforeAndAfterAll
     exec.forward()
     val forwardOutput = exec.outputs(0)
     val forwardOutputExpected = arr.reduce(_ + _)
-    assert(reldiff(forwardOutput, forwardOutputExpected) < 2e-6)
+    assert(reldiff(forwardOutput, forwardOutputExpected) < 5e-5)
 
     // backward
     val outGrad = Random.uniform(-10, 10, shape)
diff --git a/src/operator/spatial_transformer.cc 
b/src/operator/spatial_transformer.cc
index 51b0ebf..9149bc0 100644
--- a/src/operator/spatial_transformer.cc
+++ b/src/operator/spatial_transformer.cc
@@ -27,9 +27,12 @@
 
 namespace mshadow {
 template<typename DType>
-bool between(DType value, int lowerBound, int upperBound) {
-  return (value >= lowerBound && value <= upperBound);
+static MSHADOW_CINLINE bool between(const DType value,
+                                    const DType lowerBound,
+                                    const DType upperBound) {
+  return value >= lowerBound && value <= upperBound;
 }
+
 template<typename DType>
 inline void BilinearSamplingForward(const Tensor<cpu, 4, DType> &output,
                                     const Tensor<cpu, 4, DType> &input,
@@ -37,22 +40,22 @@ inline void BilinearSamplingForward(const Tensor<cpu, 4, 
DType> &output,
   DType *out = output.dptr_;
   const DType *data = input.dptr_;
   const DType *grid = grid_src.dptr_;
-  int o_n = output.size(0), o_c = output.size(1), o_h = output.size(2), o_w = 
output.size(3);
-  int i_c = input.size(1), i_h = input.size(2), i_w = input.size(3);
+  const int o_n = output.size(0), o_c = output.size(1), o_h = output.size(2), 
o_w = output.size(3);
+  const int i_c = input.size(1), i_h = input.size(2), i_w = input.size(3);
   for (index_t n = 0; n < static_cast<index_t>(o_n); ++n) {
     for (index_t c = 0; c < static_cast<index_t>(o_c); ++c) {
       for (index_t h = 0; h < static_cast<index_t>(o_h); ++h) {
         for (index_t w = 0; w < static_cast<index_t>(o_w); ++w) {
-          index_t out_index = n * o_c * o_h * o_w + c * o_h * o_w + h * o_w + 
w;
-          index_t grid_index = n * o_h * o_w * 2 + h * o_w + w;
-          DType y_real = (*(grid + grid_index + o_h * o_w) + 1) * (i_h - 1) / 
2;
-          DType x_real = (*(grid + grid_index) + 1) * (i_w - 1) / 2;
-          int top_left_y = static_cast<int>(floor(y_real));
-          int top_left_x = static_cast<int>(floor(x_real));
-          DType top_left_y_w = 1.0 - (y_real - top_left_y);
-          DType top_left_x_w = 1.0 - (x_real - top_left_x);
-          int data_index = n * i_c * i_h * i_w + c * i_h * i_w +
-                           top_left_y * i_w + top_left_x;
+          const index_t out_index = n * o_c * o_h * o_w + c * o_h * o_w + h * 
o_w + w;
+          const index_t grid_index = n * o_h * o_w * 2 + h * o_w + w;
+          const DType y_real = (*(grid + grid_index + o_h * o_w) + 1) * (i_h - 
1) / 2;
+          const DType x_real = (*(grid + grid_index) + 1) * (i_w - 1) / 2;
+          const auto top_left_y = static_cast<int>(floor(y_real));
+          const auto top_left_x = static_cast<int>(floor(x_real));
+          const DType top_left_y_w = 1.0 - (y_real - top_left_y);
+          const DType top_left_x_w = 1.0 - (x_real - top_left_x);
+          const int data_index = n * i_c * i_h * i_w + c * i_h * i_w +
+                                 top_left_y * i_w + top_left_x;
           DType top_left_v = 0;
           DType top_right_v = 0;
           DType bottom_left_v = 0;
@@ -66,9 +69,9 @@ inline void BilinearSamplingForward(const Tensor<cpu, 4, 
DType> &output,
           if (between(top_left_x+1, 0, i_w-1) && between(top_left_y + 1, 0, 
i_h-1))
             bottom_right_v = *(data + data_index + i_w + 1);
           *(out+out_index) = top_left_v * top_left_y_w * top_left_x_w +
-                              top_right_v * top_left_y_w * (1.0 - 
top_left_x_w) +
-                              bottom_left_v * (1.0 - top_left_y_w) * 
top_left_x_w +
-                              bottom_right_v * (1.0 - top_left_y_w) * (1.0 - 
top_left_x_w);
+                             top_right_v * top_left_y_w * (1.0 - top_left_x_w) 
+
+                             bottom_left_v * (1.0 - top_left_y_w) * 
top_left_x_w +
+                             bottom_right_v * (1.0 - top_left_y_w) * (1.0 - 
top_left_x_w);
         }
       }
     }
@@ -84,21 +87,21 @@ inline void BilinearSamplingBackward(const Tensor<cpu, 4, 
DType> &input_grad,
   DType *grid_src = grid_src_data.dptr_;
   const DType *grad = output_grad.dptr_;
   const DType *data = input_data.dptr_;
-  int o_n = output_grad.size(0), o_c = output_grad.size(1),
-      o_h = output_grad.size(2), o_w = output_grad.size(3);
-  int i_c = input_data.size(1), i_h = input_data.size(2), i_w = 
input_data.size(3);
+  const int o_n = output_grad.size(0), o_c = output_grad.size(1),
+    o_h = output_grad.size(2), o_w = output_grad.size(3);
+  const int i_c = input_data.size(1), i_h = input_data.size(2), i_w = 
input_data.size(3);
   for (index_t n = 0; n < static_cast<index_t>(o_n); ++n) {
      for (index_t h = 0; h < static_cast<index_t>(o_h); ++h) {
         for (index_t w = 0; w < static_cast<index_t>(o_w); ++w) {
           DType top_left_y_gw = 0.0;
           DType top_left_x_gw = 0.0;
-          index_t grid_src_index = n * o_h * o_w * 2 + h * o_w + w;
-          DType y_real = (*(grid_src + grid_src_index + o_h * o_w) + 1) * (i_h 
- 1) / 2;
-          DType x_real = (*(grid_src + grid_src_index) + 1) * (i_w - 1) / 2;
-          index_t top_left_y = static_cast<int>(floor(y_real));
-          index_t top_left_x = static_cast<int>(floor(x_real));
-          DType top_left_y_w = 1.0 - (y_real - top_left_y);
-          DType top_left_x_w = 1.0 - (x_real - top_left_x);
+          const index_t grid_src_index = n * o_h * o_w * 2 + h * o_w + w;
+          const DType y_real = (*(grid_src + grid_src_index + o_h * o_w) + 1) 
* (i_h - 1) / 2;
+          const DType x_real = (*(grid_src + grid_src_index) + 1) * (i_w - 1) 
/ 2;
+          const auto top_left_y = static_cast<int>(floor(y_real));
+          const auto top_left_x = static_cast<int>(floor(x_real));
+          const DType top_left_y_w = 1.0 - (y_real - top_left_y);
+          const DType top_left_x_w = 1.0 - (x_real - top_left_x);
           for (index_t c = 0; c < static_cast<index_t>(o_c); ++c) {
             index_t grad_index = n * o_c * o_h * o_w + c * o_h * o_w + h * o_w 
+ w;
             index_t data_index = n * i_c * i_h * i_w + c * i_h * i_w + 
top_left_y * i_w

-- 
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].

Reply via email to