From 410267d45f114d595161639dc8adc609f01a5c6e Mon Sep 17 00:00:00 2001 From: eric-haibin-lin Date: Sun, 23 Jul 2017 22:27:41 +0000 Subject: [PATCH 1/2] skip sparse dot gpu tset. add sparse_nd_zeros gpu test --- src/operator/tensor/elemwise_binary_op_basic.cu | 7 ++----- tests/python/gpu/test_operator_gpu.py | 2 +- tests/python/unittest/test_sparse_ndarray.py | 12 ------------ tests/python/unittest/test_sparse_operator.py | 16 +++++++++++++++- 4 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/operator/tensor/elemwise_binary_op_basic.cu b/src/operator/tensor/elemwise_binary_op_basic.cu index b75ce8118c2f..ff432380d6d1 100644 --- a/src/operator/tensor/elemwise_binary_op_basic.cu +++ b/src/operator/tensor/elemwise_binary_op_basic.cu @@ -9,8 +9,7 @@ namespace mxnet { namespace op { NNVM_REGISTER_OP(elemwise_add) -.set_attr("FCompute", BinaryComputeWithHalf2) -.set_attr("FComputeEx", BinaryComputeEx); +.set_attr("FCompute", BinaryComputeWithHalf2); NNVM_REGISTER_OP(_grad_add) .set_attr("FCompute", BinaryComputeWithHalf2); @@ -18,9 +17,7 @@ NNVM_REGISTER_OP(_grad_add) NNVM_REGISTER_OP(_backward_add) .set_attr("FCompute", BinaryBackwardUseNoneWithHalf2) -.set_attr("FComputeEx", - BinaryBackwardUseNoneEx); + mshadow_op::identity, mshadow_op::identity>); NNVM_REGISTER_OP(_sub) .set_attr("FCompute", BinaryComputeWithHalf2); diff --git a/tests/python/gpu/test_operator_gpu.py b/tests/python/gpu/test_operator_gpu.py index 79806901f522..87957812240c 100644 --- a/tests/python/gpu/test_operator_gpu.py +++ b/tests/python/gpu/test_operator_gpu.py @@ -5,7 +5,7 @@ from test_operator import * from test_optimizer import * from test_random import * -from test_sparse_operator import test_sparse_dot +from test_sparse_operator import test_sparse_nd_zeros, test_sparse_dot import mxnet as mx import numpy as np from mxnet.test_utils import check_consistency, set_default_context diff --git a/tests/python/unittest/test_sparse_ndarray.py b/tests/python/unittest/test_sparse_ndarray.py index 1ba219c97aae..e88057f16ba4 100644 --- a/tests/python/unittest/test_sparse_ndarray.py +++ b/tests/python/unittest/test_sparse_ndarray.py @@ -60,18 +60,6 @@ def test_sparse_nd_elementwise_fallback(): check_sparse_nd_elemwise_binary(shape, ['row_sparse', 'row_sparse'], op, g) -def test_sparse_nd_zeros(): - def check_sparse_nd_zeros(stype, shape): - zero = mx.nd.zeros(shape) - sparse_zero = mx.nd.zeros(shape=shape, stype=stype) - assert_almost_equal(sparse_zero.asnumpy(), zero.asnumpy()) - - shape = rand_shape_2d() - check_sparse_nd_zeros('row_sparse', shape) - check_sparse_nd_zeros('csr', shape) - check_sparse_nd_zeros('default', shape) - - def test_sparse_nd_copy(): def check_sparse_nd_copy(from_stype, to_stype): shape = rand_shape_2d() diff --git a/tests/python/unittest/test_sparse_operator.py b/tests/python/unittest/test_sparse_operator.py index b95ae1384943..cc63ec6e9dc4 100644 --- a/tests/python/unittest/test_sparse_operator.py +++ b/tests/python/unittest/test_sparse_operator.py @@ -139,7 +139,9 @@ def test_dot_csr(lhs_shape, rhs_shape, rhs_stype, trans_lhs, density=1): test_dot_csr(lhs_shape, (lhs_shape[1], rnd.randint(1, 10)), 'row_sparse', False) test_dot_csr(lhs_shape, (lhs_shape[0], rnd.randint(1, 10)), 'row_sparse', True) test_dot_csr(lhs_shape, (lhs_shape[1], rnd.randint(1, 10)), 'row_sparse', False, 0.05) - test_dot_csr(lhs_shape, (lhs_shape[0], rnd.randint(1, 10)), 'row_sparse', True, 0.05) + # TODO(haibin/jun/stefan) test dot(csr.T, row_sparse) = dns gpu version + if Context.default_ctx == mx.cpu(): + test_dot_csr(lhs_shape, (lhs_shape[0], rnd.randint(1, 10)), 'row_sparse', True, 0.05) def test_sparse_slice(): @@ -179,6 +181,18 @@ def test_sparse_retain(): sym = mx.sym.sparse_retain(data=data, indices=idx) check_numeric_gradient(sym, [rsp, indices], grad_nodes=['data'], grad_stype_dict={'data': 'row_sparse'}) +def test_sparse_nd_zeros(): + def check_sparse_nd_zeros(stype, shape): + zero = mx.nd.zeros(shape) + sparse_zero = mx.nd.zeros(shape=shape, stype=stype) + assert_almost_equal(sparse_zero.asnumpy(), zero.asnumpy()) + + shape = rand_shape_2d() + check_sparse_nd_zeros('row_sparse', shape) + check_sparse_nd_zeros('csr', shape) + check_sparse_nd_zeros('default', shape) + + if __name__ == '__main__': import nose nose.runmodule() From 0b6e3c8fc0482d55ca064d02614953ea604762a8 Mon Sep 17 00:00:00 2001 From: eric-haibin-lin Date: Sun, 23 Jul 2017 22:33:02 +0000 Subject: [PATCH 2/2] remove sparse_retain gpu --- src/operator/tensor/indexing_op.cu | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/operator/tensor/indexing_op.cu b/src/operator/tensor/indexing_op.cu index 4378bd574932..287ec25d70be 100644 --- a/src/operator/tensor/indexing_op.cu +++ b/src/operator/tensor/indexing_op.cu @@ -26,12 +26,6 @@ NNVM_REGISTER_OP(batch_take) NNVM_REGISTER_OP(one_hot) .set_attr("FCompute", OneHotOpForward); -NNVM_REGISTER_OP(sparse_retain) -.set_attr("FComputeEx", SparseRetainOpForwardEx); - -NNVM_REGISTER_OP(_backward_sparse_retain) -.set_attr("FComputeEx", SparseRetainOpBackwardEx); - } // namespace op } // namespace mxnet