Browse Source

!3284 eager mode enable sparse

Merge pull request !3284 from riemann_penn/eager_mode_enable_sparse
tags/v0.7.0-beta
mindspore-ci-bot Gitee 5 years ago
parent
commit
ce6cc4a04e
2 changed files with 12 additions and 7 deletions
  1. +2
    -1
      mindspore/ccsrc/pipeline/jit/static_analysis/prim.cc
  2. +10
    -6
      mindspore/common/tensor.py

+ 2
- 1
mindspore/ccsrc/pipeline/jit/static_analysis/prim.cc View File

@@ -150,7 +150,8 @@ PrimitiveEvalImplMap &GetPrimitiveToEvalImplMap() {
using mindspore::parse::PyObjectWrapper; using mindspore::parse::PyObjectWrapper;


EvalResultPtr StandardPrimEvaluator::EvalPrim(const AnalysisEnginePtr &engine, const AbstractBasePtrList &args) { EvalResultPtr StandardPrimEvaluator::EvalPrim(const AnalysisEnginePtr &engine, const AbstractBasePtrList &args) {
if (prim_ != prim::kPrimMakeTuple && prim_ != prim::kPrimSwitch) {
if (prim_ != prim::kPrimMakeTuple && prim_ != prim::kPrimSwitch && prim_ != prim::kPrimEnvSetItem &&
prim_ != prim::kPrimEnvGetItem) {
auto ret_abstract = AbstractEval(args); auto ret_abstract = AbstractEval(args);
if (ret_abstract != nullptr) { if (ret_abstract != nullptr) {
MS_LOG(DEBUG) << "StandardPrimEvaluator eval Undetermined"; MS_LOG(DEBUG) << "StandardPrimEvaluator eval Undetermined";


+ 10
- 6
mindspore/common/tensor.py View File

@@ -217,17 +217,20 @@ class IndexedSlices:
A sparse representation of a set of tensor slices at given indices. A sparse representation of a set of tensor slices at given indices.


An IndexedSlices is typically used to represent a subset of a larger An IndexedSlices is typically used to represent a subset of a larger
tensor dense of shape [LARGE0, D1, .. , DN] where LARGE0 >> D0.
tensor dense of shape [L0, D1, .. , DN] where L0 >> D0.

The values in indices are the indices in the first dimension of the slices The values in indices are the indices in the first dimension of the slices
that have been extracted from the larger tensor.
that have been extracted from the larger tensor.

The dense tensor dense represented by an IndexedSlices slices has The dense tensor dense represented by an IndexedSlices slices has
`dense[slices.indices[i], :, :, :, ...] = slices.values[i, :, :, :, ...]`.
`dense[slices.indices[i], :, :, :, ...] = slices.values[i, :, :, :, ...]`.

IndexedSlices can only be used in `Cell`'s contruct method. IndexedSlices can only be used in `Cell`'s contruct method.


Args: Args:
indices (Tensor): A 1-D integer Tensor of shape [D0]. indices (Tensor): A 1-D integer Tensor of shape [D0].
values (Tensor): A Tensor of any dtype of shape [D0, D1, ..., Dn]. values (Tensor): A Tensor of any dtype of shape [D0, D1, ..., Dn].
dense_shape: (tuple): A integer tuple containing the shape
dense_shape (tuple): A integer tuple containing the shape
of the corresponding dense tensor. of the corresponding dense tensor.


Returns: Returns:
@@ -254,8 +257,9 @@ class SparseTensor:
A sparse representation of a set of nonzero elememts from a tensor at given indices. A sparse representation of a set of nonzero elememts from a tensor at given indices.


SparseTensor can only be used in `Cell`'s contruct method. SparseTensor can only be used in `Cell`'s contruct method.

For a tensor dense, its SparseTensor(indices, values, dense_shape) has For a tensor dense, its SparseTensor(indices, values, dense_shape) has
`dense[indices[i]] = values[i]`.
`dense[indices[i]] = values[i]`.


Args: Args:
indices (Tensor): A 2-D integer Tensor of shape `[N, ndims]`, indices (Tensor): A 2-D integer Tensor of shape `[N, ndims]`,
@@ -263,7 +267,7 @@ class SparseTensor:
the SparseTensor, respectively. the SparseTensor, respectively.
values (Tensor): A 1-D tensor of any type and shape `[N]`, which values (Tensor): A 1-D tensor of any type and shape `[N]`, which
supplies the values for each element in indices. supplies the values for each element in indices.
dense_shape: (tuple): A integer tuple of size `ndims`,
dense_shape (tuple): A integer tuple of size `ndims`,
which specifies the dense_shape of the sparse tensor. which specifies the dense_shape of the sparse tensor.


Returns: Returns:


Loading…
Cancel
Save