def sgd_update_gpu(param, grad_param, learning_rate): """Helper GPU SGD update method. Avoids copying NDArray to cpu.""" assert isinstance(param, ndarray.NDArray) assert isinstance(grad_param, ndarray.NDArray) gpu_op.matrix_elementwise_multiply_by_const( grad_param, -learning_rate, grad_param) gpu_op.matrix_elementwise_add(param, grad_param, param)
def test_matrix_elementwise_add(): ctx = ndarray.gpu(0) shape = (500, 200) x = np.random.uniform(0, 10, size=shape).astype(np.float32) y = np.random.uniform(0, 10, size=shape).astype(np.float32) arr_x = ndarray.array(x, ctx=ctx) arr_y = ndarray.array(y, ctx=ctx) arr_z = ndarray.empty(shape, ctx=ctx) gpu_op.matrix_elementwise_add(arr_x, arr_y, arr_z) z = arr_z.asnumpy() np.testing.assert_allclose(x + y, z, rtol=1e-5)