From 57395f70dbc24d3ac5f97626520194f6773303e8 Mon Sep 17 00:00:00 2001 From: Penporn Koanantakool Date: Tue, 3 Sep 2019 15:39:06 -0700 Subject: [PATCH] Add CSRSparseMatrix ops. PiperOrigin-RevId: 267029468 --- tensorflow/core/BUILD | 4 + .../api_def_CSRSparseMatrixComponents.pbtxt | 29 + .../api_def_CSRSparseMatrixToDense.pbtxt | 13 + ...pi_def_CSRSparseMatrixToSparseTensor.pbtxt | 20 + .../api_def_DenseToCSRSparseMatrix.pbtxt | 16 + .../base_api/api_def_SparseMatrixAdd.pbtxt | 28 + .../base_api/api_def_SparseMatrixMatMul.pbtxt | 67 + .../base_api/api_def_SparseMatrixMul.pbtxt | 26 + .../base_api/api_def_SparseMatrixNNZ.pbtxt | 12 + .../api_def_SparseMatrixOrderingAMD.pbtxt | 63 + .../api_def_SparseMatrixSoftmax.pbtxt | 19 + .../api_def_SparseMatrixSoftmaxGrad.pbtxt | 16 + .../api_def_SparseMatrixSparseCholesky.pbtxt | 95 ++ .../api_def_SparseMatrixSparseMatMul.pbtxt | 110 ++ .../api_def_SparseMatrixTranspose.pbtxt | 20 + .../base_api/api_def_SparseMatrixZeros.pbtxt | 12 + ...pi_def_SparseTensorToCSRSparseMatrix.pbtxt | 20 + tensorflow/core/kernels/BUILD | 3 +- tensorflow/core/kernels/cuda_sparse.cc | 343 +++- tensorflow/core/kernels/cuda_sparse.h | 247 ++- tensorflow/core/kernels/sparse/BUILD | 100 ++ tensorflow/core/kernels/sparse/add_op.cc | 342 ++++ tensorflow/core/kernels/sparse/conj_op.cc | 98 ++ .../sparse/csr_sparse_matrix_to_dense_op.cc | 267 +++ .../csr_sparse_matrix_to_sparse_tensor_op.cc | 264 +++ .../sparse/dense_to_csr_sparse_matrix_op.cc | 398 +++++ tensorflow/core/kernels/sparse/kernels.cc | 100 ++ tensorflow/core/kernels/sparse/kernels.h | 247 +++ .../core/kernels/sparse/kernels_gpu.cu.cc | 676 ++++++++ .../core/kernels/sparse/kernels_test.cc | 82 + tensorflow/core/kernels/sparse/mat_mul_op.cc | 436 +++++ tensorflow/core/kernels/sparse/mul_op.cc | 171 ++ tensorflow/core/kernels/sparse/nnz_op.cc | 78 + tensorflow/core/kernels/sparse/softmax_op.cc | 225 +++ .../core/kernels/sparse/sparse_cholesky_op.cc | 288 ++++ .../core/kernels/sparse/sparse_mat_mul_op.cc | 651 +++++++ .../core/kernels/sparse/sparse_matrix.cc | 43 + .../core/kernels/sparse/sparse_matrix.h | 640 +++++++ .../sparse/sparse_matrix_components_op.cc | 150 ++ .../kernels/sparse/sparse_ordering_amd_op.cc | 131 ++ .../sparse_tensor_to_csr_sparse_matrix_op.cc | 345 ++++ .../core/kernels/sparse/transpose_op.cc | 189 +++ tensorflow/core/kernels/sparse/transpose_op.h | 73 + tensorflow/core/kernels/sparse/zeros_op.cc | 93 + tensorflow/core/kernels/sparse/zeros_op.h | 88 + tensorflow/core/ops/sparse_csr_matrix_ops.cc | 613 +++++++ .../core/ops/sparse_csr_matrix_ops_test.cc | 369 ++++ tensorflow/opensource_only.files | 3 + tensorflow/python/BUILD | 3 + tensorflow/python/kernel_tests/BUILD | 56 +- .../kernel_tests/csr_sparse_matrix_test.py | 266 +++ ...arse_csr_matrix_dense_mat_mul_grad_test.py | 138 ++ .../sparse_csr_matrix_grad_test.py | 119 ++ .../sparse_csr_matrix_ops_test.py | 1511 +++++++++++++++++ ...rse_csr_matrix_sparse_mat_mul_grad_test.py | 137 ++ tensorflow/python/ops/linalg/sparse/BUILD | 35 + .../python/ops/linalg/sparse/__init__.py | 0 tensorflow/python/ops/linalg/sparse/sparse.py | 25 + .../linalg/sparse/sparse_csr_matrix_grad.py | 233 +++ .../linalg/sparse/sparse_csr_matrix_ops.py | 378 +++++ tensorflow/tools/test/BUILD | 5 + third_party/eigen3/BUILD | 3 + third_party/eigen3/Eigen/OrderingMethods | 1 + third_party/eigen3/Eigen/SparseCholesky | 1 + third_party/eigen3/Eigen/SparseCore | 1 + third_party/eigen3/LICENSE | 2 + 66 files changed, 11215 insertions(+), 22 deletions(-) create mode 100644 tensorflow/core/api_def/base_api/api_def_CSRSparseMatrixComponents.pbtxt create mode 100644 tensorflow/core/api_def/base_api/api_def_CSRSparseMatrixToDense.pbtxt create mode 100644 tensorflow/core/api_def/base_api/api_def_CSRSparseMatrixToSparseTensor.pbtxt create mode 100644 tensorflow/core/api_def/base_api/api_def_DenseToCSRSparseMatrix.pbtxt create mode 100644 tensorflow/core/api_def/base_api/api_def_SparseMatrixAdd.pbtxt create mode 100644 tensorflow/core/api_def/base_api/api_def_SparseMatrixMatMul.pbtxt create mode 100644 tensorflow/core/api_def/base_api/api_def_SparseMatrixMul.pbtxt create mode 100644 tensorflow/core/api_def/base_api/api_def_SparseMatrixNNZ.pbtxt create mode 100644 tensorflow/core/api_def/base_api/api_def_SparseMatrixOrderingAMD.pbtxt create mode 100644 tensorflow/core/api_def/base_api/api_def_SparseMatrixSoftmax.pbtxt create mode 100644 tensorflow/core/api_def/base_api/api_def_SparseMatrixSoftmaxGrad.pbtxt create mode 100644 tensorflow/core/api_def/base_api/api_def_SparseMatrixSparseCholesky.pbtxt create mode 100644 tensorflow/core/api_def/base_api/api_def_SparseMatrixSparseMatMul.pbtxt create mode 100644 tensorflow/core/api_def/base_api/api_def_SparseMatrixTranspose.pbtxt create mode 100644 tensorflow/core/api_def/base_api/api_def_SparseMatrixZeros.pbtxt create mode 100644 tensorflow/core/api_def/base_api/api_def_SparseTensorToCSRSparseMatrix.pbtxt create mode 100644 tensorflow/core/kernels/sparse/BUILD create mode 100644 tensorflow/core/kernels/sparse/add_op.cc create mode 100644 tensorflow/core/kernels/sparse/conj_op.cc create mode 100644 tensorflow/core/kernels/sparse/csr_sparse_matrix_to_dense_op.cc create mode 100644 tensorflow/core/kernels/sparse/csr_sparse_matrix_to_sparse_tensor_op.cc create mode 100644 tensorflow/core/kernels/sparse/dense_to_csr_sparse_matrix_op.cc create mode 100644 tensorflow/core/kernels/sparse/kernels.cc create mode 100644 tensorflow/core/kernels/sparse/kernels.h create mode 100644 tensorflow/core/kernels/sparse/kernels_gpu.cu.cc create mode 100644 tensorflow/core/kernels/sparse/kernels_test.cc create mode 100644 tensorflow/core/kernels/sparse/mat_mul_op.cc create mode 100644 tensorflow/core/kernels/sparse/mul_op.cc create mode 100644 tensorflow/core/kernels/sparse/nnz_op.cc create mode 100644 tensorflow/core/kernels/sparse/softmax_op.cc create mode 100644 tensorflow/core/kernels/sparse/sparse_cholesky_op.cc create mode 100644 tensorflow/core/kernels/sparse/sparse_mat_mul_op.cc create mode 100644 tensorflow/core/kernels/sparse/sparse_matrix.cc create mode 100644 tensorflow/core/kernels/sparse/sparse_matrix.h create mode 100644 tensorflow/core/kernels/sparse/sparse_matrix_components_op.cc create mode 100644 tensorflow/core/kernels/sparse/sparse_ordering_amd_op.cc create mode 100644 tensorflow/core/kernels/sparse/sparse_tensor_to_csr_sparse_matrix_op.cc create mode 100644 tensorflow/core/kernels/sparse/transpose_op.cc create mode 100644 tensorflow/core/kernels/sparse/transpose_op.h create mode 100644 tensorflow/core/kernels/sparse/zeros_op.cc create mode 100644 tensorflow/core/kernels/sparse/zeros_op.h create mode 100644 tensorflow/core/ops/sparse_csr_matrix_ops.cc create mode 100644 tensorflow/core/ops/sparse_csr_matrix_ops_test.cc create mode 100644 tensorflow/python/kernel_tests/csr_sparse_matrix_test.py create mode 100644 tensorflow/python/kernel_tests/sparse_csr_matrix_dense_mat_mul_grad_test.py create mode 100644 tensorflow/python/kernel_tests/sparse_csr_matrix_grad_test.py create mode 100644 tensorflow/python/kernel_tests/sparse_csr_matrix_ops_test.py create mode 100644 tensorflow/python/kernel_tests/sparse_csr_matrix_sparse_mat_mul_grad_test.py create mode 100644 tensorflow/python/ops/linalg/sparse/BUILD create mode 100644 tensorflow/python/ops/linalg/sparse/__init__.py create mode 100644 tensorflow/python/ops/linalg/sparse/sparse.py create mode 100644 tensorflow/python/ops/linalg/sparse/sparse_csr_matrix_grad.py create mode 100644 tensorflow/python/ops/linalg/sparse/sparse_csr_matrix_ops.py create mode 100644 third_party/eigen3/Eigen/OrderingMethods create mode 100644 third_party/eigen3/Eigen/SparseCholesky create mode 100644 third_party/eigen3/Eigen/SparseCore diff --git a/tensorflow/core/BUILD b/tensorflow/core/BUILD index a7e65884923..efb943da1ef 100644 --- a/tensorflow/core/BUILD +++ b/tensorflow/core/BUILD @@ -1170,6 +1170,7 @@ tf_gen_op_libs( "set_ops", "script_ops", "sendrecv_ops", + "sparse_csr_matrix_ops", "sparse_ops", "spectral_ops", "state_ops", @@ -1395,6 +1396,7 @@ cc_library( ":sdca_ops_op_lib", ":sendrecv_ops_op_lib", ":set_ops_op_lib", + ":sparse_csr_matrix_ops_op_lib", ":sparse_ops_op_lib", ":summary_ops_op_lib", ":spectral_ops_op_lib", @@ -1584,6 +1586,7 @@ cc_library( "//tensorflow/core/kernels:summary_kernels", "//tensorflow/core/kernels:training_ops", "//tensorflow/core/kernels:word2vec_kernels", + "//tensorflow/core/kernels/sparse:kernels", ] + tf_additional_cloud_kernel_deps() + if_not_windows([ "//tensorflow/core/kernels:fact_op", "//tensorflow/core/kernels:array_not_windows", @@ -5179,6 +5182,7 @@ tf_cc_tests( "ops/rnn_ops_test.cc", "ops/set_ops_test.cc", "ops/shape_function_test.cc", + "ops/sparse_csr_matrix_ops_test.cc", "ops/sparse_ops_test.cc", "ops/spectral_ops_test.cc", "ops/state_ops_test.cc", diff --git a/tensorflow/core/api_def/base_api/api_def_CSRSparseMatrixComponents.pbtxt b/tensorflow/core/api_def/base_api/api_def_CSRSparseMatrixComponents.pbtxt new file mode 100644 index 00000000000..8964b60e33d --- /dev/null +++ b/tensorflow/core/api_def/base_api/api_def_CSRSparseMatrixComponents.pbtxt @@ -0,0 +1,29 @@ +op { + graph_op_name: "CSRSparseMatrixComponents" + visibility: HIDDEN + in_arg { + name: "csr_sparse_matrix" + description: "A batched CSRSparseMatrix." + } + in_arg { + name: "index" + description: "The index in `csr_sparse_matrix`'s batch." + } + out_arg { + name: "row_ptrs" + description: "An array containing CSR matrix row pointers." + } + out_arg { + name: "col_inds" + description: "An array containing CSR matrix column indices." + } + out_arg { + name: "values" + description: "An array containing CSR matrix nonzero values." + } + summary: "Reads out the CSR components at batch `index`." + description: <