diff --git a/ccsrc/base/ms_kernels_internal/graphmode/internal_kernel_mod.cc b/ccsrc/base/ms_kernels_internal/graphmode/internal_kernel_mod.cc index 43e3c291323b370bc832c29bd2d2958936ed9e9d..e44b723e855cc55b047a80b3118279428117cdf2 100644 --- a/ccsrc/base/ms_kernels_internal/graphmode/internal_kernel_mod.cc +++ b/ccsrc/base/ms_kernels_internal/graphmode/internal_kernel_mod.cc @@ -238,17 +238,19 @@ int InternalKernelMod::Resize(const std::vector &inputs, const s return KRET_RESIZE_FAILED; } - for (auto i : kernel_inputs_index_) { - auto shape = TransInternalShape(inputs[i]->GetShapeVector()); - if (inputs[i]->dtype_id() == kMetaTypeNone) { + for (size_t i = 0; i < kernel_inputs_index_.size(); i++) { + auto index = kernel_inputs_index_[i]; + auto shape = TransInternalShape(inputs[index]->GetShapeVector()); + if (inputs[index]->dtype_id() == kMetaTypeNone) { shape = {}; } internal_inputs_shape_[i] = std::move(shape); } - for (auto i : kernel_outputs_index_) { - auto shape = TransInternalShape(outputs[i]->GetShapeVector()); - if (outputs[i]->dtype_id() == kMetaTypeNone) { + for (size_t i = 0; i < kernel_outputs_index_.size(); i++) { + auto index = kernel_outputs_index_[i]; + auto shape = TransInternalShape(outputs[index]->GetShapeVector()); + if (outputs[index]->dtype_id() == kMetaTypeNone) { shape = {}; } internal_outputs_shape_[i] = std::move(shape); @@ -270,12 +272,14 @@ int InternalKernelMod::Resize(const std::vector &inputs, const s void InternalKernelMod::UpdateAddr(const std::vector &inputs, const std::vector &outputs, const std::vector &workspace) { - for (auto i : kernel_inputs_index_) { - internal_inputs_addr_[i] = inputs[i]->device_ptr(); + for (size_t i = 0; i < kernel_inputs_index_.size(); i++) { + auto index = kernel_inputs_index_[i]; + internal_inputs_addr_[i] = inputs[index]->device_ptr(); } - for (auto i : kernel_outputs_index_) { - internal_outputs_addr_[i] = outputs[i]->device_ptr(); + for (size_t i = 0; i < kernel_outputs_index_.size(); i++) { + auto index = kernel_outputs_index_[i]; + internal_outputs_addr_[i] = outputs[index]->device_ptr(); } for (size_t i = 0; i < workspace.size(); i++) { diff --git a/ccsrc/base/ms_kernels_internal/pyboost/internal_pyboost_utils.cc b/ccsrc/base/ms_kernels_internal/pyboost/internal_pyboost_utils.cc index 2cd61651b84df7be3040a04d679c4b652d576e84..53e86e524814d4b1ebc477a7ceef906e3aff3e22 100644 --- a/ccsrc/base/ms_kernels_internal/pyboost/internal_pyboost_utils.cc +++ b/ccsrc/base/ms_kernels_internal/pyboost/internal_pyboost_utils.cc @@ -68,6 +68,18 @@ void GatherShape(const mindspore::tensor::TensorPtr &tensor) { } } // namespace +void GatherOpHash(const ms::Tensor &tensor) { + GatherOpHash(tensor.tensor()); +} + +void GatherOpHash(const std::optional &tensor) { + // "ot" for optional tensor + MemcpyToBuf("ot", kSizeTwo); + if (tensor.has_value()) { + GatherOpHash(tensor.value().tensor()); + } +} + void GatherOpHash(const mindspore::tensor::TensorPtr &tensor) { GatherType(tensor); } @@ -102,6 +114,16 @@ void GatherTilingHash(const std::vector &tensors) { } } +void GatherTilingHash(const ms::Tensor &tensor) { + GatherTilingHash(tensor.tensor()); +} + +void GatherTilingHash(const std::optional &tensor) { + if (tensor.has_value()) { + GatherTilingHash(tensor.value().tensor()); + } +} + void GatherHash(const std::vector &int_arrays) { MemcpyToBuf(&int_arrays, sizeof(void *)); } diff --git a/ccsrc/base/ms_kernels_internal/pyboost/internal_pyboost_utils.h b/ccsrc/base/ms_kernels_internal/pyboost/internal_pyboost_utils.h index 7fa545e152ac195179a5edec30dbf71a2bf95a60..fefbda9fae5fcedc72d180586b34329b6d28cdbe 100644 --- a/ccsrc/base/ms_kernels_internal/pyboost/internal_pyboost_utils.h +++ b/ccsrc/base/ms_kernels_internal/pyboost/internal_pyboost_utils.h @@ -17,15 +17,18 @@ #ifndef MS_CUSTOM_OPS_INTERNAL_PYBOOST_UTILS_H_ #define MS_CUSTOM_OPS_INTERNAL_PYBOOST_UTILS_H_ -#include "internal_helper.h" -#include "internal_tiling_cache.h" -#include "kernel/ascend/acl_ir/op_api_cache.h" #include #include #include #include +#include "internal_helper.h" +#include "internal_tiling_cache.h" +#include "kernel/ascend/acl_ir/op_api_cache.h" +#include "ms_extension/api.h" namespace ms_custom_ops { +void GatherOpHash(const ms::Tensor &); +void GatherOpHash(const std::optional &); void GatherOpHash(const mindspore::tensor::TensorPtr &); void GatherOpHash(const std::optional &); void GatherOpHash(const std::vector &); @@ -70,6 +73,8 @@ uint64_t CalcInternalOpApiHash(const std::string &arg, const Args &... args) { return calc_hash_id(); } +void GatherTilingHash(const ms::Tensor &); +void GatherTilingHash(const std::optional &); void GatherTilingHash(const mindspore::tensor::TensorPtr &); void GatherTilingHash(const std::optional &); void GatherTilingHash(const std::vector &);