apeforest commented on a change in pull request #12884: adding unittest for 
MKLDNN Softmax operator
URL: https://github.com/apache/incubator-mxnet/pull/12884#discussion_r234534189
 
 

 ##########
 File path: tests/cpp/operator/mkldnn_operator_test.cc
 ##########
 @@ -558,31 +607,41 @@ void TestOpEx(const OpAttrs &forward_attrs, const 
OpAttrs &backwards_attrs) {
         Engine::Get()->WaitForAll();
         AssertEqual(outputs, ex_outputs);
 
-        // backwards test performed same time since output needed
-        backwards_input[0] = outputs[0];  // output grad
-        backwards_input[1] = inputs[0];  // input
-        backwards_input[2] = outputs[1];  // out norm
+        if (!backwards_attrs.requests.empty()) {
+          TestOpExBackward(forward_attrs, backwards_attrs, OpReqType::kWriteTo,
+                           inputs, outputs, in_arr, out_arrs[0][output_i]);
+        }
+      }
+    }
+  }
 
-        auto tmp_output = GetTestInputArrays(forward_attrs.input_types, 
true)[i1];
-        backwards_outputs[0] = &tmp_output.arr;
+  if (forward_attrs.requests.find(OpReqType::kWriteInplace) != 
forward_attrs.requests.end()) {
+    for (int i1 = 0; i1 < in_arrs.size(); i1++) {
+      auto in_arr = in_arrs[i1];
 
-        auto tmp_output2 = GetTestInputArrays(forward_attrs.input_types, 
true)[i1];
-        backwards_ex_outputs[0] = &tmp_output2.arr;
+      // If the array is a view, we shouldn't write data to it.
+      if (in_arr.arr.IsView())
+          continue;
 
-        for (int i = 0; i < backwards_attrs.num_outputs; i++)
-          back_req[i] = kWriteTo;
+      NDArrayAttrs orig(in_arr.arr.Copy(in_arr.arr.ctx()), "InPlace Copy");
+      for (int i = 0; i < forward_attrs.num_inputs; i++)
+        inputs[i] = &in_arr.arr;
 
-        std::cout << "Backwards: ";
-        PrintVerifyMsg(out_arrs[0][output_i], tmp_output);
-        Imperative::Get()->InvokeOp(
-            Context(), backwards_attrs.attrs, backwards_input, 
backwards_outputs,
-            back_req, DispatchMode::kFCompute, mxnet::OpStatePtr());
-        Imperative::Get()->InvokeOp(
-            Context(), backwards_attrs.attrs, backwards_input, 
backwards_ex_outputs,
-            back_req, DispatchMode::kFComputeEx, mxnet::OpStatePtr());
-        Engine::Get()->WaitForAll();
-        AssertEqual(backwards_outputs, backwards_ex_outputs);
+      for (int i = 0; i < forward_attrs.num_outputs; i++) {
 
 Review comment:
   Why testing forward again in this section?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to