Browse Source

Update GraphEngine to synchronize with latest Ascend driver software suite 17 May 2020

tags/v0.3.0-alpha
yanghaoran 5 years ago
parent
commit
828eb02503
100 changed files with 860 additions and 3698 deletions
  1. +6
    -4
      CMakeLists.txt
  2. +35
    -35
      build.sh
  3. +0
    -11
      cmake/external_libs/securec.cmake
  4. +0
    -36
      inc/common/util/compress/compress.h
  5. +0
    -2
      inc/external/ge/ge_api_types.h
  6. +1
    -1
      inc/external/graph/inference_context.h
  7. +22
    -0
      inc/external/register/register.h
  8. +8
    -8
      inc/framework/common/debug/ge_log.h
  9. +11
    -11
      inc/framework/common/debug/log.h
  10. +1
    -0
      inc/framework/common/ge_inner_error_codes.h
  11. +2
    -2
      inc/framework/common/gflags_util.h
  12. +3
    -2
      inc/framework/common/helper/model_helper.h
  13. +2
    -4
      inc/framework/common/helper/om_file_helper.h
  14. +2
    -2
      inc/framework/common/l2_cache_optimize.h
  15. +3
    -9
      inc/framework/common/op/attr_value_util.h
  16. +0
    -2
      inc/framework/common/op/ge_op_utils.h
  17. +2
    -2
      inc/framework/common/op/op_parser_util.h
  18. +2
    -2
      inc/framework/common/op_types.h
  19. +3
    -3
      inc/framework/common/scope_guard.h
  20. +2
    -2
      inc/framework/common/string_util.h
  21. +17
    -18
      inc/framework/common/types.h
  22. +2
    -2
      inc/framework/common/util.h
  23. +7
    -13
      inc/framework/omg/omg_inner_types.h
  24. +2
    -2
      inc/framework/omg/version.h
  25. +47
    -267
      inc/graph/debug/ge_attr_define.h
  26. +1
    -1
      inc/graph/detail/model_serialize_imp.h
  27. +4
    -0
      inc/graph/model.h
  28. +3
    -3
      inc/graph/usr_types.h
  29. +0
    -2
      inc/graph/utils/graph_utils.h
  30. +1
    -0
      src/common/graph/CMakeLists.txt
  31. +1
    -0
      src/common/graph/anchor.cc
  32. +10
    -27
      src/common/graph/compute_graph.cc
  33. +1
    -0
      src/common/graph/format_refiner.cc
  34. +13
    -210
      src/common/graph/ge_attr_define.cc
  35. +2
    -1
      src/common/graph/shape_refiner.cc
  36. +0
    -57
      src/common/graph/utils/graph_utils.cc
  37. +0
    -1
      src/common/graph/utils/tensor_utils.cc
  38. +2
    -8
      src/ge/CMakeLists.txt
  39. +1
    -0
      src/ge/client/CMakeLists.txt
  40. +2
    -0
      src/ge/client/ge_api.cc
  41. +1
    -1
      src/ge/common/CMakeLists.txt
  42. +4
    -1
      src/ge/common/auth/file_saver.cc
  43. +28
    -24
      src/ge/common/auth/file_saver.h
  44. +0
    -1
      src/ge/common/context/ctx.cc
  45. +5
    -6
      src/ge/common/formats/format_transfers/datatype_transfer.cc
  46. +6
    -15
      src/ge/common/formats/format_transfers/format_transfer_c1hwncoc0_hwcn.cc
  47. +0
    -5
      src/ge/common/formats/format_transfers/format_transfer_dhwcn_fracz3D.cc
  48. +0
    -5
      src/ge/common/formats/format_transfers/format_transfer_dhwnc_fracz3D_transpose.cc
  49. +0
    -10
      src/ge/common/formats/format_transfers/format_transfer_fractal_nz.cc
  50. +0
    -15
      src/ge/common/formats/format_transfers/format_transfer_fractal_z.cc
  51. +0
    -10
      src/ge/common/formats/format_transfers/format_transfer_fractal_zz.cc
  52. +0
    -6
      src/ge/common/formats/format_transfers/format_transfer_fracz_hwcn.cc
  53. +0
    -7
      src/ge/common/formats/format_transfers/format_transfer_fracz_nchw.cc
  54. +0
    -6
      src/ge/common/formats/format_transfers/format_transfer_fracz_nhwc.cc
  55. +7
    -17
      src/ge/common/formats/format_transfers/format_transfer_hwcn_c1hwncoc0.cc
  56. +1
    -7
      src/ge/common/formats/format_transfers/format_transfer_nc1hwc0_nchw.cc
  57. +1
    -7
      src/ge/common/formats/format_transfers/format_transfer_nc1hwc0_nhwc.cc
  58. +0
    -314
      src/ge/common/formats/format_transfers/format_transfer_nchw_fz_c04.cc
  59. +0
    -35
      src/ge/common/formats/format_transfers/format_transfer_nchw_fz_c04.h
  60. +19
    -35
      src/ge/common/formats/format_transfers/format_transfer_nchw_nc1hwc0.cc
  61. +1
    -7
      src/ge/common/formats/format_transfers/format_transfer_nhwc_nc1hwc0.cc
  62. +3
    -7
      src/ge/common/formats/format_transfers/format_transfer_transpose.cc
  63. +1
    -11
      src/ge/common/formats/formats.cc
  64. +3
    -3
      src/ge/common/formats/utils/formats_trans_utils.cc
  65. +0
    -3
      src/ge/common/formats/utils/formats_trans_utils.h
  66. +1
    -1
      src/ge/common/fp16_t.h
  67. +2
    -3
      src/ge/common/ge/plugin_manager.cc
  68. +0
    -1707
      src/ge/common/helper/model_cache_helper.cc
  69. +0
    -121
      src/ge/common/helper/model_cache_helper.h
  70. +2
    -4
      src/ge/common/helper/model_helper.cc
  71. +3
    -2
      src/ge/common/helper/om_file_helper.cc
  72. +2
    -2
      src/ge/common/math_util.h
  73. +7
    -1
      src/ge/common/model_parser/base.cc
  74. +1
    -1
      src/ge/common/model_saver.cc
  75. +2
    -2
      src/ge/common/op/attr_value_util.cc
  76. +2
    -4
      src/ge/common/op/ge_op_utils.cc
  77. +84
    -95
      src/ge/common/profiling/profiling_manager.cc
  78. +3
    -4
      src/ge/common/profiling/profiling_manager.h
  79. +1
    -1
      src/ge/common/properties_manager.cc
  80. +193
    -193
      src/ge/common/types.cc
  81. +14
    -13
      src/ge/common/util.cc
  82. +1
    -1
      src/ge/executor/CMakeLists.txt
  83. +14
    -3
      src/ge/executor/ge_executor.cc
  84. +1
    -0
      src/ge/ge_local_engine/CMakeLists.txt
  85. +1
    -1
      src/ge/ge_local_engine/engine/host_cpu_engine.cc
  86. +1
    -1
      src/ge/ge_local_engine/engine/host_cpu_engine.h
  87. +2
    -0
      src/ge/ge_local_engine/ops_kernel_store/ge_local_ops_kernel_info.cc
  88. +1
    -0
      src/ge/ge_runtime/CMakeLists.txt
  89. +2
    -5
      src/ge/ge_runtime/runtime_model.cc
  90. +8
    -3
      src/ge/generator/ge_generator.cc
  91. +1
    -1
      src/ge/generator/generator_api.cc
  92. +8
    -7
      src/ge/graph/build/graph_builder.cc
  93. +1
    -1
      src/ge/graph/build/graph_builder.h
  94. +118
    -169
      src/ge/graph/build/logical_stream_allocator.cc
  95. +12
    -14
      src/ge/graph/build/logical_stream_allocator.h
  96. +1
    -0
      src/ge/graph/build/memory/CMakeLists.txt
  97. +3
    -3
      src/ge/graph/build/memory/binary_block_mem_assigner.cc
  98. +26
    -2
      src/ge/graph/build/memory/block_mem_assigner.cc
  99. +18
    -8
      src/ge/graph/build/memory/graph_mem_assigner.cc
  100. +23
    -17
      src/ge/graph/build/memory/var_mem_assign_util.cc

+ 6
- 4
CMakeLists.txt View File

@@ -42,12 +42,12 @@ include(${GE_SOURCE_DIR}/cmake/external_libs/eigen.cmake)
include(${GE_SOURCE_DIR}/cmake/external_libs/gtest.cmake)
include(${GE_SOURCE_DIR}/cmake/external_libs/protobuf.cmake)
include(${GE_SOURCE_DIR}/cmake/external_libs/onnx.cmake)
include(${GE_SOURCE_DIR}/cmake/external_libs/securec.cmake)
set(CMAKE_SKIP_RPATH TRUE)

# for CPU/GPU mode, find c_sec and slog from local prebuild
if(NOT ENABLE_D AND NOT GE_ONLY)
set(GE_PREBUILD_PATH ${GE_SOURCE_DIR}/third_party/prebuild/${CMAKE_HOST_SYSTEM_PROCESSOR})
find_library(c_sec libc_sec.so ${GE_PREBUILD_PATH})
find_library(slog libslog.so ${GE_PREBUILD_PATH})
# if D_LINK_PATH is set in environment variables, search libraries in given path
elseif(DEFINED ENV{D_LINK_PATH})
@@ -64,6 +64,7 @@ elseif(DEFINED ENV{D_LINK_PATH})
message(FATAL_ERROR "Running on a unsupported architecture: ${SYSTEM_TYPE}, build terminated")
endif()
set(GE_LIB_PATH ${GE_LIB_PATH}/${GE_SYS_ARCH})
find_library(c_sec libc_sec.so ${GE_LIB_PATH})
find_library(slog libslog.so ${GE_LIB_PATH})
find_library(mmpa libmmpa.so ${GE_LIB_PATH})
find_library(runtime libruntime.so ${GE_LIB_PATH})
@@ -80,6 +81,7 @@ else()
endif()
set(ASCEND_DRIVER_DIR ${ASCEND_DIR}/driver/lib64/common)
set(ASCEND_RUNTIME_DIR ${ASCEND_DIR}/fwkacllib/lib64)
find_library(c_sec libc_sec.so ${ASCEND_DRIVER_DIR})
find_library(slog libslog.so ${ASCEND_DRIVER_DIR})
find_library(mmpa libmmpa.so ${ASCEND_DRIVER_DIR})
find_library(msprof libmsprof.so ${ASCEND_DRIVER_DIR})
@@ -128,7 +130,7 @@ elseif(GE_ONLY)
add_subdirectory(${GE_SOURCE_DIR}/src/ge/plugin/engine)
endif()

if (ENABLE_GE_COV OR ENABLE_GE_UT OR ENABLE_GE_ST)
add_subdirectory(tests)
endif()
# if (ENABLE_GE_COV OR ENABLE_GE_UT OR ENABLE_GE_ST)
# add_subdirectory(tests)
# endif()


+ 35
- 35
build.sh View File

@@ -41,7 +41,7 @@ checkopts()
{
VERBOSE=""
THREAD_NUM=8
ENABLE_GE_UT_ONLY_COMPILE="off"
# ENABLE_GE_UT_ONLY_COMPILE="off"
ENABLE_GE_UT="off"
ENABLE_GE_ST="off"
ENABLE_GE_COV="off"
@@ -52,7 +52,7 @@ checkopts()
OPTARG=$(echo ${OPTARG} | tr '[A-Z]' '[a-z]')
case "${opt}" in
u)
ENABLE_GE_UT_ONLY_COMPILE="on"
# ENABLE_GE_UT_ONLY_COMPILE="on"
ENABLE_GE_UT="on"
GE_ONLY="off"
;;
@@ -137,39 +137,39 @@ find ${OUTPUT_PATH} -name "*.so*" -print0 | xargs -0 chmod 500

echo "---------------- GraphEngine output generated ----------------"

if [[ "X$ENABLE_GE_ST" = "Xon" ]]; then
cp ${BUILD_PATH}/graphengine/tests/st/st_resnet50_train ${OUTPUT_PATH}
fi
if [[ "X$ENABLE_GE_UT" = "Xon" || "X$ENABLE_GE_COV" = "Xon" ]]; then
cp ${BUILD_PATH}/graphengine/tests/ut/common/graph/ut_libgraph ${OUTPUT_PATH}
cp ${BUILD_PATH}/graphengine/tests/ut/ge/ut_libge_multiparts_utest ${OUTPUT_PATH}
cp ${BUILD_PATH}/graphengine/tests/ut/ge/ut_libge_distinct_load_utest ${OUTPUT_PATH}
cp ${BUILD_PATH}/graphengine/tests/ut/ge/ut_libge_others_utest ${OUTPUT_PATH}
cp ${BUILD_PATH}/graphengine/tests/ut/ge/ut_libge_kernel_utest ${OUTPUT_PATH}
if [[ "X${ENABLE_GE_UT_ONLY_COMPILE}" != "Xon" ]]; then
export LD_LIBRARY_PATH=${D_LINK_PATH}/x86_64/:${BUILD_PATH}../third_party/prebuild/x86_64/:${BUILD_PATH}/graphengine/:/usr/local/HiAI/driver/lib64:/usr/local/HiAI/runtime/lib64:${LD_LIBRARY_PATH}
echo ${LD_LIBRARY_PATH}
${OUTPUT_PATH}/ut_libgraph &&
${OUTPUT_PATH}/ut_libge_multiparts_utest &&
${OUTPUT_PATH}/ut_libge_distinct_load_utest &&
${OUTPUT_PATH}/ut_libge_others_utest &&
${OUTPUT_PATH}/ut_libge_kernel_utest
if [[ "$?" -ne 0 ]]; then
echo "!!! UT FAILED, PLEASE CHECK YOUR CHANGES !!!"
exit 1;
fi
fi
if [[ "X$ENABLE_GE_COV" = "Xon" ]]; then
echo "Generating coverage statistics, please wait..."
cd ${BASEPATH}
rm -rf ${BASEPATH}/cov
mkdir ${BASEPATH}/cov
gcovr -r ./ --exclude 'third_party' --exclude 'build' --exclude 'tests' --exclude 'prebuild' --exclude 'inc' --print-summary --html --html-details -d -o cov/index.html
fi
fi
# if [[ "X$ENABLE_GE_ST" = "Xon" ]]; then
# cp ${BUILD_PATH}/graphengine/tests/st/st_resnet50_train ${OUTPUT_PATH}
# fi
# if [[ "X$ENABLE_GE_UT" = "Xon" || "X$ENABLE_GE_COV" = "Xon" ]]; then
# cp ${BUILD_PATH}/graphengine/tests/ut/common/graph/ut_libgraph ${OUTPUT_PATH}
# cp ${BUILD_PATH}/graphengine/tests/ut/ge/ut_libge_multiparts_utest ${OUTPUT_PATH}
# cp ${BUILD_PATH}/graphengine/tests/ut/ge/ut_libge_distinct_load_utest ${OUTPUT_PATH}
# cp ${BUILD_PATH}/graphengine/tests/ut/ge/ut_libge_others_utest ${OUTPUT_PATH}
# cp ${BUILD_PATH}/graphengine/tests/ut/ge/ut_libge_kernel_utest ${OUTPUT_PATH}
# if [[ "X${ENABLE_GE_UT_ONLY_COMPILE}" != "Xon" ]]; then
# export LD_LIBRARY_PATH=${D_LINK_PATH}/x86_64/:${BUILD_PATH}../third_party/prebuild/x86_64/:${BUILD_PATH}/graphengine/:/usr/local/HiAI/driver/lib64:/usr/local/HiAI/runtime/lib64:${LD_LIBRARY_PATH}
# echo ${LD_LIBRARY_PATH}
# ${OUTPUT_PATH}/ut_libgraph &&
# ${OUTPUT_PATH}/ut_libge_multiparts_utest &&
# ${OUTPUT_PATH}/ut_libge_distinct_load_utest &&
# ${OUTPUT_PATH}/ut_libge_others_utest &&
# ${OUTPUT_PATH}/ut_libge_kernel_utest
# if [[ "$?" -ne 0 ]]; then
# echo "!!! UT FAILED, PLEASE CHECK YOUR CHANGES !!!"
# exit 1;
# fi
# fi
# if [[ "X$ENABLE_GE_COV" = "Xon" ]]; then
# echo "Generating coverage statistics, please wait..."
# cd ${BASEPATH}
# rm -rf ${BASEPATH}/cov
# mkdir ${BASEPATH}/cov
# gcovr -r ./ --exclude 'third_party' --exclude 'build' --exclude 'tests' --exclude 'prebuild' --exclude 'inc' --print-summary --html --html-details -d -o cov/index.html
# fi
# fi

# generate output package in tar form, including ut/st libraries/executables
cd ${BASEPATH}


+ 0
- 11
cmake/external_libs/securec.cmake View File

@@ -1,11 +0,0 @@
graphengine_add_pkg(securec
VER 1.1.10
URL https://gitee.com/openeuler/bounds_checking_function/repository/archive/v1.1.10.tar.gz
MD5 0782dd2351fde6920d31a599b23d8c91
LIBS c_sec
PATCHES ${GE_SOURCE_DIR}/third_party/patch/securec/securec.patch001
CMAKE_OPTION " "
)
include_directories(${securec_INC})
file(COPY ${securec_INC}/../lib/libc_sec.so DESTINATION ${CMAKE_SOURCE_DIR}/build/graphengine)
add_library(graphengine::securec ALIAS securec::c_sec)

+ 0
- 36
inc/common/util/compress/compress.h View File

@@ -1,36 +0,0 @@
/**
* Copyright 2019-2020 Huawei Technologies Co., Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef COMPRESS_H
#define COMPRESS_H

#include <uchar.h>

enum CmpStatus { RET_SUCCESS = 0, RET_ERROR = -1 };

struct CompressConfig {
size_t inputSize; // length of data to compress
size_t engineNum; // how many decompress engines
size_t maxRatio; // how much size of a basic compression block, only 64 supported now (8x: 64 4x: 32)
size_t channel; // channels of L2 or DDR. For load balance
size_t fractalSize; // size of compressing block
bool isTight; // whether compose compressed data tightly
};

CmpStatus CompressWeights(char* input, const CompressConfig& compressConfig, char* indexs, char* output,
size_t& compressedLength);

#endif // COMPRESS_H

+ 0
- 2
inc/external/ge/ge_api_types.h View File

@@ -40,8 +40,6 @@ const char *const OPTION_EXEC_EXTERN_PLUGIN_PATH = "ge.soLoadPath";
const char *const OPTION_EXEC_ENABLE_DUMP = "ge.exec.enableDump";
const char *const OPTION_EXEC_DUMP_PATH = "ge.exec.dumpPath";
const char *const OPTION_EXEC_DUMP_STEP = "ge.exec.dumpStep";
const char *const OPTION_EXEC_ENABLE_INCRE_BUILD = "ge.exec.enableIncreBuild";
const char *const OPTION_EXEC_INCRE_BUILD_CACHE_PATH = "ge.exec.increBuildCachePath";
// Hccl flag, if ge.exec.hcclFlag =1, it means load plugin for opskernel, else:ge.exec.hcclFlag =0
const char *const OPTION_EXEC_HCCL_FLAG = "ge.exec.hcclFlag";
const char *const OPTION_EXEC_ATOMIC_FLAG = "ge.exec.enable_atomic";


+ 1
- 1
inc/external/graph/inference_context.h View File

@@ -69,7 +69,7 @@ class GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY InferenceContext {
static std::unique_ptr<InferenceContext> Create();

private:
explicit InferenceContext(std::unique_ptr<InferenceContextImpl> &impl);
InferenceContext(std::unique_ptr<InferenceContextImpl> &impl);
std::shared_ptr<InferenceContextImpl> inference_context_impl_;
};
} // namespace ge


+ 22
- 0
inc/external/register/register.h View File

@@ -116,5 +116,27 @@ class FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY OpReceiver {
namespace ge {
using OpRegistrationData = domi::OpRegistrationData;
using OpReceiver = domi::OpReceiver;

class FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY HostCpuOp {
public:
HostCpuOp() = default;
virtual ~HostCpuOp() = default;

virtual graphStatus Compute(Operator &op, const std::map<std::string, const Tensor> &inputs,
std::map<std::string, Tensor> &outputs) = 0;
};

class FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY HostCpuOpRegistrar {
public:
HostCpuOpRegistrar(const char *op_type, HostCpuOp *(*create_fn)());
};

#define REGISTER_HOST_CPU_OP_BUILDER(name, op) REGISTER_HOST_CPU_OP_BUILDER_UNIQ_HELPER(__COUNTER__, name, op)

#define REGISTER_HOST_CPU_OP_BUILDER_UNIQ_HELPER(ctr, name, op) REGISTER_HOST_CPU_OP_BUILDER_UNIQ(ctr, name, op)

#define REGISTER_HOST_CPU_OP_BUILDER_UNIQ(ctr, name, op) \
static ::ge::HostCpuOpRegistrar register_host_cpu_op##ctr __attribute__((unused)) = \
::ge::HostCpuOpRegistrar(name, []() -> ::ge::HostCpuOp * { return new (std::nothrow) op(); })
} // namespace ge
#endif // INC_EXTERNAL_REGISTER_REGISTER_H_

+ 8
- 8
inc/framework/common/debug/ge_log.h View File

@@ -51,24 +51,24 @@ inline pid_t GetTid() {
return tid;
}

#define GE_TIMESTAMP_START(stage) uint64_t startUsec_##stage = ge::GetCurrentTimestap()
#define GE_TIMESTAMP_START(stage) uint64_t startUsec_##stage = domi::GetCurrentTimestap()

#define GE_TIMESTAMP_END(stage, stage_name) \
do { \
uint64_t endUsec_##stage = ge::GetCurrentTimestap(); \
uint64_t endUsec_##stage = domi::GetCurrentTimestap(); \
GEEVENT("[GEPERFTRACE] The time cost of %s is [%lu] micro second.", (stage_name), \
(endUsec_##stage - startUsec_##stage)); \
} while (0);

#define GE_TIMESTAMP_CALLNUM_START(stage) \
uint64_t startUsec_##stage = ge::GetCurrentTimestap(); \
uint64_t call_num_of##stage = 0; \
#define GE_TIMESTAMP_CALLNUM_START(stage) \
uint64_t startUsec_##stage = domi::GetCurrentTimestap(); \
uint64_t call_num_of##stage = 0; \
uint64_t time_of##stage = 0

#define GE_TIMESTAMP_RESTART(stage) (startUsec_##stage = ge::GetCurrentTimestap())
#define GE_TIMESTAMP_RESTART(stage) (startUsec_##stage = domi::GetCurrentTimestap())

#define GE_TIMESTAMP_ADD(stage) \
time_of##stage += ge::GetCurrentTimestap() - startUsec_##stage; \
#define GE_TIMESTAMP_ADD(stage) \
time_of##stage += domi::GetCurrentTimestap() - startUsec_##stage; \
call_num_of##stage++

#define GE_TIMESTAMP_CALLNUM_END(stage, stage_name) \


+ 11
- 11
inc/framework/common/debug/log.h View File

@@ -103,17 +103,17 @@ using cce::ccStatus_t;
} while (0);

// If expr is not true, print the log and return the specified status
#define GE_CHK_BOOL_RET_STATUS(expr, _status, ...) \
do { \
bool b = (expr); \
if (!b) { \
std::string msg; \
(void)msg.append(ge::StringUtils::FormatString(__VA_ARGS__)); \
(void)msg.append( \
ge::StringUtils::FormatString(" Error Code:0x%X(%s)", _status, GET_ERRORNO_STR(_status).c_str())); \
DOMI_LOGE("%s", msg.c_str()); \
return _status; \
} \
#define GE_CHK_BOOL_RET_STATUS(expr, _status, ...) \
do { \
bool b = (expr); \
if (!b) { \
std::string msg; \
(void)msg.append(domi::StringUtils::FormatString(__VA_ARGS__)); \
(void)msg.append( \
domi::StringUtils::FormatString(" Error Code:0x%X(%s)", _status, GET_ERRORNO_STR(_status).c_str())); \
DOMI_LOGE("%s", msg.c_str()); \
return _status; \
} \
} while (0);

// If expr is not true, print the log and return the specified status


+ 1
- 0
inc/framework/common/ge_inner_error_codes.h View File

@@ -152,6 +152,7 @@ GE_ERRORNO_GRAPH(GE_GRAPH_OPTIMIZE_RUN_GRAPH_INVALID, 11, "Get computeGraph by g
GE_ERRORNO_GRAPH(GE_GRAPH_OPTIMIZE_INSERT_DYN_OP_FAILED, 12, "Graph which insert dynamic op failed."); // 1343242252
GE_ERRORNO_GRAPH(GE_GRAPH_OPTIMIZE_PREPROCESS_FAILED, 13, "Graph preprocess failed."); // 1343242253
GE_ERRORNO_GRAPH(GE_GRAPH_OPTIMIZE_GRAPH_FUSION_FAILED, 14, "Graph fusion failed."); // 1343242254
GE_ERRORNO_GRAPH(GE_GRAPH_OPTIMIZE_TINY_CAL_CHECK_FAILED, 15, "Check tiny calibration failed."); // 1343242255
GE_ERRORNO_GRAPH(GE_GRAPH_OPTIMIZE_CALIBRATION_FAILED, 16, "Calibration failed."); // 1343242256
GE_ERRORNO_GRAPH(GE_GRAPH_SUBGRAPH_NUM_ZERO, 17, "Graph partition success, but subGraph num is 0."); // 1343242257
GE_ERRORNO_GRAPH(GE_GRAPH_SUBGRAPH_ENGINENAME_REPEATED, 18, "Graph subGraph engine name is repeated."); // 1343242258


+ 2
- 2
inc/framework/common/gflags_util.h View File

@@ -20,7 +20,7 @@
#include <gflags/gflags.h>
#include <string>

namespace ge {
namespace domi {
class GflagsUtils {
public:
static bool IsSetCommandTrue(const char *name) {
@@ -66,6 +66,6 @@ class GflagsUtils {
}
}
};
} // namespace ge
} // namespace domi

#endif // INC_FRAMEWORK_COMMON_GFLAGS_UTIL_H_

+ 3
- 2
inc/framework/common/helper/model_helper.h View File

@@ -26,7 +26,7 @@
#include "graph/model.h"
#include "model/ge_model.h"

namespace ge {
namespace domi {
class ModelHelper {
public:
ModelHelper() = default;
@@ -65,8 +65,9 @@ class ModelHelper {
Status LoadTask(OmFileLoadHelper& om_load_helper);
Status LoadTBEKernelStore(OmFileLoadHelper& om_load_helper);
Status ReleaseLocalModelData() noexcept;

Status SaveModelPartition(std::shared_ptr<OmFileSaveHelper>& om_file_save_helper, ModelPartitionType type,
const uint8_t* data, size_t size);
};
} // namespace ge
} // namespace domi
#endif // INC_FRAMEWORK_COMMON_HELPER_MODEL_HELPER_H_

+ 2
- 4
inc/framework/common/helper/om_file_helper.h View File

@@ -26,10 +26,8 @@
#include "framework/common/ge_types.h"

using ProcParam = struct PROC_PARAM;
using std::string;
using std::vector;

namespace ge {
namespace domi {
struct ModelPartition {
ModelPartitionType type;
uint8_t *data = 0;
@@ -90,5 +88,5 @@ class OmFileSaveHelper {
ModelFileHeader model_header_;
OmFileContext context_;
};
} // namespace ge
} // namespace domi
#endif // INC_FRAMEWORK_COMMON_HELPER_OM_FILE_HELPER_H_

+ 2
- 2
inc/framework/common/l2_cache_optimize.h View File

@@ -30,7 +30,7 @@

using std::vector;

namespace ge {
namespace domi {
// Size of RC memory alignment, 2M
constexpr size_t ALIGN_SIZE = 2097152;

@@ -118,6 +118,6 @@ class L2CacheOptimize {
bool Cross(const RCMemoryBlock &l_block, const RCMemoryBlock &r_block);
bool Connect(const RCMemoryBlock &l_block, const RCMemoryBlock &r_block);
};
} // namespace ge
} // namespace domi

#endif // INC_FRAMEWORK_COMMON_L2_CACHE_OPTIMIZE_H_

+ 3
- 9
inc/framework/common/op/attr_value_util.h View File

@@ -21,17 +21,11 @@
#include <unordered_map>
#include <string>

#include "common/op/attr_define.h"
#include "common/types.h"
#include "graph/debug/ge_attr_define.h"
#include "proto/om.pb.h"

using domi::AttrDef;
using domi::AttrDef_ListValue;
using domi::ModelDef;
using domi::NamedAttrs;
using domi::OpDef;

namespace ge {
namespace domi {
using AttrDefMap = ::google::protobuf::Map<::std::string, ::domi::AttrDef>;
using AttrDefPair = ::google::protobuf::MapPair<std::string, domi::AttrDef>;

@@ -156,6 +150,6 @@ bool GetAttrDefListValue(const std::string &key, int idx, int32_t *value, const
bool GetAttrDefListValue(const std::string &key, int idx, uint32_t *value, const AttrDefMap &attr);
bool GetAttrDefListValue(const std::string &key, int idx, float *value, const AttrDefMap &attr);
bool GetAttrDefListValue(const std::string &key, int idx, double *value, const AttrDefMap &attr);
} // namespace ge
} // namespace domi

#endif // INC_FRAMEWORK_COMMON_OP_ATTR_VALUE_UTIL_H_

+ 0
- 2
inc/framework/common/op/ge_op_utils.h View File

@@ -62,8 +62,6 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const uint32_t FOR_LIMIT
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const uint32_t FOR_DELTA_INPUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const uint32_t FOR_DATA_INPUT;

FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const int NORMAL_TENSOR_SIZE;

class OpUtils {
public:
///


+ 2
- 2
inc/framework/common/op/op_parser_util.h View File

@@ -22,7 +22,7 @@
#include <math.h>
#include <stdint.h>

namespace ge {
namespace domi {
// general
const float DEFAULT_ALPHA_VALUE = 1.0;
const float DEFAULT_BETA_VALUE = 0.0;
@@ -421,5 +421,5 @@ const uint32_t MULTI_SHAPE_INPUT_NUM = 2;

// Shufflechannel
const uint32_t SHUFFLECHANNEL_DEFAULT_GROUP = 1;
} // namespace ge
} // namespace domi
#endif // INC_FRAMEWORK_COMMON_OP_OP_PARSER_UTIL_H_

+ 2
- 2
inc/framework/common/op_types.h View File

@@ -20,7 +20,7 @@
#include <set>
#include <string>

namespace ge {
namespace domi {
class OpTypeContainer {
public:
static OpTypeContainer *Instance() {
@@ -57,6 +57,6 @@ class OpTypeRegistrar {
const OpTypeRegistrar g_##var_name##_reg(str_name);

#define IS_OPTYPE_EXISTING(str_name) (OpTypeContainer::Instance()->IsExisting(str_name))
} // namespace ge
} // namespace domi

#endif // INC_FRAMEWORK_COMMON_OP_TYPES_H_

+ 3
- 3
inc/framework/common/scope_guard.h View File

@@ -25,10 +25,10 @@
/// MAKE_GUARD([&] { Release Resource 1 })
/// Acquire Resource 2
// MAKE_GUARD([&] { Release Resource 2 })
#define GE_MAKE_GUARD(var, callback) ScopeGuard make_guard_##var(callback)
#define GE_MAKE_GUARD(var, callback) domi::ScopeGuard make_guard_##var(callback)
#define GE_DISMISS_GUARD(var) make_guard_##var.Dismiss()

namespace ge {
namespace domi {
class ScopeGuard {
public:
// Noncopyable
@@ -55,6 +55,6 @@ class ScopeGuard {
std::function<void()> on_exit_scope_;
bool dismissed_;
};
} // namespace ge
} // namespace domi

#endif // INC_FRAMEWORK_COMMON_SCOPE_GUARD_H_

+ 2
- 2
inc/framework/common/string_util.h View File

@@ -25,7 +25,7 @@
#include <string>
#include <vector>

namespace ge {
namespace domi {
class StringUtils {
public:
static std::string &Ltrim(std::string &s) {
@@ -151,6 +151,6 @@ class StringUtils {
return ret > 0 ? buffer : "";
}
};
} // namespace ge
} // namespace domi

#endif // INC_FRAMEWORK_COMMON_STRING_UTIL_H_

+ 17
- 18
inc/framework/common/types.h View File

@@ -26,7 +26,6 @@
#include <string>
#include <utility>
#include <vector>

#include "framework/common/fmk_error_codes.h"
#include "framework/common/fmk_types.h"
#include "framework/common/op_types.h"
@@ -47,7 +46,9 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const std::string DUMP_A
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const std::string DUMP_STATUS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const std::string DUMP_LAYER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const std::string DUMP_FILE_PATH;
} // namespace ge

namespace domi {
// Supported public properties name
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const std::string PROP_OME_START_TIME; // Start time
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const std::string PROP_OME_DUMP_PATH; // Dump path
@@ -67,6 +68,14 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const std::string PROFIL
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const std::map<std::string, std::string> PROFILE_COMPONENT_MAP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const std::string PROFILE_CONFIG;

/// @brief Data structure definition related to task sinking
/// Build model
enum BuildMode {
GEN_TASK_WITHOUT_L2FUSION = 3, // Carrying task data (L2 convergence function disabled)
GEN_TASK_WITHOUT_FUSION = 4, // Carrying task data (all convergence functions disabled)
GEN_TASK_WITH_FUSION = 5 // Carrying task data (with UB/L1/L2 enabled for all convergence functions)
};

FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const std::string MODEL_ATTR_TASKS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const std::string MODEL_ATTR_TASK_GEN_BASE_ADDR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const std::string MODEL_ATTR_TASK_GEN_WEIGHT_ADDR;
@@ -333,7 +342,7 @@ REGISTER_OPTYPE_DECLARE(BASICLSTMCELL, "BasicLSTMCell");
REGISTER_OPTYPE_DECLARE(GETNEXT, "GetNext");
REGISTER_OPTYPE_DECLARE(INITDATA, "InitData");

// ANN dedicated operator
/***************ANN dedicated operator *************************/
REGISTER_OPTYPE_DECLARE(ANN_MEAN, "AnnMean");
REGISTER_OPTYPE_DECLARE(ANN_CONVOLUTION, "AnnConvolution");
REGISTER_OPTYPE_DECLARE(ANN_DEPCONVOLUTION, "AnnDepthConv");
@@ -350,7 +359,7 @@ REGISTER_OPTYPE_DECLARE(ANN_QUANTIZE, "AnnQuant");
REGISTER_OPTYPE_DECLARE(ANN_PAD, "AnnPad");
REGISTER_OPTYPE_DECLARE(ANN_RESIZE_BILINEAR, "AnnResizeBilinear");

// Training operator
/********************Training operator ***********************/
REGISTER_OPTYPE_DECLARE(GATHERV2, "GatherV2");
REGISTER_OPTYPE_DECLARE(CONVGRADFILTER, "Conv2DBackpropFilter");
REGISTER_OPTYPE_DECLARE(CONV2D, "Conv2D");
@@ -434,7 +443,6 @@ REGISTER_OPTYPE_DECLARE(STREAMSWITCH, "StreamSwitch");
REGISTER_OPTYPE_DECLARE(STREAMSWITCHN, "StreamSwitchN");
REGISTER_OPTYPE_DECLARE(STREAMACTIVE, "StreamActive");
REGISTER_OPTYPE_DECLARE(MEMCPYASYNC, "MemcpyAsync");
REGISTER_OPTYPE_DECLARE(MEMCPYADDRASYNC, "MemcpyAddrAsync");
REGISTER_OPTYPE_DECLARE(STREAMMERGE, "StreamMerge");
REGISTER_OPTYPE_DECLARE(ENDGRAPH, "EndGraph");
REGISTER_OPTYPE_DECLARE(SEND, "Send");
@@ -442,7 +450,6 @@ REGISTER_OPTYPE_DECLARE(RECV, "Recv");

REGISTER_OPTYPE_DECLARE(LABELSET, "LabelSet");
REGISTER_OPTYPE_DECLARE(LABELGOTO, "LabelGoto");
REGISTER_OPTYPE_DECLARE(LABELGOTOEX, "LabelGotoEx");
REGISTER_OPTYPE_DECLARE(LABELSWITCH, "LabelSwitch");
REGISTER_OPTYPE_DECLARE(LABELSWITCHBYINDEX, "LabelSwitchByIndex");

@@ -821,6 +828,9 @@ static constexpr int32_t PARTITION_TYPE_TASK_INFO = 2;
// number of partitions in the current model
static constexpr uint32_t PARTITION_SIZE = 4;

#define SIZE_OF_MODEL_PARTITION_TABLE(table) \
(sizeof(domi::ModelPartitionTable) + sizeof(domi::ModelPartitionMemInfo) * (table).num)

enum ModelPartitionType { MODEL_DEF = 0, WEIGHTS_DATA, TASK_INFO, TBE_KERNELS };

struct ModelPartitionMemInfo {
@@ -834,8 +844,6 @@ struct ModelPartitionTable {
ModelPartitionMemInfo partition[0];
};

#define SIZE_OF_MODEL_PARTITION_TABLE(table) (sizeof(ModelPartitionTable) + sizeof(ModelPartitionMemInfo) * (table).num)

static constexpr int32_t PTHREAD_CREAT_SUCCESS = 0; // pthread_creat success

// Filter format
@@ -967,8 +975,8 @@ typedef enum tagDomiNanPropagation {

// mode of cropandresize
typedef enum tagDomiCropAndResizeMode {
DOMI_RESIZE_METHOD_BILINEAR = 0, // resize bilinear
DOMI_RESIZE_METHOD_NEAREST, // resize nearest
DOMI_RESIZE_METHOD_BILINEAR = 0, /**< resize bilinear */
DOMI_RESIZE_METHOD_NEAREST, /**< resize nearest */
DOMI_RESIZE_RESERVED
} domiCropAndResizeMode_t;

@@ -1055,15 +1063,6 @@ struct BasicInfo {
uint32_t total_size; // total memory size
};
#pragma pack() // Cancels single-byte alignment
} // namespace ge

namespace domi {
/// @brief Data structure definition related to task sinking
enum BuildMode {
GEN_TASK_WITHOUT_L2FUSION = 3, // Carrying task data (L2 convergence function disabled)
GEN_TASK_WITHOUT_FUSION = 4, // Carrying task data (all convergence functions disabled)
GEN_TASK_WITH_FUSION = 5 // Carrying task data (with UB/L1/L2 enabled for all convergence functions)
};
} // namespace domi

#endif // INC_FRAMEWORK_COMMON_TYPES_H_

+ 2
- 2
inc/framework/common/util.h View File

@@ -220,7 +220,7 @@ static constexpr int32_t OM_PROTO_VERSION = 2;
*/
#define CEIL(N, n) (((N) + (n)-1) / (n))

namespace ge {
namespace domi {
using google::protobuf::Message;

///
@@ -390,6 +390,6 @@ bool CheckOutputPathValid(const std::string &file_path);
/// @param [out] result
///
bool ValidateStr(const std::string &filePath, const std::string &mode);
} // namespace ge
} // namespace domi

#endif // INC_FRAMEWORK_COMMON_UTIL_H_

+ 7
- 13
inc/framework/omg/omg_inner_types.h View File

@@ -28,16 +28,12 @@
#include "framework/common/types.h"
#include "register/register_fmk_types.h"

using domi::DOMI_TENSOR_ND;
using domi::DOMI_TENSOR_RESERVED;
using domi::domiTensorFormat_t;
using domi::FrameworkType;
using std::map;
using std::string;
using std::unordered_map;
using std::vector;

namespace ge {
namespace domi {
/**
* @ingroup domi_omg
* @brief run model
@@ -97,7 +93,7 @@ struct OmgContext {
std::string ddk_version;
// preferential format used by the entire network
domiTensorFormat_t net_format = DOMI_TENSOR_RESERVED;
domi::FrameworkType type = domi::FMK_TYPE_RESERVED;
FrameworkType type = FMK_TYPE_RESERVED;
RunMode run_mode = ONLY_PRE_CHECK;
bool train_flag = false;
// whether to use FP16 high precision
@@ -106,25 +102,23 @@ struct OmgContext {
std::string output_type;

// Save the name of the entire network: Some special operators are used to determine a network. Some operators in the
// network require special processing based on the specific network. e.g:faster-rcnn, the FirstStageProcessor module
// is determined as the Faster-R-CNN network based on the scope fusion. Then, the conv+reshape operators in the
// FirstStageBoxPredictor/BoxEncodingPredictor scope are combined. The convolution kernel rearrangement reshape
// operator needs to be deleted for the convolution kernel.
// network require special processing based on the specific network.
// e.g:faster-rcnn, the FirstStageProcessor module is determined as the Faster-R-CNN network based on the scope
// fusion. Then, the conv+reshape operators in the FirstStageBoxPredictor/BoxEncodingPredictor scope are combined. The
// convolution kernel rearrangement reshape operator needs to be deleted for the convolution kernel.
std::string net_name;
// Whether to use dynamic batch size or dynamic image size
bool is_dynamic_input = false;
std::string dynamic_batch_size;
std::string dynamic_image_size;
};
} // namespace ge

namespace domi {
/**
* @ingroup domi_omg
* @brief get OMG context
* @return OmgContext context
*/
ge::OmgContext &GetContext();
OmgContext &GetContext();

struct TEBinInfo {
// It is obsolete. It will be automatically obtained from the binfilename field of the JSON file later.


+ 2
- 2
inc/framework/omg/version.h View File

@@ -26,7 +26,7 @@
#include "common/string_util.h"
#include "framework/common/debug/ge_log.h"

namespace ge {
namespace domi {
class PlatformVersionManager {
public:
PlatformVersionManager() = delete;
@@ -40,6 +40,6 @@ class PlatformVersionManager {
return SUCCESS;
}
}; // class PlatformManager
} // namespace ge
} // namespace domi

#endif // INC_FRAMEWORK_OMG_VERSION_H_

+ 47
- 267
inc/graph/debug/ge_attr_define.h View File

@@ -58,8 +58,6 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAM

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_BIAS_TERM;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_HAS_BIAS_VALUE;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_PAD;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_PADS;
@@ -76,7 +74,8 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAM

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_CEIL_MODE;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_STRIDE_SIZE;
// GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string
// ATTR_NAME_WEIGHTS;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_RELUMODE;

@@ -124,13 +123,6 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAM
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_NAN_OPT;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_AIPP;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string NEW_AIPP_CONV_OP;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_SESSION_GRAPH_ID;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_MULTISHAPE_BATCHLIST;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_MULTISHAPE_BATCHLIST_SIZE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_MODEL_BATCH_NUM;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_INPUT_FORMAT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_OUTPUT_FORMAT;
@@ -148,24 +140,12 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAM
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_PRED_PERMUTE_DELETED;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_IGNORE_PRED_FORMAT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_WEIGHTS;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_WEIGHTS_DATA;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_BROACAST_REAL_DIM_CNT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_DIM_ALIGN;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_STREAM_CYCLE_EVENT_FLAG;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_RTSWITCH_RECV_EVENT_ID;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_AUTOMIC_ADD_START;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_AUTOMIC_ADD_MEM_SIZE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_WEIGHTS_DATA;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_SESSION_GRAPH_ID;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_MODEL_BATCH_NUM;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_AUTOMIC_ADD_START;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_AUTOMIC_ADD_MEM_SIZE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_STREAM_LABEL;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_STREAM_CYCLE_EVENT_FLAG;

// to be deleted
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_TO_BE_DELETED;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string PERMUTE_RESHAPE_FUSION;
@@ -178,15 +158,15 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSD_MBOX
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSD_MBOX_FUSION_BOX_TYPE_NUM;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSD_RESHAPE_SLICE_CONCAT_FUSION;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSD_PRIORBOX_CONCAT;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REFINEDET_MBOX_LOC_FUSION;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REFINEDET_RESHAPE_SLICE_CONCAT_FUSION;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REFINEDET_MBOX_CONF_FUSION;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REFINEDET_MBOX_FUSION_BOX_TYPE_NUM;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REFINEDET_RESHAPE_SLICE_CONCAT_FUSION;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REFINEDET_PRIOR_BOX_ATTR_VARIANCE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REFINEDET_PRIOR_BOX_ATTR_VARIANCE_NUM;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSD_PRIORBOX_CONCAT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string NEED_INFER;

// _Arg
@@ -275,29 +255,7 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string BATCHNOR
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string BATCHNORM_ATTR_ESTIMATED_VARIANCE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string BATCHNORM_ATTR_SCALE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string BATCHNORM_ATTR_BIAS;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string BATCHNORM_ATTR_DATA_FORMAT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string BATCHNORM_ATTR_IS_TRAINING;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string BATCHNORM_ATTR_IS_TRAINING_FUSION;

// Huberloss
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string HUBER_LOSS_ATTR_DELTA;

// SSDRealDivTileMul
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSD_REAL_DIV_TILE_MUL_ATTR_TILE_PARA;

// SSDSumMulRealDivMean
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSD_SUM_MUL_REALDIV_MEAN_ATTR_REDUCTION_INDICES;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSD_SUM_MUL_REALDIV_MEAN_ATTR_AXIS;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSD_SUM_MUL_REALDIV_MEAN_ATTR_MEAN_PARA;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSD_SUM_MUL_REALDIV_MEAN_ATTR_HAS_SUM;
/// ConcatFive2Four
/// ConcatFour2Five
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSD_CLASS_NUM;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSD_FEATURE_MAP_SIZE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string TRANS_FOR_LOSS_MODE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSD_BOX_TYPE_NUM;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSD_FEATURE_MAP_HIGH;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSD_FEATURE_MAP_WIDTH;

// Scale
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SCALE_ATTR_SCALE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SCALE_ATTR_BIAS;
@@ -334,6 +292,7 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string CONST_AT
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string CONST_ATTR_NAME_OUTPUT_FORMAT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string CONST_ATTR_NAME_OUTPUT_TYPE;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEPTH_SPACE_ATTR_BLOCK_SIZE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string L2_NORMALIZE_ATTR_EPS;

// Roipooling
@@ -346,7 +305,6 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ROIPOOLI

// DetectionOutput
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DETECTIONOUTPUT_ATTR_NUM_CLASSES;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DETECTIONOUTPUT_ATTR_OCR_NUM_CLASSES;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DETECTIONOUTPUT_ATTR_NMS_THRESHOLD;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DETECTIONOUTPUT_ATTR_TOP_K;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DETECTIONOUTPUT_ATTR_CONFIDENCE_THRESHOLD;
@@ -405,7 +363,6 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SOFTMAX_

// Permute
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string PERMUTE_ATTR_ORDER;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string PERMUTE_ATTR_PERM;

// SSD Normalize
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSDNORMALIZE_ATTR_ACCROSS_SPATIAL;
@@ -446,15 +403,9 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string POWER_AT
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string POWER_ATTR_NAME_SCALE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string POWER_ATTR_NAME_SHIFT;

// Log
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string LOG_ATTR_NAME_SCALE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string LOG_ATTR_NAME_SHIFT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string LOG_ATTR_NAME_BASE;
// Pack
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string PACK_ATTR_NAME_NUM;

// Dynamic stitch
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DYNAMIC_STITCH_ATTR_NAME_NUM;
// Unpack
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string UNPACK_ATTR_NAME_NUM;
// Gathernd
@@ -463,16 +414,8 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string GATHERND

// Argmax
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ARGMAX_ATTR_NAME_TOPK;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ARGMAX_ATTR_NAME_REDUCESIZE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ARGMAX_ATTR_NAME_REDUCESTRIDE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ARGMAX_ATTR_NAME_OUTMAX;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ARGMAX_ATTR_NAME_AXIS;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ARGMAX_ATTR_NAME_AXISTYPE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ARGMAX_ATTR_NAME_KEEPDIMS;

// Upsample
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string UPSAMPLE_ATTR_NAME_SCALE_H;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string UPSAMPLE_ATTR_NAME_SCALE_W;
// Relu
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_NEGATIVE_SLOPE;

@@ -511,7 +454,6 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ROIALIGN
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ROIALIGN_ATTR_SAMPLING_RATIO;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ROIALIGN_ATTR_NAME_POOLED_H;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ROIALIGN_ATTR_NAME_POOLED_W;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ROIALIGN_ATTR_NAME_TF;

// Generate_rpn_proposal
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string GENERATE_RPN_PROPOSAL_ATTR_PRE_NMS_TOPK;
@@ -544,7 +486,6 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REORG_AT
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string MERGE_DEAD_INDEX;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string MERGE_PRENODE_FLAG;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string TO_BE_OUTPUT;
static const std::string NOT_NET_OUTPUT = "not_net_output";

// ENTER
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ENTER_ATTR_FRAME_NAME;
@@ -570,9 +511,6 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string RESIZE_B
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string RESIZE_BILINEAR_ATTR_ALPHA;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string RESIZE_BILINEAR_ATTR_BETA;

// RetinaNet
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string RETINANET_FILTER_BACKGROUND_TRUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string RETINANET_ANCHOR_FUSION;
// MatMul
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string MATMUL_TRANSPOSE_X;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string MATMUL_TRANSPOSE_W;
@@ -621,30 +559,10 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string GRU_CELL
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string RNN_HT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string RNN_XT_HT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string RNN_BATCH_SIZE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string LSTM_CELL_CLIP;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string LSTM_PROJ_CLIP;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string LSTM_ACTIVATE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string LSTM_OUT_MAP;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string LSTM_OUT_MODE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string LSTM_STATE_OUT_MODE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string LSTM_TIME_MAJOR;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string LSTM_IS_INPUT_PRE_PROCESS;

// Upsample
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string UPSAMPLE_ATTR_NAME_SCALE;

// PadV2
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string PADV2_ATTR_NAME_MODE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string PADV2_ATTR_NAME_PADS;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string PADV2_ATTR_NAME_T;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string PADV2_ATTR_NAME_PAD_FORMAT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string PADV2_ATTR_NAME_CONST_VALUE;

// MirrorPad
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string MIRRORPAD_ATTR_NAME_MODE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string MIRRORPAD_ATTR_NAME_PADS;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string MIRRORPAD_ATTR_NAME_PAD_FORMAT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string MIRRORPAD_ATTR_NAME_CONST_VALUE;
// Filler
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string FILLER_TYPE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string FILLER_VALUE;
@@ -665,6 +583,36 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string PAD_LEFT
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_ALGO_ATTR;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SCALE_TYPE_ATTR;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_SCALE_MODE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_SCALE_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_SCALE_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_OFFSET_DATA_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_OFFSET_DATA_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_OFFSET_WEIGHT_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_OFFSET_WEIGHT_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_OFFSET_PAD_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_OFFSET_PAD_OFFSET;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEQUANTIZE_SCALE_MODE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEQUANTIZE_SCALE_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEQUANTIZE_SCALE_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEQUANTIZE_OFFSET_DATA_TYPE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEQUANTIZE_OFFSET_DATA_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEQUANTIZE_OFFSET_WEIGHT_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEQUANTIZE_OFFSET_WEIGHT_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEQUANTIZE_OFFSET_PAD_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEQUANTIZE_OFFSET_PAD_OFFSET;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REQUANTIZE_SCALE_MODE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REQUANTIZE_SCALE_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REQUANTIZE_SCALE_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REQUANTIZE_OFFSET_DATA_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REQUANTIZE_OFFSET_DATA_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REQUANTIZE_OFFSET_WEIGHT_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REQUANTIZE_OFFSET_WEIGHT_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REQUANTIZE_OFFSET_PAD_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REQUANTIZE_OFFSET_PAD_OFFSET;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_IS_CONST;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_GROUP;
@@ -689,6 +637,14 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_MOD

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_MODEL_TASK_GEN_WEIGHT_ADDR;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_MODEL_TASK_GEN_VAR_ADDR;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_MODEL_VAR_SIZE;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_MODEL_TASK_INDEX_OP_NAME;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_MODEL_CORE_TYPE;

// Public attribute
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_IMPLY_TYPE;

@@ -740,159 +696,6 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAM

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_ATOMIC_INDEX;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_MODEL_TASK_GEN_VAR_ADDR;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_STREAM_LABEL;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_MODEL_VAR_SIZE;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_MODEL_TASK_INDEX_OP_NAME;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_MODEL_CORE_TYPE;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_SCALE_MODE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_SCALE_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_SCALE_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_OFFSET_DATA_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_OFFSET_DATA_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_OFFSET_WEIGHT_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_OFFSET_WEIGHT_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_OFFSET_PAD_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string QUANTIZE_OFFSET_PAD_OFFSET;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEQUANTIZE_SCALE_MODE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEQUANTIZE_SCALE_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEQUANTIZE_SCALE_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEQUANTIZE_OFFSET_DATA_TYPE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEQUANTIZE_OFFSET_DATA_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEQUANTIZE_OFFSET_WEIGHT_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEQUANTIZE_OFFSET_WEIGHT_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEQUANTIZE_OFFSET_PAD_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEQUANTIZE_OFFSET_PAD_OFFSET;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REQUANTIZE_SCALE_MODE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REQUANTIZE_SCALE_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REQUANTIZE_SCALE_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REQUANTIZE_OFFSET_DATA_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REQUANTIZE_OFFSET_DATA_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REQUANTIZE_OFFSET_WEIGHT_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REQUANTIZE_OFFSET_WEIGHT_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REQUANTIZE_OFFSET_PAD_VALUE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REQUANTIZE_OFFSET_PAD_OFFSET;

// L2_normalize
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string L2_NORMALIZE_ATTR_AXIS;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string L2_NORMALIZE_ATTR_EPS;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string POOL_PARAMA_ATTR_WINDOW;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string POOL_PARAMA_ATTR_CEIL_MODE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string POOL_PARAMA_ATTR_DATA_MODE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string POOL_PARAMA_ATTR_GLOBAL_POOLING;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string POOL_PARAMA_ATTR_NAN_OP;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string POOL_PARAMA_ATTR_PAD_MOD;
// HCOM
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string HCOM_ATTR_ROOT_RANK;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string HCOM_ATTR_REDUCE_TYPE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string HCOM_ATTR_RANK_SIZE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string HCOM_ATTR_REDUCTION;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string HCOM_ATTR_GROUP;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string HCOM_ATTR_SR_TAG;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string HCOM_ATTR_SRC_RANK;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string HCOM_ATTR_DEST_RANK;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string HCOM_ATTR_FUSION;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string HCOM_ATTR_SHAPE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string HCOM_ATTR_DATA_TYPE;

// Log time stamp
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string LOG_TIME_STAMP_LOGID;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string LOG_TIME_STAMP_NOTIFY;
// SpaceToDepth/DepthToSpace
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_BLOCK_SIZE;

// SparseSoftmaxCrossEntropyWithLogits
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SPARSE_SOFT_MAX_ATTR_TLABLES;

// MaxPoolGradWithArgmax
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string MAX_POOL_GRAD_OUTPUT_SHAPE;

// AvgPoolGrad
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string AVG_POOL_GRAD_OUTPUT_SHAPE;

// Varible
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_FORMAT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_NAME;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_FRACTALZ_FORMAT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_4D_FORMAT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_5D_FORMAT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_DATA_TYPE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_VAR_IN_NAME;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_VAR_IN_INDEX;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_VAR_OUT_INDEX;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_SHAPE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string HALF_VAR_NAME_END;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_CONTAINER;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_SHARED_NAME;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_DTYPE;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_ADDR_OFFSET;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_VAR_IN_INDEX_KEY;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_VAR_OUT_INDEX_KEY;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_SRC_VAR_NAME;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_VAR_IS_SAVE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_VAR_IS_RESTORE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_VAR_IS_BROADCAST;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REF_VAR_SRC_VAR_NAME;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REF_VAR_PRE_PEER_OUT_INDEX;

// Assign
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ASSIGN_VALIDATE_SHAPE;

// ShapeN
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SHAPEN_ATTR_N;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SHAPEN_ATTR_IN_TYPE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SHAPEN_ATTR_OUT_TYPE;

// Space2bacth batch2space
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string BATCH_SPACE_ATTR_BLOCK;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string BATCH_SPACE_ATTR_PADDING;
// Depth_to_space space_to_depth
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DEPTH_SPACE_ATTR_BLOCK_SIZE;
// FakeQuantWithMinMaxVars
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string FakeQuantWithMinMaxVars_ATTR_MAX;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string FakeQuantWithMinMaxVars_ATTR_MIN;
// Mobilenet_ssd_conv_fusion
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSD_BOXPREDICTOR_BOXES_FUSION;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSD_BOXPREDICTOR_SCORES_FUSION;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string SSD_BOXPREDICTOR_FUSION_BOX_TYPE_NUM;

// Lsh project
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string LSH_PROJ_TYPE;

// Control flow
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_ITERATORS_PER_LOOP;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_TRUE_BRANCH_STREAM;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_FLOW_CTRL_NODE_FLAG;

// GatherV2 attr def
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string GATHERV2_ATTR_NAME_TAXIS;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string GATHERV2_ATTR_NAME_TINDICES;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string GATHERV2_ATTR_NAME_TPARAMS;

// Reshape attr def
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string RESHAPE_ATTR_NAME_INPUT_DESC;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string RESHAPE_ATTR_NAME_OUTPUT_DESC;

// Axis attr def
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_AXIS_ORG_OP;
// The node link with SparseSoftmaxCrossEntropyWithLogits
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_LINK_WITH_SPARE;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_NET_OUTPUT_FORMAT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_NET_OUTPUT_DATATYPE;
// For constant folding
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NO_NEED_CONSTANT_FOLDING;

// Used for mark the active label list to find stream of activated node
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_ACTIVE_LABEL_LIST;

@@ -905,6 +708,7 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAM

// Control flow
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_STREAM_SWITCH_COND;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_TRUE_BRANCH_STREAM;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_ACTIVE_STREAM_LIST;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_SWITCHN_PRED_VALUE;

@@ -979,33 +783,9 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAM
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_N_BATCH_SPILT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NO_TASK_AND_DUMP_NEEDED;

// functional ops attr
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_WHILE_COND;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_WHILE_BODY;

// used for label switch
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_LABEL_SWITCH_INDEX;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_LABEL_SWITCH_LIST;

// Varible
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REF_VAR_SRC_VAR_NAME;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_SRC_VAR_NAME;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string REF_VAR_PRE_PEER_OUT_INDEX;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_VAR_IS_BROADCAST;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string VAR_ATTR_VAR_IS_RESTORE;

// HCOM
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string HCOM_ATTR_ROOT_RANK;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string HCOM_ATTR_REDUCE_TYPE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string HCOM_ATTR_RANK_SIZE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string HCOM_ATTR_SHAPE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string HCOM_ATTR_DATA_TYPE;

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_INPUT_DATATYPE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string ATTR_NAME_OUTPUT_DATATYPE;

// Dynamic stitch
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const std::string DYNAMIC_STITCH_ATTR_NAME_NUM;
} // namespace ge

#endif // INC_GRAPH_DEBUG_GE_ATTR_DEFINE_H_

+ 1
- 1
inc/graph/detail/model_serialize_imp.h View File

@@ -22,7 +22,7 @@
#include <string>
#include <vector>
#include "graph/anchor.h"
#include "graph/detail/attributes_holder.h"
#include "detail/attributes_holder.h"
#include "graph/ge_tensor.h"
#include "graph/graph.h"
#include "graph/node.h"


+ 4
- 0
inc/graph/model.h View File

@@ -25,7 +25,11 @@
#include "graph/ge_attr_value.h"
#include "graph/graph.h"

namespace domi {
class ModelHelper;
}
namespace ge {
using domi::ModelHelper;
using std::map;
using std::string;
using std::vector;


+ 3
- 3
inc/graph/usr_types.h View File

@@ -14,8 +14,8 @@
* limitations under the License.
*/

#ifndef INC_GRAPH_USR_TYPES_H_
#define INC_GRAPH_USR_TYPES_H_
#ifndef INC_EXTERNAL_GRAPH_USR_TYPES_H_
#define INC_EXTERNAL_GRAPH_USR_TYPES_H_

#include <atomic>
#include <memory>
@@ -130,4 +130,4 @@ struct UsrQuantizeFactorParams {
#undef USR_TYPE_BYTES_DEC
} // namespace ge

#endif // INC_GRAPH_USR_TYPES_H_
#endif // INC_EXTERNAL_GRAPH_USR_TYPES_H_

+ 0
- 2
inc/graph/utils/graph_utils.h View File

@@ -262,8 +262,6 @@ class GraphUtils {
static graphStatus MoveOutCtrlEdges(NodePtr &src_node, NodePtr &dst_node);

static ComputeGraphPtr FindRootGraph(ComputeGraphPtr graph);

static graphStatus TopologicalSortingByName(const ge::ComputeGraphPtr &compute_graph, vector<NodePtr> &node_vec);
};

class ComputeGraphBuilder {


+ 1
- 0
src/common/graph/CMakeLists.txt View File

@@ -59,6 +59,7 @@ include_directories(${GE_SOURCE_DIR}/inc/graph)
include_directories(${GE_SOURCE_DIR}/inc/common)
include_directories(${GE_SOURCE_DIR}/third_party/fwkacllib/inc)
include_directories(${GE_SOURCE_DIR}/third_party/fwkacllib/inc/ops)
include_directories(${GE_SOURCE_DIR}/third_party/securec/include)
include_directories(${CMAKE_BINARY_DIR})
include_directories(${CMAKE_BINARY_DIR}/proto/ge)
include_directories(${GE_SOURCE_DIR}/build)


+ 1
- 0
src/common/graph/anchor.cc View File

@@ -53,6 +53,7 @@ void Anchor::UnlinkAll() noexcept {
if (Unlink(peer_anchor_ptr) != GRAPH_SUCCESS) {
GELOGW("unlink peer_anchor_ptr failed.");
}

} while (!peer_anchors_.empty());
}
}


+ 10
- 27
src/common/graph/compute_graph.cc View File

@@ -54,34 +54,17 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY size_t ComputeGraph::GetAllNodesS
return s;
}
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY ComputeGraph::Vistor<NodePtr> ComputeGraph::GetAllNodes() const {
if (sub_graph_.empty()) {
return Vistor<NodePtr>(shared_from_this(), nodes_);
}

std::vector<NodePtr> all_nodes;
std::deque<NodePtr> candidates;

candidates.insert(candidates.begin(), nodes_.begin(), nodes_.end());

while (!candidates.empty()) {
NodePtr node = candidates.front();
all_nodes.emplace_back(node);
candidates.pop_front();

OpDescPtr op_desc = node->GetOpDesc();
if (op_desc == nullptr) {
vector<NodePtr> all_nodes(nodes_.size());
(void)std::copy(nodes_.begin(), nodes_.end(), all_nodes.begin());
for (const auto &sub_graph : sub_graph_) {
if (sub_graph == nullptr) {
GELOGW("sub graph is nullptr");
continue;
}

const auto &subgraph_names = op_desc->GetSubgraphInstanceNames();
for (auto name_iter = subgraph_names.rbegin(); name_iter != subgraph_names.rend(); ++name_iter) {
auto subgraph = GetSubgraph(*name_iter);
if (subgraph != nullptr) {
candidates.insert(candidates.begin(), subgraph->nodes_.begin(), subgraph->nodes_.end());
}
for (const auto &node : sub_graph->GetAllNodes()) {
all_nodes.push_back(node);
}
}

return Vistor<NodePtr>(shared_from_this(), all_nodes);
}
size_t ComputeGraph::GetDirectNodesSize() const { return nodes_.size(); }
@@ -619,7 +602,7 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY graphStatus ComputeGraph::InsertE
graphStatus ComputeGraph::DFSTopologicalSorting(std::vector<NodePtr> &node_vec,
std::map<NodePtr, uint32_t> &map_in_edge_num,
std::vector<NodePtr> &stack) {
GELOGI("Runing_Dfs_Sort: %s", name_.c_str());
GELOGI("Runing_Dfs_Sort");
// Record the number of non data nodes but no input nodes
GE_CHK_BOOL_EXEC(SortNodes(stack, map_in_edge_num) == GRAPH_SUCCESS, return GRAPH_FAILED, "sort nodes failed");

@@ -664,7 +647,7 @@ graphStatus ComputeGraph::DFSTopologicalSorting(std::vector<NodePtr> &node_vec,
graphStatus ComputeGraph::BFSTopologicalSorting(std::vector<NodePtr> &node_vec,
std::map<NodePtr, uint32_t> &map_in_edge_num,
std::deque<NodePtr> &stack) {
GELOGI("Runing_Bfs_Sort: %s", name_.c_str());
GELOGI("Runing_Bfs_Sort");
std::vector<NodePtr> stack_input;
std::map<string, NodePtr> breadth_node_map;
// Record the number of non data nodes but no input nodes
@@ -752,7 +735,7 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY graphStatus ComputeGraph::Topolog
use_BFS = true;
}
} else {
GELOGW("OPTION_GRAPH_RUN_MODE not set, use BFSTopologicalSorting by default.");
GELOGW("Get OPTION_GRAPH_RUN_MODE failed, use BFSTopologicalSorting by default.");
}

if (use_BFS) {


+ 1
- 0
src/common/graph/format_refiner.cc View File

@@ -66,6 +66,7 @@ graphStatus FormatRefiner::GetAnchorPoints(const ge::ComputeGraphPtr &graph, std
anchor_points.clear();
// Get all anchor point nodes and switch nodes
for (const auto &node_ptr : graph->GetAllNodes()) {
std::vector<bool> is_node_set_format;
if (node_ptr == nullptr) {
return GRAPH_FAILED;
}


+ 13
- 210
src/common/graph/ge_attr_define.cc View File

@@ -42,8 +42,6 @@ const std::string ATTR_NAME_BIAS = "bias";

const std::string ATTR_NAME_BIAS_TERM = "bias_term";

const std::string ATTR_NAME_HAS_BIAS_VALUE = "has_bias_value";

const std::string ATTR_NAME_PAD = "pad";

const std::string ATTR_NAME_PADS = "pad";
@@ -85,7 +83,6 @@ const std::string ATTR_NAME_LRN_BETA = "lrn_beta";
const std::string ATTR_NAME_AXIS = "axis";
const std::string ATTR_NAME_BROADCAST = "broadcast";

const std::string ATTR_NAME_OUTPUT = "output";
const std::string ATTR_NAME_OUTPUT_NUM = "output_num";
const std::string ATTR_NAME_TIDX = "t_idx";

@@ -106,13 +103,6 @@ const std::string ATTR_NAME_TSHAPE = "Tshape";
const std::string ATTR_NAME_NAN_OPT = "nan_opt";

const std::string ATTR_NAME_AIPP = "aipp";
const std::string NEW_AIPP_CONV_OP = "new_conv_op_for_aipp";

const std::string ATTR_NAME_SESSION_GRAPH_ID = "_session_graph_id";

const std::string ATTR_NAME_MULTISHAPE_BATCHLIST = "multi_shape_batchlist";
const std::string ATTR_NAME_MULTISHAPE_BATCHLIST_SIZE = "multi_shape_batchlist_size";
const std::string ATTR_MODEL_BATCH_NUM = "batch_num";

const std::string ATTR_NAME_INPUT_FORMAT = "input_format";
const std::string ATTR_NAME_OUTPUT_FORMAT = "output_format";
@@ -121,7 +111,6 @@ const std::string ATTR_NAME_FRAMEWORK_NODE_DEF = "node_def";
const std::string ATTR_NAME_FRAMEWORK_OP_DEF = "op_def";
const std::string ATTR_NAME_FRAMEWORK_FWK_TYPE = "framework_type";
const std::string ATTR_NAME_FRAMEWORK_FUNC_DEF = "func_def";
const std::string ATTR_NAME_FRAMEWORK_ORIGINAL_TYPE = "original_type";

const std::string ATTR_NAME_INPUT_TENSOR_DESC = "input_tensor_desc";
const std::string ATTR_NAME_OUTPUT_TENSOR_DESC = "output_tensor_desc";
@@ -133,11 +122,9 @@ const std::string ATTR_NAME_WEIGHTS = "value";
const std::string ATTR_NAME_WEIGHTS_DATA = "weights_data";
const std::string ATTR_NAME_BROACAST_REAL_DIM_CNT = "broacast_real_dim_cnt";
const std::string ATTR_NAME_DIM_ALIGN = "dim_align";
const std::string ATTR_NAME_STREAM_LABEL = "_stream_label";
const std::string ATTR_NAME_STREAM_CYCLE_EVENT_FLAG = "need_stream_cycle_event";
const std::string ATTR_NAME_RTSWITCH_RECV_EVENT_ID = "rtswitch_event_id";
const std::string ATTR_NAME_AUTOMIC_ADD_START = "automic_add_addr_start";
const std::string ATTR_NAME_AUTOMIC_ADD_MEM_SIZE = "automic_add_mem_size";
const std::string ATTR_NAME_FRAMEWORK_ORIGINAL_TYPE = "original_type";

const std::string ATTR_NAME_SESSION_GRAPH_ID = "_session_graph_id";

// To be deleted
const std::string ATTR_TO_BE_DELETED = "to_be_deleted";
@@ -151,13 +138,15 @@ const std::string SSD_MBOX_OCR_FUSION = "permute_flatten_ocr_fusion";
const std::string SSD_MBOX_FUSION_BOX_TYPE_NUM = "ssd_mbox_fusion_box_type_num";
const std::string SSD_RESHAPE_SLICE_CONCAT_FUSION = "reshape_slice_concat_fusion";

const std::string SSD_PRIORBOX_CONCAT = "ssd_mbox_conf_priorbox_concat_flag";

// Refinedet
const std::string REFINEDET_MBOX_LOC_FUSION = "permute_flatten_fusion";
const std::string REFINEDET_RESHAPE_SLICE_CONCAT_FUSION = "reshape_slice_concat_fusion";
const std::string REFINEDET_MBOX_CONF_FUSION = "permute_flatten_reshape_flatten_fusion";
const std::string REFINEDET_MBOX_FUSION_BOX_TYPE_NUM = "ssd_mbox_fusion_box_type_num";
const std::string REFINEDET_RESHAPE_SLICE_CONCAT_FUSION = "reshape_slice_concat_fusion";
const std::string SSD_PRIORBOX_CONCAT = "ssd_mbox_conf_priorbox_concat_flag";
const std::string REFINEDET_PRIOR_BOX_ATTR_VARIANCE = "variance";
const std::string REFINEDET_PRIOR_BOX_ATTR_VARIANCE_NUM = "variance_num";

// _Arg
const std::string ATTR_NAME_INDEX = "index";
@@ -247,30 +236,6 @@ const std::string BATCHNORM_ATTR_ESTIMATED_MEAN = "estimated_mean";
const std::string BATCHNORM_ATTR_ESTIMATED_VARIANCE = "estimated_variance";
const std::string BATCHNORM_ATTR_SCALE = "scale";
const std::string BATCHNORM_ATTR_BIAS = "bias";
const std::string BATCHNORM_ATTR_DATA_FORMAT = "data_format";
const std::string BATCHNORM_ATTR_IS_TRAINING = "is_training";
const std::string BATCHNORM_ATTR_IS_TRAINING_FUSION = "is_training_fusion";

// huberloss
const std::string HUBER_LOSS_ATTR_DELTA = "delta";

// SSDRealDivTileMul
const std::string SSD_REAL_DIV_TILE_MUL_ATTR_TILE_PARA = "tilepara";

// SSDSumMulRealDivMean
const std::string SSD_SUM_MUL_REALDIV_MEAN_ATTR_REDUCTION_INDICES = "reduction_indices";
const std::string SSD_SUM_MUL_REALDIV_MEAN_ATTR_AXIS = "axis";
const std::string SSD_SUM_MUL_REALDIV_MEAN_ATTR_MEAN_PARA = "mean_para";
const std::string SSD_SUM_MUL_REALDIV_MEAN_ATTR_HAS_SUM = "has_sum";

// ConcatFive2Four
// ConcatFour2Five
const std::string SSD_BOX_TYPE_NUM = "box_type_num";
const std::string SSD_CLASS_NUM = "class_num";
const std::string TRANS_FOR_LOSS_MODE = "trans_for_loss_mode";
const std::string SSD_FEATURE_MAP_SIZE = "feature_map_size";
const std::string SSD_FEATURE_MAP_HIGH = "feature_map_high";
const std::string SSD_FEATURE_MAP_WIDTH = "feature_map_width";

// Scale
const std::string SCALE_ATTR_SCALE = "scale";
@@ -375,7 +340,6 @@ const std::string SOFTMAX_ATTR_AXIS = "axis";

// Permute
const std::string PERMUTE_ATTR_ORDER = "order";
const std::string PERMUTE_ATTR_PERM = "perm";

// SSD Normalize
const std::string SSDNORMALIZE_ATTR_ACCROSS_SPATIAL = "across_spatial";
@@ -403,10 +367,6 @@ const std::string SSD_PRIOR_BOX_ATTR_ASPECT_RATIO_NUM = "aspect_ratio_num";
const std::string SSD_PRIOR_BOX_ATTR_VARIANCE = "variance";
const std::string SSD_PRIOR_BOX_ATTR_VARIANCE_NUM = "variance_num";

// RefinedetDetectionOutput
const std::string REFINEDET_PRIOR_BOX_ATTR_VARIANCE_NUM = "variance_num";
const std::string REFINEDET_PRIOR_BOX_ATTR_VARIANCE = "variance";

// PRelu
const std::string PRELU_ATTR_CHANNEL_SHARED = "channel_shared";

@@ -420,16 +380,11 @@ const std::string POWER_ATTR_NAME_POWER = "power";
const std::string POWER_ATTR_NAME_SCALE = "scale";
const std::string POWER_ATTR_NAME_SHIFT = "shift";

// log
const std::string LOG_ATTR_NAME_SCALE = "scale";
const std::string LOG_ATTR_NAME_SHIFT = "shift";
const std::string LOG_ATTR_NAME_BASE = "base";
// Pack
const std::string PACK_ATTR_NAME_NUM = "N";

// Unpack
const std::string UNPACK_ATTR_NAME_NUM = "num";
const std::string DYNAMIC_STITCH_ATTR_NAME_NUM = "DynamicStitchN_";
// Gathernd
const std::string GATHERND_ATTR_NAME_TINDICES = "Tindices";
const std::string GATHERND_ATTR_NAME_TPARAMS = "Tparams";
@@ -439,13 +394,6 @@ const std::string ARGMAX_ATTR_NAME_TOPK = "topk";
const std::string ARGMAX_ATTR_NAME_REDUCESIZE = "reduce_size";
const std::string ARGMAX_ATTR_NAME_REDUCESTRIDE = "reduce_stride";
const std::string ARGMAX_ATTR_NAME_OUTMAX = "outmaxval";
const std::string ARGMAX_ATTR_NAME_AXIS = "axis";
const std::string ARGMAX_ATTR_NAME_AXISTYPE = "axis_type";
const std::string ARGMAX_ATTR_NAME_KEEPDIMS = "keep_dims";

// upsample
const std::string UPSAMPLE_ATTR_NAME_SCALE_H = "scale_h";
const std::string UPSAMPLE_ATTR_NAME_SCALE_W = "scale_w";

// Relu
const std::string ATTR_NAME_NEGATIVE_SLOPE = "negative_slope";
@@ -485,7 +433,6 @@ const std::string ROIALIGN_ATTR_SPATIAL_SCALE = "spatial_scale";
const std::string ROIALIGN_ATTR_SAMPLING_RATIO = "sampling_ratio";
const std::string ROIALIGN_ATTR_NAME_POOLED_H = "pooled_h";
const std::string ROIALIGN_ATTR_NAME_POOLED_W = "pooled_w";
const std::string ROIALIGN_ATTR_NAME_TF = "roialign_tf";

// Generate_rpn_proposal
const std::string GENERATE_RPN_PROPOSAL_ATTR_PRE_NMS_TOPK = "pre_nms_topk";
@@ -584,42 +531,19 @@ const std::string CONV_GRAD_FILTER_OUTPUT_SHAPE = "conv_grad_filter_output_shape
const std::string CONV_GRAD_INPUT_OUTPUT_SHAPE = "conv_grad_input_output_shape";

// Rnn
const std::string RNN_TENSORFLOW = "rnn_tensorflow";
const std::string RNN_MODE_STATIC = "rnn_static";
const std::string MUTI_RNN = "multi_rnn";
const std::string CNN_RNN = "cnn_rnn";
const std::string RNN_MODE_ = "rnn_";

const std::string CNN_RNN = "cnn_rnn";
const std::string MUTI_RNN = "multi_rnn";
const std::string CELL_MODE = "mode";
const std::string LSTM_CELL = "lstm_cell";
const std::string GRU_CELL = "gru_cell";
const std::string RNN_HT = "ht";
const std::string RNN_XT_HT = "xt_ht";
const std::string RNN_BATCH_SIZE = "batch_size";
const std::string LSTM_CELL_CLIP = "lstm_cell_clip";
const std::string LSTM_PROJ_CLIP = "lstm_proj_clip";
const std::string LSTM_ACTIVATE = "lstm_activate";
const std::string LSTM_OUT_MAP = "lstm_out_map";
const std::string LSTM_OUT_MODE = "lstm_out_mode";
const std::string LSTM_STATE_OUT_MODE = "lstm_state_out_mode";
const std::string LSTM_TIME_MAJOR = "lstm_time_major";
const std::string LSTM_IS_INPUT_PRE_PROCESS = "lstm_is_input_pre_process";

// Upsample
const std::string UPSAMPLE_ATTR_NAME_SCALE = "scale";

// PadV2
const std::string PADV2_ATTR_NAME_MODE = "mode";
const std::string PADV2_ATTR_NAME_PADS = "paddings";
const std::string PADV2_ATTR_NAME_T = "T";
const std::string PADV2_ATTR_NAME_PAD_FORMAT = "pad_format";
const std::string PADV2_ATTR_NAME_CONST_VALUE = "const_value";

// MirrorPad
const std::string MIRRORPAD_ATTR_NAME_MODE = "mode";
const std::string MIRRORPAD_ATTR_NAME_PADS = "paddings";
const std::string MIRRORPAD_ATTR_NAME_PAD_FORMAT = "pad_format";
const std::string MIRRORPAD_ATTR_NAME_CONST_VALUE = "const_value";
// Filler
const std::string FILLER_TYPE = "filler_type";
const std::string FILLER_VALUE = "filler_value";
@@ -630,6 +554,9 @@ const std::string SHUFFLE_CHANNEL_GROUP = "group";
// TopKV2
const std::string TOPKV2_ATTR_K = "k";

const std::string DEPTH_SPACE_ATTR_BLOCK_SIZE = "block_size";
const std::string L2_NORMALIZE_ATTR_EPS = "eps";

// Calibaration
const std::string STRIDE_H_INDEX = "STRIDE_H_INDEX";
const std::string STRIDE_W_INDEX = "STRIDE_W_INDEX";
@@ -733,121 +660,6 @@ const std::string TARGET_TYPE_TINY = "TINY";

const std::string TARGET_TYPE_LITE = "LITE";

// l2_normalize
const std::string L2_NORMALIZE_ATTR_AXIS = "axis";
const std::string L2_NORMALIZE_ATTR_EPS = "eps";

const std::string POOL_PARAMA_ATTR_WINDOW = "window";
const std::string POOL_PARAMA_ATTR_CEIL_MODE = "ceil_mode";
const std::string POOL_PARAMA_ATTR_DATA_MODE = "data_mode";
const std::string POOL_PARAMA_ATTR_GLOBAL_POOLING = "global_pooling";
const std::string POOL_PARAMA_ATTR_NAN_OP = "nan_opt";
const std::string POOL_PARAMA_ATTR_PAD_MOD = "pad_mode";

// HCOM
const std::string HCOM_ATTR_ROOT_RANK = "root_rank";
const std::string HCOM_ATTR_RANK_SIZE = "rank_size";

const std::string HCOM_ATTR_REDUCE_TYPE = "reduction";
const std::string HCOM_ATTR_GROUP = "group";
const std::string HCOM_ATTR_SR_TAG = "sr_tag";
const std::string HCOM_ATTR_SRC_RANK = "src_rank";
const std::string HCOM_ATTR_DEST_RANK = "dest_rank";
const std::string HCOM_ATTR_FUSION = "fusion";
const std::string HCOM_ATTR_SHAPE = "shape";
const std::string HCOM_ATTR_DATA_TYPE = "dtype";

// SpaceToDepth/DepthToSpace
const std::string ATTR_NAME_BLOCK_SIZE = "block_size";

// SparseSoftmaxCrossEntropyWithLogits
const std::string SPARSE_SOFT_MAX_ATTR_TLABLES = "Tlabels";

// MaxPoolGradWithArgmax
const std::string MAX_POOL_GRAD_OUTPUT_SHAPE = "max_pool_grad_output_shape";

// AvgPoolGrad
const std::string AVG_POOL_GRAD_OUTPUT_SHAPE = "avg_pool_grad_output_shape";

// Pad
const std::string ATTR_PAD_FORMAT = "attr_pad_format";

// Varible
const std::string VAR_ATTR_FORMAT = "_var_format";
const std::string VAR_ATTR_NAME = "var_name";
const std::string VAR_ATTR_FRACTALZ_FORMAT = "FZ";
const std::string VAR_ATTR_4D_FORMAT = "4D";
const std::string VAR_ATTR_5D_FORMAT = "5D";
const std::string VAR_ATTR_DATA_TYPE = "data_format";
const std::string VAR_ATTR_VAR_IN_NAME = "var_in_name";
const std::string VAR_ATTR_VAR_IN_INDEX = "var_in_index";
const std::string VAR_ATTR_VAR_OUT_INDEX = "var_out_index";
const std::string VAR_ATTR_SHAPE = "shape";
const std::string HALF_VAR_NAME_END = "_fp16";
const std::string VAR_ATTR_INITED = "var_is_inited";

const std::string VAR_ATTR_CONTAINER = "container";
const std::string VAR_ATTR_SHARED_NAME = "shared_name";
const std::string VAR_ATTR_DTYPE = "dtype";

const std::string VAR_ATTR_SRC_VAR_NAME = "_src_var_name";
const std::string VAR_ATTR_VAR_IS_SAVE = "_var_is_save";
const std::string VAR_ATTR_VAR_IS_RESTORE = "_var_is_restore";
const std::string VAR_ATTR_VAR_IS_BROADCAST = "_var_is_broadcast";
const std::string REF_VAR_SRC_VAR_NAME = "ref_var_src_var_name";
const std::string REF_VAR_PRE_PEER_OUT_INDEX = "ref_var_pre_peer_out_index";

// Assign
const std::string ASSIGN_VALIDATE_SHAPE = "validate_shape";

// space2bacth batch2space
const std::string BATCH_SPACE_ATTR_BLOCK = "block";
const std::string BATCH_SPACE_ATTR_PADDING = "padding";

// depth_to_space space_to_depth
const std::string DEPTH_SPACE_ATTR_BLOCK_SIZE = "block_size";

// FakeQuantWithMinMaxVars
const std::string FakeQuantWithMinMaxVars_ATTR_MAX = "max";
const std::string FakeQuantWithMinMaxVars_ATTR_MIN = "min";

// mobilenet_ssd_conv_fusion
const std::string SSD_BOXPREDICTOR_BOXES_FUSION = "ssd_boxpredictor_boxes_fusion";
const std::string SSD_BOXPREDICTOR_SCORES_FUSION = "ssd_boxpredictor_scores_fusion";
const std::string SSD_BOXPREDICTOR_FUSION_BOX_TYPE_NUM = "ssd_boxpredictor_fusion_box_type_num";

// lsh project
const std::string LSH_PROJ_TYPE = "lsh_project_type";

// log time stamp
const std::string LOG_TIME_STAMP_LOGID = "logid";
const std::string LOG_TIME_STAMP_NOTIFY = "notify";

// ShapeN
const std::string SHAPEN_ATTR_N = "N";
const std::string SHAPEN_ATTR_IN_TYPE = "in_type";
const std::string SHAPEN_ATTR_OUT_TYPE = "dtype";

// GatherV2 attr def
const std::string GATHERV2_ATTR_NAME_TAXIS = "Taxis";
const std::string GATHERV2_ATTR_NAME_TINDICES = "Tindices";
const std::string GATHERV2_ATTR_NAME_TPARAMS = "Tparams";

// Reshape attr def
const std::string RESHAPE_ATTR_NAME_INPUT_DESC = "input_desc_reshape";
const std::string RESHAPE_ATTR_NAME_OUTPUT_DESC = "output_desc_reshape";

// axis attr def
const std::string ATTR_NAME_AXIS_ORG_OP = "axis_org_op";

const std::string ATTR_NAME_LINK_WITH_SPARE = "link_with_sparse";

const std::string ATTR_NAME_NET_OUTPUT_FORMAT = "net_output_format";
const std::string ATTR_NAME_NET_OUTPUT_DATATYPE = "net_output_datatype";

// For constant folding
const std::string ATTR_NO_NEED_CONSTANT_FOLDING = "no_need_constant_folding";

const std::string ATTR_NAME_CONTINUOUS_INPUT = "continuous_input";

const std::string ATTR_NAME_CONTINUOUS_OUTPUT = "continuous_output";
@@ -882,8 +694,6 @@ const std::string ATTR_NAME_STREAM_SWITCH_COND = "switch_condition";
const std::string ATTR_NAME_TRUE_BRANCH_STREAM = "true_branch_stream";
const std::string ATTR_NAME_ACTIVE_STREAM_LIST = "active_stream_list";
const std::string ATTR_NAME_SWITCHN_PRED_VALUE = "switch_pred_value";
const std::string ATTR_NAME_ITERATORS_PER_LOOP = "iterations_per_loop";
const std::string ATTR_NAME_FLOW_CTRL_NODE_FLAG = "is_flow_ctrl_node";

const std::string ATTR_NAME_SWITCH_BRANCH_NODE_LABEL = "_switch_branch_node_label";
const std::string ATTR_NAME_SWITCH_TRUE_BRANCH_FLAG = "_switch_true_branch_flag";
@@ -954,14 +764,7 @@ const std::string ATTR_NAME_DATA_DUMP_ORIGIN_OUTPUT_INDEX = "_datadump_origin_ou
const std::string ATTR_NAME_DATA_DUMP_ORIGIN_FORMAT = "_datadump_origin_format";
const std::string ATTR_NAME_DATA_DUMP_ORIGIN_DATA_TYPE = "_datadump_origin_data_type";

// functional ops attr
const std::string ATTR_NAME_WHILE_COND = "cond";
const std::string ATTR_NAME_WHILE_BODY = "body";

// used for label switch
const std::string ATTR_NAME_LABEL_SWITCH_INDEX = "_label_switch_index";
const std::string ATTR_NAME_LABEL_SWITCH_LIST = "_label_switch_list";

const std::string ATTR_NAME_INPUT_DATATYPE = "input_datatype";
const std::string ATTR_NAME_OUTPUT_DATATYPE = "output_datatype";
} // namespace ge

+ 2
- 1
src/common/graph/shape_refiner.cc View File

@@ -21,8 +21,9 @@
#include <unordered_map>
#include <utility>
#include <vector>
#include "framework/common/types.h"
#include "graph/utils/graph_utils.h"

#include "debug/ge_log.h"
#include "debug/ge_op_types.h"
#include "external/graph/operator.h"


+ 0
- 57
src/common/graph/utils/graph_utils.cc View File

@@ -28,7 +28,6 @@
#include <cstring>
#include <fstream>
#include <iomanip>
#include <queue>

#include "./ge_context.h"
#include "debug/ge_util.h"
@@ -2000,60 +1999,4 @@ void PartialGraphBuilder::BuildExistNodes(graphStatus &error_code, std::string &

GELOGD("Build exist nodes succ.");
}

GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY graphStatus
GraphUtils::TopologicalSortingByName(const ge::ComputeGraphPtr &compute_graph, vector<NodePtr> &node_vec) {
std::vector<NodePtr> stack_input;
std::map<NodePtr, uint32_t> map_in_edge_num;
graphStatus ret = compute_graph->SortNodes(stack_input, map_in_edge_num);
if (ret != GRAPH_SUCCESS) {
GELOGE(GRAPH_FAILED, "Sort nodes failed.");
return GRAPH_FAILED;
}
const size_t non_user_input_index = stack_input.size() - compute_graph->inputs_order_.size() - 1;
std::sort(stack_input.begin(), stack_input.begin() + non_user_input_index,
[](const NodePtr &a, const NodePtr &b) -> bool { return (a->GetName() > b->GetName()); });

std::queue<NodePtr> stack;
NodePtr cur_node = nullptr;
std::map<string, NodePtr> name_node_map;
vector<string> nodes_name;
while (!stack_input.empty() || !stack.empty()) {
if (!stack.empty()) {
cur_node = stack.front();
stack.pop();
} else {
cur_node = stack_input.back();
stack_input.pop_back();
}
node_vec.emplace_back(cur_node);
compute_graph->CollectBreadthOutNode(cur_node, map_in_edge_num, name_node_map);
for (const auto &iter : name_node_map) {
nodes_name.emplace_back(iter.first);
}
std::sort(nodes_name.begin(), nodes_name.end());
for (const auto &iter : nodes_name) {
stack.push(name_node_map[iter]);
}
name_node_map.clear();
nodes_name.clear();
}
// If they are not equal, there is a closed loop
if (node_vec.size() != compute_graph->nodes_.size()) {
std::set<Node *> itered_nodes_set;
for (auto &node : node_vec) {
itered_nodes_set.insert(node.get());
}
GE_LOGE("Failed to do topo sorting total %zu, itered %zu, exist closed loop in graph.",
compute_graph->nodes_.size(), node_vec.size());
for (auto &node : compute_graph->nodes_) {
if (itered_nodes_set.count(node.get()) == 0) {
GE_LOGE("The node %s does not itered when topological sorting", node->GetName().c_str());
}
}
return GRAPH_FAILED;
}
return GRAPH_SUCCESS;
}

} // namespace ge

+ 0
- 1
src/common/graph/utils/tensor_utils.cc View File

@@ -282,7 +282,6 @@ static graphStatus CalcTensorElementCnt(const std::vector<int64_t> &dims, Format
case FORMAT_FRACTAL_Z_3D:
case FORMAT_FRACTAL_Z_3D_TRANSPOSE:
case FORMAT_NDC1HWC0:
case FORMAT_FRACTAL_Z_C04:
graph_status = CalcElementCntByDims(dims, element_cnt);
break;
default:


+ 2
- 8
src/ge/CMakeLists.txt View File

@@ -41,9 +41,9 @@ include_directories(${GE_SOURCE_DIR}/inc/external/graph)
include_directories(${GE_SOURCE_DIR}/inc/framework)
include_directories(${GE_SOURCE_DIR}/inc/framework/common)
include_directories(${GE_SOURCE_DIR}/inc/runtime)
include_directories(${GE_SOURCE_DIR}/third_party/fwkacllib)
include_directories(${GE_SOURCE_DIR}/third_party/fwkacllib/inc)
include_directories(${GE_SOURCE_DIR}/third_party/fwkacllib/inc/cce)
include_directories(${GE_SOURCE_DIR}/third_party/securec/include)
include_directories(${CMAKE_BINARY_DIR})
include_directories(${CMAKE_BINARY_DIR}/proto/ge)

@@ -55,7 +55,6 @@ file(GLOB TRAIN_SRC_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR}
"common/formats/utils/formats_trans_utils.cc"
"common/fp16_t.cc"
"common/ge/plugin_manager.cc"
"common/helper/model_cache_helper.cc"
"common/profiling/profiling_manager.cc"
"engine_manager/dnnengine_manager.cc"
"ge_local_engine/engine/host_cpu_engine.cc"
@@ -93,7 +92,6 @@ file(GLOB TRAIN_SRC_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR}
"graph/load/new_model_manager/task_info/kernel_task_info.cc"
"graph/load/new_model_manager/task_info/label_goto_task_info.cc"
"graph/load/new_model_manager/task_info/label_set_task_info.cc"
"graph/load/new_model_manager/task_info/memcpy_addr_async_task_info.cc"
"graph/load/new_model_manager/task_info/memcpy_async_task_info.cc"
"graph/load/new_model_manager/task_info/profiler_trace_task_info.cc"
"graph/load/new_model_manager/task_info/stream_active_task_info.cc"
@@ -196,7 +194,6 @@ file(GLOB TRAIN_SRC_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR}
"graph/passes/prevent_gradient_pass.cc"
"graph/passes/print_op_pass.cc"
"graph/passes/prune_pass.cc"
"graph/passes/replace_with_empty_const_pass.cc"
"graph/passes/reshape_remove_pass.cc"
"graph/passes/resource_pair_add_control_pass.cc"
"graph/passes/resource_pair_remove_control_pass.cc"
@@ -271,7 +268,6 @@ file(GLOB INFER_SRC_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR}
"common/formats/utils/formats_trans_utils.cc"
"common/fp16_t.cc"
"common/ge/plugin_manager.cc"
"common/helper/model_cache_helper.cc"
"common/profiling/profiling_manager.cc"
"engine_manager/dnnengine_manager.cc"
"ge_local_engine/engine/host_cpu_engine.cc"
@@ -308,7 +304,6 @@ file(GLOB INFER_SRC_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR}
"graph/load/new_model_manager/task_info/kernel_task_info.cc"
"graph/load/new_model_manager/task_info/label_goto_task_info.cc"
"graph/load/new_model_manager/task_info/label_set_task_info.cc"
"graph/load/new_model_manager/task_info/memcpy_addr_async_task_info.cc"
"graph/load/new_model_manager/task_info/memcpy_async_task_info.cc"
"graph/load/new_model_manager/task_info/profiler_trace_task_info.cc"
"graph/load/new_model_manager/task_info/stream_active_task_info.cc"
@@ -409,7 +404,6 @@ file(GLOB INFER_SRC_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR}
"graph/passes/prevent_gradient_pass.cc"
"graph/passes/print_op_pass.cc"
"graph/passes/prune_pass.cc"
"graph/passes/replace_with_empty_const_pass.cc"
"graph/passes/reshape_remove_pass.cc"
"graph/passes/resource_pair_add_control_pass.cc"
"graph/passes/resource_pair_remove_control_pass.cc"
@@ -474,7 +468,7 @@ target_link_libraries(ge_compiler
${slog}
${mmpa}
${msprof}
${runtime_compiler}
${runtime}
${resouce}
rt
dl)

+ 1
- 0
src/ge/client/CMakeLists.txt View File

@@ -46,6 +46,7 @@ include_directories(${GE_SOURCE_DIR}/inc/framework)
include_directories(${GE_SOURCE_DIR}/inc/graph)
include_directories(${GE_SOURCE_DIR}/third_party/fwkacllib/inc)
include_directories(${GE_SOURCE_DIR}/third_party/fwkacllib/inc/cce)
include_directories(${GE_SOURCE_DIR}/third_party/securec/include)
include_directories(${CMAKE_BINARY_DIR})
include_directories(${CMAKE_BINARY_DIR}/proto/ge)



+ 2
- 0
src/ge/client/ge_api.cc View File

@@ -32,6 +32,8 @@

using domi::GetContext;
using domi::OpRegistry;
using domi::RealPath;
using domi::StringUtils;
using std::map;
using std::string;
using std::vector;


+ 1
- 1
src/ge/common/CMakeLists.txt View File

@@ -41,7 +41,6 @@ file(GLOB SRC_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR}
"formats/format_transfers/format_transfer_hwcn_c1hwncoc0.cc"
"formats/format_transfers/format_transfer_nc1hwc0_nchw.cc"
"formats/format_transfers/format_transfer_nc1hwc0_nhwc.cc"
"formats/format_transfers/format_transfer_nchw_fz_c04.cc"
"formats/format_transfers/format_transfer_nchw_nc1hwc0.cc"
"formats/format_transfers/format_transfer_nhwc_nc1hwc0.cc"
"formats/format_transfers/format_transfer_transpose.cc"
@@ -80,6 +79,7 @@ include_directories(${GE_SOURCE_DIR}/inc/framework)
include_directories(${GE_SOURCE_DIR}/inc/graph)
include_directories(${GE_SOURCE_DIR}/third_party/fwkacllib/inc)
include_directories(${GE_SOURCE_DIR}/third_party/fwkacllib/inc/cce)
include_directories(${GE_SOURCE_DIR}/third_party/securec/include)
include_directories(${CMAKE_BINARY_DIR})
include_directories(${CMAKE_BINARY_DIR}/proto/ge)



+ 4
- 1
src/ge/common/auth/file_saver.cc View File

@@ -17,6 +17,7 @@
#include "common/auth/file_saver.h"

#include <fcntl.h>

#include <securec.h>
#include <unistd.h>
#include <cstdlib>
@@ -28,6 +29,8 @@
#include "framework/common/debug/log.h"
#include "framework/common/util.h"

using domi::CreateDirectory;
using domi::ModelEncryptType;
using ge::ModelBufferData;

namespace {
@@ -267,4 +270,4 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY Status FileSaver::SaveToFile(co
}
return ret;
}
} // namespace ge
} // namespace ge

+ 28
- 24
src/ge/common/auth/file_saver.h View File

@@ -26,26 +26,30 @@
#include "graph/buffer.h"
#include "mmpa/mmpa_api.h"

using domi::ModelFileHeader;
using domi::ModelPartition;
using domi::ModelPartitionTable;

struct PROC_PARAM {
uint8_t *model_name;

// ISV Ek buffer
/* ISV Ek buffer */
uint8_t *model_key;
uint32_t model_key_len;

// ISV root certificate buffer
/* ISV root certificate buffer */
uint8_t *root_cert;
uint32_t root_cert_len;

// ISV private key buffer
/* ISV private key buffer */
uint8_t *pri_key;
uint32_t pri_key_len;

// Raw AI Module Image buffer
/* Raw AI Module Image buffer */
uint8_t *ai_image;
uint32_t ai_image_len;

// ISV HW key buffer
/* ISV HW key buffer */
uint8_t *hw_key;
uint32_t hw_key_len;
};
@@ -62,11 +66,11 @@ using std::string;

class FileSaver {
public:
///
/// @ingroup domi_common
/// @brief save model, no encryption
/// @return Status result
///
/**
* @ingroup domi_common
* @brief save model, no encryption
* @return Status result
*/
static Status SaveToFile(const string &file_path, const ge::ModelData &model,
const ModelFileHeader *model_file_header = nullptr);

@@ -80,26 +84,26 @@ class FileSaver {
static Status SaveToFile(const string &file_path, const void *data, int len);

protected:
///
/// @ingroup domi_common
/// @brief Check validity of the file path
/// @return Status result
///
/**
* @ingroup domi_common
* @brief Check validity of the file path
* @return Status result
*/
static Status CheckPath(const string &file_path);

static Status WriteData(const void *data, uint32_t size, int32_t fd);

static Status OpenFile(int32_t &fd, const std::string &file_path);

///
/// @ingroup domi_common
/// @brief save model to file
/// @param [in] file_path file output path
/// @param [in] file_header file header info
/// @param [in] data model data
/// @param [in] len model length
/// @return Status result
///
/**
* @ingroup domi_common
* @brief save model to file
* @param [in] file_path file output path
* @param [in] file_header file header info
* @param [in] data model data
* @param [in] len model length
* @return Status result
*/
static Status SaveWithFileHeader(const string &file_path, const ModelFileHeader &file_header, const void *data,
int len);



+ 0
- 1
src/ge/common/context/ctx.cc View File

@@ -16,7 +16,6 @@

#include "framework/omg/omg_inner_types.h"

using ge::OmgContext;
namespace domi {
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY OmgContext &GetContext() {
static OmgContext context;


+ 5
- 6
src/ge/common/formats/format_transfers/datatype_transfer.cc View File

@@ -134,6 +134,10 @@ Status DataTypeTransfer::TransDataType(const CastArgs &args, TransResult &result
}
auto trans_mode = iter->second;

if (args.src_data_size == 0) {
GELOGE(PARAM_INVALID, "Invalid src data size %zu", args.src_data_size);
return PARAM_INVALID;
}
int size = GetSizeByDataType(args.dst_data_type);
if (size <= 0) {
GELOGE(PARAM_INVALID, "Failed to calc size from data type %s",
@@ -145,12 +149,6 @@ Status DataTypeTransfer::TransDataType(const CastArgs &args, TransResult &result
return PARAM_INVALID;
}
size_t total_size = static_cast<size_t>(args.src_data_size * size);
result.length = total_size;
if (total_size == 0) {
GELOGI("In TransDataType, total_size is zero, has no data.");
return SUCCESS;
}

std::shared_ptr<uint8_t> dst(new (std::nothrow) uint8_t[total_size], std::default_delete<uint8_t[]>());
if (dst == nullptr) {
GELOGE(OUT_OF_MEMORY, "Failed to alloc the memory for dst buf %zu, data size %zu", total_size, args.src_data_size);
@@ -164,6 +162,7 @@ Status DataTypeTransfer::TransDataType(const CastArgs &args, TransResult &result
return INTERNAL_ERROR;
}
result.data = dst;
result.length = total_size;
return SUCCESS;
}



+ 6
- 15
src/ge/common/formats/format_transfers/format_transfer_c1hwncoc0_hwcn.cc View File

@@ -27,9 +27,7 @@
namespace ge {
namespace formats {
namespace {
bool CheckDataTypeSupported(const DataType &data_type) {
return (data_type == DT_FLOAT || data_type == DT_FLOAT16 || data_type == DT_INT8);
}
bool CheckDataTypeSupported(const DataType &data_type) { return (data_type == DT_FLOAT || data_type == DT_FLOAT16); }

Status CheckArgsForC1hwncoc0ToHwcn(const TransArgs &args) {
auto src_shape = args.src_shape;
@@ -53,11 +51,10 @@ Status CheckArgsForC1hwncoc0ToHwcn(const TransArgs &args) {
GELOGE(PARAM_INVALID, "Failed to check dst shape %s", ShapeToString(dst_shape).c_str());
return PARAM_INVALID;
}
auto cube_size = GetCubeSizeByDataType(args.src_data_type);
if (src_shape.at(kC1hwncoc0C1) != (dst_shape.at(kHwcnC) - 1) / cube_size + 1 ||
if (src_shape.at(kC1hwncoc0C1) != (dst_shape.at(kHwcnC) - 1) / kCubeSize + 1 ||
src_shape.at(kC1hwncoc0H) != dst_shape.at(kHwcnH) || src_shape.at(kC1hwncoc0W) != dst_shape.at(kHwcnW) ||
src_shape.at(kC1hwncoc0N) != dst_shape.at(kHwcnN) || src_shape.at(kC1hwncoc0Co) != cube_size ||
src_shape.at(kC1hwncoc0C0) != cube_size) {
src_shape.at(kC1hwncoc0N) != dst_shape.at(kHwcnN) || src_shape.at(kC1hwncoc0Co) != kCubeSize ||
src_shape.at(kC1hwncoc0C0) != kCubeSize) {
GELOGE(PARAM_INVALID, "Failed to check relationship between src and dst shape, src shape %s, dst shape %s",
ShapeToString(src_shape).c_str(), ShapeToString(dst_shape).c_str());
return PARAM_INVALID;
@@ -81,7 +78,6 @@ Status GetDstDataAfterTrans(const TransArgs &args, TransResult &result, int size
auto c0 = args.src_shape.at(kC1hwncoc0C0);
auto co = args.src_shape.at(kC1hwncoc0Co);
auto c = args.dst_shape.at(kHwcnC);
auto cube_size = GetCubeSizeByDataType(args.src_data_type);
int64_t cn = c * n;
int64_t wcn = w * cn;
int64_t coc0 = co * c0;
@@ -97,8 +93,8 @@ Status GetDstDataAfterTrans(const TransArgs &args, TransResult &result, int size
int64_t c_head_addr = w_head_addr + c_idx * n;
for (int64_t n_idx = 0; n_idx < n; n_idx++) {
int64_t dst_idx = c_head_addr + n_idx;
int64_t c1_idx = c_idx / cube_size;
int64_t c0_idx = c_idx % cube_size;
int64_t c1_idx = c_idx / kCubeSize;
int64_t c0_idx = c_idx % kCubeSize;
int64_t co_idx = c0_idx;
int64_t src_idx = c1_idx * hwncoc0 + h_idx * wncoc0 + w_idx * ncoc0 + n_idx * coc0 + co_idx * c0 + c0_idx;
auto src_offset = src_idx * size;
@@ -134,11 +130,6 @@ Status FormatTransferC1hwncoc0Hwcn::TransFormat(const TransArgs &args, TransResu
int size = GetSizeByDataType(args.src_data_type);
int64_t total_size = GetItemNumByShape(args.dst_shape) * size;
if (total_size <= 0) {
int64_t src_size = GetItemNumByShape(args.src_shape);
if (total_size == 0 && src_size == 0) {
result.length = static_cast<size_t>(total_size);
return SUCCESS;
}
GELOGE(INTERNAL_ERROR, "Get %ld total size from dst shape %s, src shape %s", total_size,
ShapeToString(args.dst_shape).c_str(), ShapeToString(args.src_shape).c_str());
return PARAM_INVALID;


+ 0
- 5
src/ge/common/formats/format_transfers/format_transfer_dhwcn_fracz3D.cc View File

@@ -88,11 +88,6 @@ Status TransFormatDhwckToFz3D(const TransArgs &args, TransResult &result) {
dst_size *= dim;
}
dst_size *= data_size;
if (dst_size == 0) {
result.length = static_cast<size_t>(dst_size);
return SUCCESS;
}

std::shared_ptr<uint8_t> dst(new (std::nothrow) uint8_t[dst_size], std::default_delete<uint8_t[]>());
if (dst == nullptr) {
GELOGE(OUT_OF_MEMORY, "Failed to trans format from %s to %s, can not alloc the memory for dst buf %ld",


+ 0
- 5
src/ge/common/formats/format_transfers/format_transfer_dhwnc_fracz3D_transpose.cc View File

@@ -89,11 +89,6 @@ Status TransFormatDhwncToFz3DTranspose(const TransArgs &args, TransResult &resul
dst_size *= dim;
}
dst_size *= data_size;
if (dst_size == 0) {
result.length = static_cast<size_t>(dst_size);
return SUCCESS;
}

std::shared_ptr<uint8_t> dst(new (std::nothrow) uint8_t[dst_size], std::default_delete<uint8_t[]>());
if (dst == nullptr) {
GELOGE(OUT_OF_MEMORY, "Failed to trans format from %s to %s, can not alloc the memory for dst buf %ld",


+ 0
- 10
src/ge/common/formats/format_transfers/format_transfer_fractal_nz.cc View File

@@ -116,11 +116,6 @@ Status CheckShapeRelation(const TransArgs &args, ShapeVector &hw_shape) {
Status TransFormatFromNdToFracNz(const TransArgs &args, TransResult &result, const ShapeVector &hw_shape) {
int size = GetSizeByDataType(args.src_data_type);
int64_t dst_size = GetItemNumByShape(args.dst_shape) * size;
if (dst_size == 0) {
result.length = static_cast<size_t>(dst_size);
return SUCCESS;
}

std::shared_ptr<uint8_t> dst(new (std::nothrow) uint8_t[dst_size](), std::default_delete<uint8_t[]>());
if (dst == nullptr) {
GELOGE(OUT_OF_MEMORY, "Failed to trans format from %s to %s, can not alloc the memory for dst buf %ld",
@@ -189,11 +184,6 @@ Status TransFormatFromNdToFracNz(const TransArgs &args, TransResult &result, con
Status TransFormatFromFracNzToNd(const TransArgs &args, TransResult &result, const ShapeVector &dst_hw_shape) {
int size = GetSizeByDataType(args.src_data_type);
int64_t dst_size = GetItemNumByShape(args.dst_shape) * size;
if (dst_size == 0) {
result.length = static_cast<size_t>(dst_size);
return SUCCESS;
}

std::shared_ptr<uint8_t> dst(new (std::nothrow) uint8_t[dst_size], std::default_delete<uint8_t[]>());
if (dst == nullptr) {
GELOGE(OUT_OF_MEMORY, "Failed to trans format from %s to %s, can not alloc the memory for dst buf %ld",


+ 0
- 15
src/ge/common/formats/format_transfers/format_transfer_fractal_z.cc View File

@@ -119,11 +119,6 @@ Status TransFormatFromNchwToFz(const TransArgs &args, TransResult &result) {
int64_t total_ele_cnt = hf_cnt * vf_cnt * fractal_ele_cnt;
int size = GetSizeByDataType(args.src_data_type);
int64_t dst_size = total_ele_cnt * size;
if (dst_size == 0) {
result.length = static_cast<size_t>(dst_size);
return SUCCESS;
}

std::shared_ptr<uint8_t> dst(new (std::nothrow) uint8_t[dst_size], std::default_delete<uint8_t[]>());
if (dst == nullptr) {
GELOGE(OUT_OF_MEMORY, "Failed to trans format from %s to %s, can not alloc the memory for dst buf %ld",
@@ -199,11 +194,6 @@ Status TransFormatHwcnToFz(const TransArgs &args, TransResult &result) {
dst_size *= dim;
}
dst_size *= data_size;
if (dst_size == 0) {
result.length = static_cast<size_t>(dst_size);
return SUCCESS;
}

std::shared_ptr<uint8_t> dst(new (std::nothrow) uint8_t[dst_size], std::default_delete<uint8_t[]>());
if (dst == nullptr) {
GELOGE(OUT_OF_MEMORY, "Failed to trans format from %s to %s, can not alloc the memory for dst buf %ld",
@@ -269,11 +259,6 @@ Status TransFormatNhwcToFz(const TransArgs &args, TransResult &result) {
dst_size *= dim;
}
dst_size *= data_size;
if (dst_size == 0) {
result.length = static_cast<size_t>(dst_size);
return SUCCESS;
}

std::shared_ptr<uint8_t> dst(new (std::nothrow) uint8_t[dst_size], std::default_delete<uint8_t[]>());
if (dst == nullptr) {
GELOGE(OUT_OF_MEMORY, "Failed to trans format from %s to %s, can not alloc the memory for dst buf %ld",


+ 0
- 10
src/ge/common/formats/format_transfers/format_transfer_fractal_zz.cc View File

@@ -117,11 +117,6 @@ Status CheckShapeRelation(const TransArgs &args, ShapeVector &hw_shape) {
Status TransFormatFromNdToFracZz(const TransArgs &args, TransResult &result, const ShapeVector &hw_shape) {
int size = GetSizeByDataType(args.src_data_type);
int64_t dst_size = GetItemNumByShape(args.dst_shape) * size;
if (dst_size == 0) {
result.length = static_cast<size_t>(dst_size);
return SUCCESS;
}

std::shared_ptr<uint8_t> dst(new (std::nothrow) uint8_t[dst_size](), std::default_delete<uint8_t[]>());
if (dst == nullptr) {
GELOGE(OUT_OF_MEMORY, "Failed to trans format from %s to %s, can not alloc the memory for dst buf %ld",
@@ -194,11 +189,6 @@ Status TransFormatFromNdToFracZz(const TransArgs &args, TransResult &result, con
Status TransFormatFromFracZzToNd(const TransArgs &args, TransResult &result, const ShapeVector &dst_hw_shape) {
int size = GetSizeByDataType(args.src_data_type);
int64_t dst_size = GetItemNumByShape(args.dst_shape) * size;
if (dst_size == 0) {
result.length = static_cast<size_t>(dst_size);
return SUCCESS;
}

std::shared_ptr<uint8_t> dst(new (std::nothrow) uint8_t[dst_size](), std::default_delete<uint8_t[]>());
if (dst == nullptr) {
GELOGE(OUT_OF_MEMORY, "Failed to trans format from %s to %s, can not alloc the memory for dst buf %ld",


+ 0
- 6
src/ge/common/formats/format_transfers/format_transfer_fracz_hwcn.cc View File

@@ -133,12 +133,6 @@ Status FormatTransferFracZHwcn::TransFormat(const TransArgs &args, TransResult &
int size = GetSizeByDataType(args.src_data_type);
auto total_size = GetItemNumByShape(args.dst_shape) * size;
if (total_size <= 0) {
int64_t src_size = GetItemNumByShape(args.src_shape);
if (total_size == 0 && src_size == 0) {
result.length = static_cast<size_t>(total_size);
return SUCCESS;
}

GELOGE(INTERNAL_ERROR, "Get %ld total size from dst shape %s, src shape %s", total_size,
ShapeToString(args.dst_shape).c_str(), ShapeToString(args.src_shape).c_str());
return PARAM_INVALID;


+ 0
- 7
src/ge/common/formats/format_transfers/format_transfer_fracz_nchw.cc View File

@@ -133,12 +133,6 @@ Status FormatTransferFracZNchw::TransFormat(const TransArgs &args, TransResult &
int size = GetSizeByDataType(args.src_data_type);
auto total_size = GetItemNumByShape(args.dst_shape) * size;
if (total_size <= 0) {
int64_t src_size = GetItemNumByShape(args.src_shape);
if (total_size == 0 && src_size == 0) {
result.length = static_cast<size_t>(total_size);
return SUCCESS;
}

GELOGE(INTERNAL_ERROR, "Get %ld total size from dst shape %s, src shape %s", total_size,
ShapeToString(args.dst_shape).c_str(), ShapeToString(args.src_shape).c_str());
return PARAM_INVALID;
@@ -146,7 +140,6 @@ Status FormatTransferFracZNchw::TransFormat(const TransArgs &args, TransResult &
GELOGD("Begin to trans format from FracZ to NCHW, src shape %s, data type %s, dst shape %s, memory size %ld",
ShapeToString(args.src_shape).c_str(), TypeUtils::DataTypeToSerialString(args.src_data_type).c_str(),
ShapeToString(args.dst_shape).c_str(), total_size);

if (GetDstDataAfterTrans(args, result, size, total_size) != SUCCESS) {
GELOGE(INTERNAL_ERROR, "Failed to get data after trans, src shape %s, data type %s, dst shape %s, memory size %ld",
ShapeToString(args.src_shape).c_str(), TypeUtils::DataTypeToSerialString(args.src_data_type).c_str(),


+ 0
- 6
src/ge/common/formats/format_transfers/format_transfer_fracz_nhwc.cc View File

@@ -132,12 +132,6 @@ Status FormatTransferFracZNhwc::TransFormat(const TransArgs &args, TransResult &
int size = GetSizeByDataType(args.src_data_type);
auto total_size = GetItemNumByShape(args.dst_shape) * size;
if (total_size <= 0) {
int64_t src_size = GetItemNumByShape(args.src_shape);
if (total_size == 0 && src_size == 0) {
result.length = static_cast<size_t>(total_size);
return SUCCESS;
}

GELOGE(INTERNAL_ERROR, "Get %ld total size from dst shape %s, src shape %s", total_size,
ShapeToString(args.dst_shape).c_str(), ShapeToString(args.src_shape).c_str());
return PARAM_INVALID;


+ 7
- 17
src/ge/common/formats/format_transfers/format_transfer_hwcn_c1hwncoc0.cc View File

@@ -27,20 +27,16 @@
namespace ge {
namespace formats {
namespace {
bool CheckDataTypeSupported(const DataType &data_type) {
return (data_type == DT_FLOAT || data_type == DT_FLOAT16 || data_type == DT_INT8);
}
bool CheckDataTypeSupported(const DataType &data_type) { return (data_type == DT_FLOAT || data_type == DT_FLOAT16); }

Status TransShapeHwcnToC1hwncoc0(const DataType &data_type, const std::vector<int64_t> &src_shape,
std::vector<int64_t> &dst_shape) {
auto cube_size = GetCubeSizeByDataType(data_type);
Status TransShapeHwcnToC1hwncoc0(const std::vector<int64_t> &src_shape, std::vector<int64_t> &dst_shape) {
dst_shape.clear();
dst_shape.push_back(Ceil(src_shape.at(kHwcnC), static_cast<int64_t>(cube_size)));
dst_shape.push_back((src_shape.at(kHwcnC) - 1) / kCubeSize + 1);
dst_shape.push_back(src_shape.at(kHwcnH));
dst_shape.push_back(src_shape.at(kHwcnW));
dst_shape.push_back(src_shape.at(kHwcnN));
dst_shape.push_back(cube_size);
dst_shape.push_back(cube_size);
dst_shape.push_back(kCubeSize);
dst_shape.push_back(kCubeSize);
if (!CheckShapeValid(dst_shape, kC1hwncoc0DimsNum)) {
GELOGE(PARAM_INVALID, "Failed to check dst shape %s", ShapeToString(dst_shape).c_str());
return PARAM_INVALID;
@@ -69,7 +65,7 @@ Status CheckArgsForHwcnToC1hwncoc0(const TransArgs &args) {
return PARAM_INVALID;
}
std::vector<int64_t> expect_dst_shape;
auto ret = TransShapeHwcnToC1hwncoc0(args.src_data_type, args.src_shape, expect_dst_shape);
auto ret = TransShapeHwcnToC1hwncoc0(args.src_shape, expect_dst_shape);
if (ret != SUCCESS) {
return ret;
}
@@ -169,12 +165,6 @@ Status FormatTransferHwcnC1hwncoc0::TransFormat(const TransArgs &args, TransResu
int size = GetSizeByDataType(args.src_data_type);
auto total_size = GetItemNumByShape(args.dst_shape) * size;
if (total_size <= 0) {
int64_t src_size = GetItemNumByShape(args.src_shape);
if (total_size == 0 && src_size == 0) {
result.length = static_cast<size_t>(total_size);
return SUCCESS;
}

GELOGE(INTERNAL_ERROR, "Get %ld total size from dst shape %s, src shape %s", total_size,
ShapeToString(args.dst_shape).c_str(), ShapeToString(args.src_shape).c_str());
return PARAM_INVALID;
@@ -198,7 +188,7 @@ Status FormatTransferHwcnC1hwncoc0::TransShape(Format src_format, const std::vec
GELOGE(PARAM_INVALID, "Failed to check src shape %s", ShapeToString(src_shape).c_str());
return PARAM_INVALID;
}
return TransShapeHwcnToC1hwncoc0(data_type, src_shape, dst_shape);
return TransShapeHwcnToC1hwncoc0(src_shape, dst_shape);
} else {
return UNSUPPORTED;
}


+ 1
- 7
src/ge/common/formats/format_transfers/format_transfer_nc1hwc0_nchw.cc View File

@@ -58,7 +58,7 @@ Status CheckArgsForNc1hwc0ToNchw(const TransArgs &args) {
}
if (src_shape.at(kNc1hwc0H) != dst_shape.at(kNchwH) || src_shape.at(kNc1hwc0W) != dst_shape.at(kNchwW) ||
src_shape.at(kNc1hwc0N) != dst_shape.at(kNchwN) || src_shape.at(kNc1hwc0C0) != c0 ||
src_shape.at(kNc1hwc0C1) != (Ceil(dst_shape.at(kNchwC), c0))) {
src_shape.at(kNc1hwc0C1) != (dst_shape.at(kNchwC) - 1) / c0 + 1) {
GELOGE(PARAM_INVALID, "Failed to check relationship between src and dst shape, src shape %s, dst shape %s",
ShapeToString(src_shape).c_str(), ShapeToString(dst_shape).c_str());
return PARAM_INVALID;
@@ -130,12 +130,6 @@ Status FormatTransferNc1hwc0Nchw::TransFormat(const TransArgs &args, TransResult
int size = GetSizeByDataType(args.src_data_type);
auto total_size = GetItemNumByShape(args.dst_shape) * size;
if (total_size <= 0) {
int64_t src_size = GetItemNumByShape(args.src_shape);
if (total_size == 0 && src_size == 0) {
result.length = static_cast<size_t>(total_size);
return SUCCESS;
}

GELOGE(INTERNAL_ERROR, "Get %ld total size from dst shape %s, src shape %s", total_size,
ShapeToString(args.dst_shape).c_str(), ShapeToString(args.src_shape).c_str());
return PARAM_INVALID;


+ 1
- 7
src/ge/common/formats/format_transfers/format_transfer_nc1hwc0_nhwc.cc View File

@@ -58,7 +58,7 @@ Status CheckArgsForNc1hwc0ToNhwc(const TransArgs &args) {
}
if (src_shape.at(kNc1hwc0H) != dst_shape.at(kNhwcH) || src_shape.at(kNc1hwc0W) != dst_shape.at(kNhwcW) ||
src_shape.at(kNc1hwc0N) != dst_shape.at(kNhwcN) || src_shape.at(kNc1hwc0C0) != c0 ||
src_shape.at(kNc1hwc0C1) != (Ceil(dst_shape.at(kNhwcC), c0))) {
src_shape.at(kNc1hwc0C1) != (dst_shape.at(kNhwcC) - 1) / c0 + 1) {
GELOGE(PARAM_INVALID, "Failed to check relationship between src and dst shape, src shape %s, dst shape %s",
ShapeToString(src_shape).c_str(), ShapeToString(dst_shape).c_str());
return PARAM_INVALID;
@@ -130,12 +130,6 @@ Status FormatTransferNc1hwc0Nhwc::TransFormat(const TransArgs &args, TransResult
int size = GetSizeByDataType(args.src_data_type);
auto total_size = GetItemNumByShape(args.dst_shape) * size;
if (total_size <= 0) {
int64_t src_size = GetItemNumByShape(args.src_shape);
if (total_size == 0 && src_size == 0) {
result.length = static_cast<size_t>(total_size);
return SUCCESS;
}

GELOGE(INTERNAL_ERROR, "Get %ld total size from dst shape %s, src shape %s", total_size,
ShapeToString(args.dst_shape).c_str(), ShapeToString(args.src_shape).c_str());
return PARAM_INVALID;


+ 0
- 314
src/ge/common/formats/format_transfers/format_transfer_nchw_fz_c04.cc View File

@@ -1,314 +0,0 @@
/**
* Copyright 2019-2020 Huawei Technologies Co., Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#include "common/formats/format_transfers/format_transfer_nchw_fz_c04.h"
#include "common/formats/format_transfers/format_transfer_transpose.h"

#include <securec.h>
#include <memory>
#include <stdlib.h>

#include "common/formats/utils/formats_definitions.h"
#include "common/formats/utils/formats_trans_utils.h"
#include "common/util.h"
#include "framework/common/debug/ge_log.h"
#include "graph/utils/type_utils.h"

/** 【Explain about transfer from nchw to FZ_CO4】
* First Step: Padding in N and C axis. Here C must be less or equal than 4
* After Padding, it will be like (n = ceil(n,16)*16, 4, h, w)
* Second Step: transpose. It will be like (n = ceil(n,16)*16, h, w, 4)
* Third Step: View the 4D as 2D , first dim is N, second dim is h*w*c.
* Padding to (N, ceil(Z/16)*16)
* Last Step: View the (N, ceil(Z/16)*16) as 4D (N/16, 16, C/16, 16) and transpose to (C/16, N/16, 16, 16)
*/

namespace ge {
namespace formats {
namespace {

constexpr int64_t kMaxDimsNumC = 4;

Status CheckDataTypeSupport(DataType data_type) { return GetSizeByDataType(data_type) > 0 ? SUCCESS : UNSUPPORTED; }

Status TransShape(int64_t n, int64_t c, int64_t h, int64_t w, DataType data_type, std::vector<int64_t> &dst_shape) {
auto c0 = GetCubeSizeByDataType(data_type);
if (c0 < 0) {
return UNSUPPORTED;
}
auto chw = c * h * w;

auto first_dim = Ceil(chw, c0);
auto no = Ceil(n, static_cast<int64_t>(c0));

dst_shape.clear();
dst_shape.push_back(first_dim);
dst_shape.push_back(no);
dst_shape.push_back(c0);
dst_shape.push_back(c0);

if (!IsShapeValid(dst_shape)) {
GELOGE(PARAM_INVALID, "Failed to check dst shape %s", ShapeToString(dst_shape).c_str());
return PARAM_INVALID;
}
return SUCCESS;
}

Status TransShapeNchwToFzC04(const std::vector<int64_t> &src_shape, DataType data_type,
std::vector<int64_t> &dst_shape) {
if (!CheckShapeValid(src_shape, kNchwDimsNum)) {
return PARAM_INVALID;
}

auto n = src_shape.at(kNchwN);
auto c = src_shape.at(kNchwC);
auto h = src_shape.at(kNchwH);
auto w = src_shape.at(kNchwW);
return TransShape(n, c, h, w, data_type, dst_shape);
}

Status TransFormatFromNchwToFzC04(const TransArgs &args, TransResult &result) {
int64_t n = args.src_shape.at(kNchwN);
int64_t c = args.src_shape.at(kNchwC);
int64_t h = args.src_shape.at(kNchwH);
int64_t w = args.src_shape.at(kNchwW);

int64_t c0 = GetCubeSizeByDataType(args.src_data_type);
int size = GetSizeByDataType(args.src_data_type);

auto data = args.data;
TransResult trans_result_1;
std::vector<int64_t> perm_arg_1 = {0, 2, 3, 1};
std::vector<int64_t> expect_shape = {n, h, w, c};
auto ret = ge::formats::Transpose(data, args.src_shape, args.src_data_type, perm_arg_1, trans_result_1);
if (ret != SUCCESS) {
GELOGE(INTERNAL_ERROR, "Failed to Transpose from NCHW to HWCN");
return NOT_CHANGED;
}

TransArgs args_tmp = args;
args_tmp.src_shape = expect_shape;
args_tmp.data = trans_result_1.data.get();
// check size it should be same with original
size_t expect_size = n * c * h * w * size; // before has do check about mul
if (trans_result_1.length != expect_size) {
GELOGE(INTERNAL_ERROR, "size is not match after transpose!");
return NOT_CHANGED;
}

/* prepare for padding in chw*/
int64_t tmp = h * w * c;
int64_t n_o = Ceil(n, static_cast<int64_t>(c0));
int64_t c_o = c0;
int64_t h_o = Ceil(tmp, c0);
int64_t w_o = c0;
std::vector<int64_t> shape_o = {n_o, c_o, h_o, w_o};

// data overflow check totally
GE_IF_BOOL_EXEC(!CheckInt64MulOverflow(h_o, w_o),
GELOGE(INTERNAL_ERROR, "int64 mul overflow.A[%lld], B[%lld]", h_o, w_o);
return INTERNAL_ERROR);
GE_IF_BOOL_EXEC(!CheckInt64MulOverflow(n_o, c_o),
GELOGE(INTERNAL_ERROR, "int64 mul overflow.A[%lld], B[%lld]", n_o, c_o);
return INTERNAL_ERROR);
auto t1 = h_o * w_o;
auto t2 = n_o * c_o;
GE_IF_BOOL_EXEC(!CheckInt64MulOverflow(t1, t2), GELOGE(INTERNAL_ERROR, "int64 mul overflow.A[%lld], B[%lld]", t1, t2);
return INTERNAL_ERROR);

int64_t total_ele_cnt = n_o * c_o * h_o * w_o;
GE_IF_BOOL_EXEC(!CheckInt64MulOverflow(total_ele_cnt, size),
GELOGE(INTERNAL_ERROR, "int64 mul overflow.A[%lld], B[%lld]", total_ele_cnt, size);
return INTERNAL_ERROR);
int64_t dst_size = total_ele_cnt * size;
if (dst_size == 0) {
result.length = 0;
return SUCCESS;
}

std::shared_ptr<uint8_t> dst(new (std::nothrow) uint8_t[dst_size], std::default_delete<uint8_t[]>());
if (dst == nullptr) {
GELOGE(OUT_OF_MEMORY, "Failed to trans format from %s to %s, can not alloc the memory for dst buf %ld",
TypeUtils::FormatToSerialString(args.src_format).c_str(),
TypeUtils::FormatToSerialString(args.dst_format).c_str(), dst_size);
return OUT_OF_MEMORY;
}
auto retMem = memset_s(dst.get(), dst_size, 0, dst_size);
if (retMem != EOK) {
GELOGE(INTERNAL_ERROR, "memst failed!");
return INTERNAL_ERROR;
}
// copy data
auto block = c * h * w * size;
auto stride = h_o * w_o * size;
auto p_s = trans_result_1.data.get();
auto p_d = dst.get();
auto protectSize = dst_size;
for (auto k = 0; k < n; k++) {
ret = memcpy_s(p_d + k * stride, protectSize, p_s + k * block, block);
if (ret != EOK) {
GELOGE(INTERNAL_ERROR, "memcpy_s failed!");
return INTERNAL_ERROR;
}
protectSize = protectSize - block;
}

// transpose : 2,0,1,3
std::vector<int64_t> perm_arg_2 = {2, 0, 1, 3};
ret = ge::formats::Transpose(dst.get(), shape_o, args.src_data_type, perm_arg_2, result);
if (ret != SUCCESS) {
GELOGE(INTERNAL_ERROR, "Failed to Transpose from NCHW to HWCN");
return NOT_CHANGED;
}

return SUCCESS;
}

Status PaddingNC(const TransArgs &args, TransArgs &args_tmp, std::shared_ptr<uint8_t> &dst) {
args_tmp = args;
auto src_shape = args_tmp.src_shape;
if (!CheckShapeValid(src_shape, kNchwDimsNum)) {
return PARAM_INVALID;
}
int64_t c0 = GetCubeSizeByDataType(args.src_data_type);

auto n = src_shape.at(kNchwN);
auto c = src_shape.at(kNchwC);
auto h = src_shape.at(kNchwH);
auto w = src_shape.at(kNchwW);

if (c > kMaxDimsNumC) {
GELOGE(PARAM_INVALID, "Invalie dim c num[%lu].It should be in (0,4]", c);
return PARAM_INVALID;
}

auto n_o = Ceil(n, c0) * c0;
auto c_o = kMaxDimsNumC;
auto h_o = h;
auto w_o = w;
args_tmp.src_shape.at(kNchwN) = n_o;
args_tmp.src_shape.at(kNchwC) = c_o;
args_tmp.src_shape.at(kNchwH) = h_o;
args_tmp.src_shape.at(kNchwW) = w_o;

// data overflow check
GE_IF_BOOL_EXEC(!CheckInt64MulOverflow(h_o, w_o),
GELOGE(INTERNAL_ERROR, "int64 mul overflow.A[%lld], B[%lld]", h_o, w_o);
return INTERNAL_ERROR);
GE_IF_BOOL_EXEC(!CheckInt64MulOverflow(n_o, c_o),
GELOGE(INTERNAL_ERROR, "int64 mul overflow.A[%lld], B[%lld]", n_o, c_o);
return INTERNAL_ERROR);
auto t1 = h_o * w_o;
auto t2 = n_o * c_o;
GE_IF_BOOL_EXEC(!CheckInt64MulOverflow(t1, t2), GELOGE(INTERNAL_ERROR, "int64 mul overflow.A[%lld], B[%lld]", t1, t2);
return INTERNAL_ERROR);

int64_t total_ele_cnt = n_o * c_o * h_o * w_o;
int size = GetSizeByDataType(args.src_data_type);
GE_IF_BOOL_EXEC(!CheckInt64MulOverflow(total_ele_cnt, size),
GELOGE(INTERNAL_ERROR, "int64 mul overflow.A[%lld], B[%lld]", total_ele_cnt, size);
return INTERNAL_ERROR);

int64_t dst_size = total_ele_cnt * size;
if (dst_size == 0) {
return SUCCESS;
}

dst.reset(new (std::nothrow) uint8_t[dst_size], std::default_delete<uint8_t[]>());
if (dst == nullptr) {
GELOGE(OUT_OF_MEMORY, "Failed to trans format from %s to %s, can not alloc the memory for dst buf %ld",
TypeUtils::FormatToSerialString(args.src_format).c_str(),
TypeUtils::FormatToSerialString(args.dst_format).c_str(), dst_size);
return OUT_OF_MEMORY;
}
auto ret = memset_s(dst.get(), dst_size, 0, dst_size);
if (ret != EOK) {
GELOGE(INTERNAL_ERROR, "memst failed!");
return INTERNAL_ERROR;
}

auto p_s = args.data;
auto p_d = dst.get();
auto block = h * w * size;
auto protectSize = dst_size;

for (int i = 0; i < n; i++) {
for (int j = 0; j < c; j++) {
ret = memcpy_s(p_d + (i * c_o * h_o * w_o + j * h_o * w_o) * size, protectSize,
p_s + (i * c * h * w + j * h * w) * size, block);
if (ret != EOK) {
GELOGE(INTERNAL_ERROR, "memcpy_s failed!");
return INTERNAL_ERROR;
}
protectSize = protectSize - block;
}
}
args_tmp.data = dst.get();

return SUCCESS;
}
} // namespace

Status FormatTransferNchwToFZC04::TransFormat(const TransArgs &args, TransResult &result) {
GELOGD("Begin to trans format from %s to %s, src shape %s, data type %s, dst shape %s",
TypeUtils::FormatToSerialString(args.src_format).c_str(),
TypeUtils::FormatToSerialString(args.dst_format).c_str(), ShapeToString(args.src_shape).c_str(),
TypeUtils::DataTypeToSerialString(args.src_data_type).c_str(), ShapeToString(args.dst_shape).c_str());
TransArgs args_tmp = args;
std::shared_ptr<uint8_t> dst = nullptr;
auto ret = PaddingNC(args, args_tmp, dst);
if (ret != SUCCESS) {
GELOGE(INTERNAL_ERROR, "Padding in NC axis failed!");
return ret;
}

std::vector<int64_t> expect_shape;
ret = TransShape(args_tmp.src_format, args_tmp.src_shape, args_tmp.src_data_type, args_tmp.dst_format, expect_shape);
if (ret != SUCCESS) {
return ret;
}

if (!args_tmp.dst_shape.empty() && args_tmp.dst_shape != expect_shape) {
GELOGE(PARAM_INVALID, "Failed to trans format from %s to %s, the dst shape %s is invalid, expect %s",
TypeUtils::FormatToSerialString(args_tmp.src_format).c_str(),
TypeUtils::FormatToSerialString(args_tmp.dst_format).c_str(), ShapeToString(args_tmp.dst_shape).c_str(),
ShapeToString(expect_shape).c_str());
return PARAM_INVALID;
}

if (args_tmp.src_format == FORMAT_NCHW && args_tmp.dst_format == FORMAT_FRACTAL_Z_C04) {
return TransFormatFromNchwToFzC04(args_tmp, result);
}

return UNSUPPORTED;
}

Status FormatTransferNchwToFZC04::TransShape(Format src_format, const std::vector<int64_t> &src_shape,
DataType data_type, Format dst_format, std::vector<int64_t> &dst_shape) {
if (CheckDataTypeSupport(data_type) != SUCCESS) {
return UNSUPPORTED;
}
if (src_format == FORMAT_NCHW && dst_format == FORMAT_FRACTAL_Z_C04) {
return TransShapeNchwToFzC04(src_shape, data_type, dst_shape);
}

return UNSUPPORTED;
}

REGISTER_FORMAT_TRANSFER(FormatTransferNchwToFZC04, FORMAT_NCHW, FORMAT_FRACTAL_Z_C04)

} // namespace formats
} // namespace ge

+ 0
- 35
src/ge/common/formats/format_transfers/format_transfer_nchw_fz_c04.h View File

@@ -1,35 +0,0 @@
/**
* Copyright 2019-2020 Huawei Technologies Co., Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef GE_COMMON_FORMATS_FORMAT_TRANSFERS_NCHW_FZC04_H_
#define GE_COMMON_FORMATS_FORMAT_TRANSFERS_NCHW_FZC04_H_

#include <vector>

#include "common/formats/format_transfers/format_transfer.h"

namespace ge {
namespace formats {
class FormatTransferNchwToFZC04 : public FormatTransfer {
public:
Status TransFormat(const ge::formats::TransArgs &args, ge::formats::TransResult &result) override;
Status TransShape(Format src_format, const std::vector<int64_t> &src_shape, DataType data_type, Format dst_format,
std::vector<int64_t> &dst_shape) override;
};
} // namespace formats
} // namespace ge

#endif // GE_COMMON_FORMATS_FORMAT_TRANSFERS_FORMAT_TRANSFER_FRACTAL_Z_H_

+ 19
- 35
src/ge/common/formats/format_transfers/format_transfer_nchw_nc1hwc0.cc View File

@@ -40,7 +40,7 @@ Status TransShapeNchwToNc1hwc0(const std::vector<int64_t> &src_shape, DataType d
}
dst_shape.clear();
dst_shape.push_back(src_shape.at(kNchwN));
dst_shape.push_back(Ceil(src_shape.at(kNchwC), c0));
dst_shape.push_back((src_shape.at(kNchwC) - 1) / c0 + 1);
dst_shape.push_back(src_shape.at(kNchwH));
dst_shape.push_back(src_shape.at(kNchwW));
dst_shape.push_back(c0);
@@ -74,8 +74,25 @@ Status CheckArgsForNchwToNc1hwc0(const TransArgs &args) {

return SUCCESS;
}
} // namespace

Status GetDstDataAfterTrans(const TransArgs &args, TransResult &result, const int size, const int64_t total_size) {
Status FormatTransferNchwNc1hwc0::TransFormat(const TransArgs &args, TransResult &result) {
if (CheckArgsForNchwToNc1hwc0(args) != SUCCESS) {
return PARAM_INVALID;
}
// Guarantee the validity of parameters in check function
int size = GetSizeByDataType(args.src_data_type);
auto total_size = GetItemNumByShape(args.dst_shape) * size;
if (total_size <= 0) {
GELOGE(INTERNAL_ERROR, "Get %ld total size from dst shape %s, src shape %s", total_size,
ShapeToString(args.dst_shape).c_str(), ShapeToString(args.src_shape).c_str());
return PARAM_INVALID;
}
GELOGD(
"Begin to trans format from NCHW to NC1HWC0, src shape %s, data type "
"%s, dst shape %s memory size %ld",
ShapeToString(args.src_shape).c_str(), TypeUtils::DataTypeToSerialString(args.src_data_type).c_str(),
ShapeToString(args.dst_shape).c_str(), total_size);
std::shared_ptr<uint8_t> dst(new (std::nothrow) uint8_t[total_size], std::default_delete<uint8_t[]>());
if (dst == nullptr) {
GELOGE(OUT_OF_MEMORY,
@@ -152,39 +169,6 @@ Status GetDstDataAfterTrans(const TransArgs &args, TransResult &result, const in
result.length = static_cast<size_t>(total_size);
return SUCCESS;
}
} // namespace

Status FormatTransferNchwNc1hwc0::TransFormat(const TransArgs &args, TransResult &result) {
if (CheckArgsForNchwToNc1hwc0(args) != SUCCESS) {
return PARAM_INVALID;
}
// Guarantee the validity of parameters in check function
int size = GetSizeByDataType(args.src_data_type);
auto total_size = GetItemNumByShape(args.dst_shape) * size;
if (total_size <= 0) {
int64_t src_size = GetItemNumByShape(args.src_shape);
if (total_size == 0 && src_size == 0) {
result.length = static_cast<size_t>(total_size);
return SUCCESS;
}

GELOGE(INTERNAL_ERROR, "Get %ld total size from dst shape %s, src shape %s", total_size,
ShapeToString(args.dst_shape).c_str(), ShapeToString(args.src_shape).c_str());
return PARAM_INVALID;
}
GELOGD(
"Begin to trans format from NCHW to NC1HWC0, src shape %s, data type "
"%s, dst shape %s memory size %ld",
ShapeToString(args.src_shape).c_str(), TypeUtils::DataTypeToSerialString(args.src_data_type).c_str(),
ShapeToString(args.dst_shape).c_str(), total_size);
if (GetDstDataAfterTrans(args, result, size, total_size) != SUCCESS) {
GELOGE(INTERNAL_ERROR, "Failed to get data after trans, src shape %s, data type %s, dst shape %s, memory size %ld",
ShapeToString(args.src_shape).c_str(), TypeUtils::DataTypeToSerialString(args.src_data_type).c_str(),
ShapeToString(args.dst_shape).c_str(), total_size);
return INTERNAL_ERROR;
}
return SUCCESS;
}

Status FormatTransferNchwNc1hwc0::TransShape(Format src_format, const std::vector<int64_t> &src_shape,
DataType data_type, Format dst_format, std::vector<int64_t> &dst_shape) {


+ 1
- 7
src/ge/common/formats/format_transfers/format_transfer_nhwc_nc1hwc0.cc View File

@@ -38,7 +38,7 @@ Status TransShapeNhwcToNc1hwc0(const std::vector<int64_t> &src_shape, DataType d
}
dst_shape.clear();
dst_shape.push_back(src_shape.at(kNhwcN));
dst_shape.push_back(Ceil(src_shape.at(kNhwcC), c0));
dst_shape.push_back((src_shape.at(kNhwcC) - 1) / c0 + 1);
dst_shape.push_back(src_shape.at(kNhwcH));
dst_shape.push_back(src_shape.at(kNhwcW));
dst_shape.push_back(c0);
@@ -161,12 +161,6 @@ Status FormatTransferNhwcNc1hwc0::TransFormat(const TransArgs &args, TransResult
int size = GetSizeByDataType(args.src_data_type);
auto total_size = GetItemNumByShape(args.dst_shape) * size;
if (total_size <= 0) {
int64_t src_size = GetItemNumByShape(args.src_shape);
if (total_size == 0 && src_size == 0) {
result.length = static_cast<size_t>(total_size);
return SUCCESS;
}

GELOGE(INTERNAL_ERROR, "Get %ld total size from dst shape %s, src shape %s", total_size,
ShapeToString(args.dst_shape).c_str(), ShapeToString(args.src_shape).c_str());
return PARAM_INVALID;


+ 3
- 7
src/ge/common/formats/format_transfers/format_transfer_transpose.cc View File

@@ -51,8 +51,8 @@ bool IsShapeArgValid(const std::vector<int64_t> &src_shape, const std::vector<in
return false;
}
for (auto dim : src_shape) {
if (dim < 0) {
GELOGE(PARAM_INVALID, "Failed to transpose, negative dim in src shape %s", ShapeToString(src_shape).c_str());
if (dim <= 0) {
GELOGE(PARAM_INVALID, "Failed to transpose, zero dim in src shape %s", ShapeToString(src_shape).c_str());
return false;
}
}
@@ -146,16 +146,12 @@ Status Transpose(const uint8_t *src, const std::vector<int64_t> &src_shape, Data
int64_t dst_ele_num = GetItemNumByShape(dst_shape);
int64_t data_size = GetSizeByDataType(src_data_type);
int64_t dst_size = data_size * dst_ele_num;
std::shared_ptr<uint8_t> dst(new (std::nothrow) uint8_t[dst_size], std::default_delete<uint8_t[]>());

GELOGD("Begin to transpose, src shape %s, perm arg %s, dst shape %s, data type %s", JoinToString(src_shape).c_str(),
JoinToString(perm_arg).c_str(), JoinToString(dst_shape).c_str(),
TypeUtils::DataTypeToSerialString(src_data_type).c_str());
if (dst_ele_num == 0) {
result.length = static_cast<size_t>(dst_size);
return SUCCESS;
}

std::shared_ptr<uint8_t> dst(new (std::nothrow) uint8_t[dst_size], std::default_delete<uint8_t[]>());
int64_t dst_index = 0;
std::vector<int64_t> dst_indexes(dst_shape.size());
while (dst_index < dst_ele_num) {


+ 1
- 11
src/ge/common/formats/formats.cc View File

@@ -24,7 +24,6 @@
#include <string>
#include <vector>

#include "common/formats/utils/formats_trans_utils.h"
#include "framework/common/debug/ge_log.h"
#include "framework/common/ge_inner_error_codes.h"
#include "graph/utils/type_utils.h"
@@ -39,13 +38,10 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY Status TransFormat(const TransArg
TypeUtils::FormatToSerialString(args.dst_format).c_str());
return UNSUPPORTED;
}

auto src_shape_size = GetItemNumByShape(args.src_shape);
if (args.data == nullptr && src_shape_size != 0) {
if (args.data == nullptr) {
GELOGE(PARAM_INVALID, "Invalid input null data");
return PARAM_INVALID;
}

return transfer->TransFormat(args, result);
}

@@ -75,12 +71,6 @@ GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY Status TransDataType(const CastAr
TypeUtils::DataTypeToSerialString(args.dst_data_type).c_str());
return UNSUPPORTED;
}

if (args.data == nullptr && args.src_data_size != 0) {
GELOGE(PARAM_INVALID, "Invalid input null data");
return PARAM_INVALID;
}

return transfer->TransDataType(args, result);
}



+ 3
- 3
src/ge/common/formats/utils/formats_trans_utils.cc View File

@@ -69,11 +69,11 @@ bool IsShapeValid(const std::vector<int64_t> &shape) {
}
int64_t num = 1;
for (auto dim : shape) {
if (dim < 0) {
GELOGE(PARAM_INVALID, "Invalid negative dim in the shape %s", ShapeToString(shape).c_str());
if (dim < 1) {
GELOGE(PARAM_INVALID, "Invalid zero dim in the shape %s", ShapeToString(shape).c_str());
return false;
}
if (dim != 0 && kShapeItemNumMAX / dim < num) {
if (kShapeItemNumMAX / dim < num) {
GELOGE(PARAM_INVALID, "Shape overflow, the total count should be less than %ld!", kShapeItemNumMAX);
return false;
}


+ 0
- 3
src/ge/common/formats/utils/formats_trans_utils.h View File

@@ -64,9 +64,6 @@ bool IsShapeEqual(const GeShape &src, const GeShape &dst);

template <typename T>
T Ceil(T n1, T n2) {
if (n1 == 0) {
return 0;
}
return (n2 != 0) ? (n1 - 1) / n2 + 1 : 0;
}



+ 1
- 1
src/ge/common/fp16_t.h View File

@@ -601,4 +601,4 @@ int16_t GetManBitLength(T man) {
return len;
}
}; // namespace ge
#endif // GE_COMMON_FP16_T_H_
#endif // GE_COMMON_FP16_T_H_

+ 2
- 3
src/ge/common/ge/plugin_manager.cc View File

@@ -27,7 +27,6 @@
#include <string>

#include "framework/common/debug/log.h"
#include "framework/common/util.h"

namespace ge {
static const int kMaxNumOfSo = 64;
@@ -101,7 +100,7 @@ Status PluginManager::LoadSo(const string &path, const vector<string> &func_chec
}

std::string file_name = single_path.substr(single_path.rfind('/') + 1, string::npos);
string file_path_dlopen = RealPath(single_path.c_str());
string file_path_dlopen = domi::RealPath(single_path.c_str());
if (file_path_dlopen.empty()) {
GELOGW("Failed to get realpath of %s!", single_path.c_str());
continue;
@@ -226,7 +225,7 @@ Status PluginManager::Load(const string &path, const vector<string> &func_check_
}

std::string canonical_path_str = (std::string(canonical_path) + "/" + file_name);
string file_path_dlopen = RealPath(canonical_path_str.c_str());
string file_path_dlopen = domi::RealPath(canonical_path_str.c_str());
if (file_path_dlopen.empty()) {
GELOGW("failed to get realpath of %s", canonical_path_str.c_str());
continue;


+ 0
- 1707
src/ge/common/helper/model_cache_helper.cc
File diff suppressed because it is too large
View File


+ 0
- 121
src/ge/common/helper/model_cache_helper.h View File

@@ -1,121 +0,0 @@
/**
* Copyright 2019-2020 Huawei Technologies Co., Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef GE_COMMON_HELPER_MODEL_CACHE_HELPER_H_
#define GE_COMMON_HELPER_MODEL_CACHE_HELPER_H_

#include <nlohmann/json.hpp>
#include <set>
#include <string>

#include "ge/ge_api_error_codes.h"
#include "graph/compute_graph.h"
#include "graph/manager/graph_var_manager.h"
#include "model/ge_model.h"

namespace ge {
using Json = nlohmann::json;

struct CacheInfo {
size_t node_num;
size_t edge_num;
size_t graph_hash;
map<std::string, size_t> nodes_hash;
CacheInfo() : node_num(0), edge_num(0), graph_hash(0) {}
};

class ModelCacheHelper {
public:
ModelCacheHelper(uint64_t session_id, uint32_t graph_id, ComputeGraphPtr &compute_graph);

Status SaveCacheInfoToCache() const;
Status SaveVarManagerToCache(bool before_build) const;
Status SaveOmModelToCache(const GeModelPtr &ge_model) const;
bool IsModelCacheHit() const;
Status RecoverVarManagerFromCache() const;
Status LoadOmModelFromCache(GeModelPtr &ge_model) const;
Status RefreshComputeGraph(const ComputeGraphPtr &compute_graph);
Status ClearCache(uint32_t graph_id) const;

private:
Status GetComputeGraphHash(size_t &hash) const;
Status GetNodesHash(map<std::string, size_t> &hash_map) const;
Status GetCacheInfo(CacheInfo &cache_info) const;

Status RecoverMemResource(const Json &json) const;
Status RecoverAllocatedGraphId(const Json &json) const;
Status RecoverChangedGraphId(const Json &json) const;
Status RecoverVarAddrAndTensorDesc(const Json &json) const;
Status RecoverBroadcastInfo(const Json &json) const;
Status RecoverTransRoads(const Json &json) const;
static Status RecompileNodes(GeModelPtr &ge_model);

bool IsNodeHashSameAsCache(const map<std::string, size_t> &hash_map) const;
bool IsMemResourceSameAsCache(Json &json) const;
bool IsChangedGraphIdSameAsCache(Json &json) const;
bool IsAllocatedGraphIdSameAsCache(Json &json) const;
bool IsCurVarTensorDescSameAsCache(Json &json) const;
bool IsVarAddrMgrMapSameAsCache(Json &json) const;
bool IsBroadcastInfoSameAsCache(Json &json) const;
bool IsTransRoadsSameAsCache(Json &json) const;
bool IsVarManagerSameAsCache(Json &json) const;
bool IsVarManagerParamSameAsCache(Json &json) const;

Status SaveJsonToFile(const string &file_name, const Json &json) const;
Status LoadJsonFromFile(const string &file_name, Json &json) const;

Status GetNodesHashMapJson(Json &json) const;
Status GetMemResourceMap(Json &json) const;
Status GetVarAddrMgrMapJson(Json &json) const;
Status GetCurVarTensorDescMapJson(Json &json) const;
Status GetTransRoadsJson(Json &json) const;
Status GetChangedGraphIdJson(Json &json) const;
Status GetAllocatedGraphIdJson(Json &json) const;
Status GetBroadcastInfoJson(Json &json) const;
Status GetVarResourceJson(Json &json) const;
Status GetVarManagerJson(Json &json) const;

static Status TensorDescToJson(const GeTensorDesc &ge_tensor_desc, Json &json);
static Status JsonToTensorDesc(const Json &json, GeTensorDesc &ge_tensor_desc);
static Status ParseMemResourceFromJson(const Json &json, map<rtMemType_t, int64_t> &mem_resource);
static Status ParseVarAddrMgrMapFromJson(const Json &json,
std::vector<std::pair<std::string, VarAddrMgr>> &var_addr_mgr_vector,
std::unordered_set<uint64_t> &var_offset_set);
static Status ParseCurVarTensorDescMapFromJson(
const Json &json, std::unordered_map<std::string, ge::GeTensorDesc> &cur_var_tensor_desc_map);
static Status ParseTransRoadsFromJson(const Json &json,
std::unordered_map<std::string, std::vector<TransNodeInfo>> &trans_roads);
static Status ParseChangedGraphIdFromJson(const Json &json,
std::unordered_map<std::string, uint32_t> &changed_graph_id);
static Status ParseAllocatedGraphIdFromJson(const Json &json,
std::unordered_map<std::string, uint32_t> &allocated_graph_id);
static Status ParseBroadcastInfoFromJson(const Json &json,
std::unordered_map<std::string, VarBroadCastInfo> &var_broadcast_info);
static Status GetVarNameFromVarKey(const string &var_key, const GeTensorDesc &tensor_desc, string &var_name);

uint64_t session_id_;
uint32_t graph_id_;
string cache_path_;
ComputeGraphPtr compute_graph_;
std::set<string> var_names_;
bool is_cache_path_valid_for_output;
static map<uint32_t, uint32_t> graph_id_run_times_;
};

using ModelCacheHelperPtr = std::shared_ptr<ModelCacheHelper>;
} // namespace ge

#endif // GE_COMMON_HELPER_MODEL_CACHE_HELPER_H_

+ 2
- 4
src/ge/common/helper/model_helper.cc View File

@@ -26,17 +26,15 @@
#include "graph/utils/attr_utils.h"
#include "graph/utils/graph_utils.h"

using domi::ModelTaskDef;
using ge::ModelBufferData;
using ge::TBEKernelPtr;
using ge::TBEKernelStore;
using std::string;

namespace {
const int64_t kOriginalOmPartitionNum = 1;
}

namespace ge {
namespace domi {
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY ModelHelper::~ModelHelper() { (void)ReleaseLocalModelData(); }

Status ModelHelper::SaveModelPartition(std::shared_ptr<OmFileSaveHelper> &om_file_save_helper, ModelPartitionType type,
@@ -508,4 +506,4 @@ Status ModelHelper::ReleaseLocalModelData() noexcept {
}
return result;
}
} // namespace ge
} // namespace domi

+ 3
- 2
src/ge/common/helper/om_file_helper.cc View File

@@ -25,10 +25,11 @@
#include "framework/common/ge_inner_error_codes.h"
#include "framework/common/util.h"

using ge::FileSaver;
using ge::ModelBufferData;
using std::string;

namespace ge {
namespace domi {
// For Load
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY Status OmFileLoadHelper::Init(const ge::ModelData &model) {
if (CheckModelValid(model) != SUCCESS) {
@@ -225,4 +226,4 @@ Status OmFileSaveHelper::SaveModelToFile(const char *output_file, ModelBufferDat
return SUCCESS;
#endif
}
} // namespace ge
} // namespace domi

+ 2
- 2
src/ge/common/math_util.h View File

@@ -26,7 +26,7 @@
#include "framework/common/util.h"
#include "mmpa/mmpa_api.h"

namespace ge {
namespace domi {

/**
* @ingroup domi_calibration
@@ -68,6 +68,6 @@ Status NnSet(const int32_t n, const Dtype alpha, Dtype *output) {
return SUCCESS;
}

} // end namespace ge
} // end namespace domi

#endif // GE_COMMON_MATH_UTIL_H_

+ 7
- 1
src/ge/common/model_parser/base.cc View File

@@ -22,9 +22,15 @@
#include <memory>
#include <string>

#include "framework/common/debug/ge_log.h"
#include "framework/common/debug/log.h"
#include "framework/common/util.h"
#include "framework/common/debug/ge_log.h"

using domi::GetFileLength;
using domi::MODEL_FILE_MAGIC_NUM;
using domi::ModelEncryptType;
using domi::ModelFileHeader;
using domi::RealPath;

namespace ge {
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY ModelParserBase::ModelParserBase() {}


+ 1
- 1
src/ge/common/model_saver.cc View File

@@ -63,7 +63,7 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY Status ModelSaver::SaveJsonToFi
const char *model_char = model_str.c_str();
uint32_t len = static_cast<uint32_t>(model_str.length());
// Write data to file
mmSsize_t mmpa_ret = mmWrite(fd, const_cast<void *>((const void *)model_char), len);
int32_t mmpa_ret = mmWrite(fd, const_cast<void *>((const void *)model_char), len);
if (mmpa_ret == EN_ERROR || mmpa_ret == EN_INVALID_PARAM) {
// Need to both print the error info of mmWrite and mmClose, so return ret after mmClose
GELOGE(FAILED, "Write to file failed. errno = %d, %s", mmpa_ret, strerror(errno));


+ 2
- 2
src/ge/common/op/attr_value_util.cc View File

@@ -18,7 +18,7 @@
#include "framework/common/debug/log.h"
#include "framework/common/util.h"

namespace ge {
namespace domi {
#define DEFINE_SET_ATTR_VALUE_ONE(ARG_TYPE, FIELD) \
FMK_FUNC_DEV_VISIBILITY void SetAttrDef(ARG_TYPE value, AttrDef *out) { \
GE_CHECK_NOTNULL_JUST_RETURN(out); \
@@ -312,4 +312,4 @@ DEFINE_GET_ATTR_LIST_SIZE(const std::string &, uint32_t, u);
DEFINE_GET_ATTR_LIST_SIZE(const std::string &, float, f);
DEFINE_GET_ATTR_LIST_SIZE(const std::string &, double, f);
DEFINE_GET_ATTR_LIST_SIZE(const std::string &, bool, b);
} // namespace ge
} // namespace domi

+ 2
- 4
src/ge/common/op/ge_op_utils.cc View File

@@ -25,10 +25,10 @@
#include "framework/common/debug/log.h"
#include "framework/common/fmk_error_codes.h"
#include "framework/common/ge_inner_error_codes.h"
#include "framework/common/op/attr_define.h"
#include "framework/common/op/attr_value_util.h"
#include "framework/common/util.h"
#include "graph/anchor.h"
#include "graph/debug/ge_attr_define.h"
#include "graph/utils/op_desc_utils.h"
#include "graph/utils/tensor_utils.h"
#include "graph/utils/type_utils.h"
@@ -69,8 +69,6 @@ const uint32_t FOR_LIMIT_INPUT = 1;
const uint32_t FOR_DELTA_INPUT = 2;
const uint32_t FOR_DATA_INPUT = 3;

const int NORMAL_TENSOR_SIZE = 4;

// Get the value of key from attr
#define AIPP_GET_ATTR_VALUE(KEY, ATTR_TYPE) \
if (aipp_attr.GetItem(#KEY).GetValue<ATTR_TYPE>(KEY) != SUCCESS) { \
@@ -179,7 +177,7 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY Status OpUtils::TransferDim(con
for (auto dim_temp : dim) {
new_dim_list.push_back(dim_temp);
}
if (input_shape_size > DIM_DEFAULT_SIZE) {
if (input_shape_size > domi::DIM_DEFAULT_SIZE) {
dim_vector = dim;
GELOGI("Dim_vector size is %zu, do not to transfer dim", input_shape_size);
return SUCCESS;


+ 84
- 95
src/ge/common/profiling/profiling_manager.cc View File

@@ -182,7 +182,7 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY ge::Status ProfilingManager::In
return SUCCESS;
} else {
std::string prof_options_str = std::string(prof_options);
profiling_opts_ = StringUtils::Split(prof_options_str, ':');
profiling_opts_ = domi::StringUtils::Split(prof_options_str, ':');
is_profiling_ = true;
}
GELOGI("The profiling in options is %s, %s", is_profiling, prof_options);
@@ -314,119 +314,122 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY void ProfilingManager::StopProf
}

FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY void ProfilingManager::ProfilingTaskDescInfo(
const std::vector<TaskDescInfo> &task_desc_info, const int32_t &device_id) {
const std::vector<TaskDescInfo> &task_desc_info) {
#ifdef DAVINCI_SUPPORT_PROFILING
Msprof::Engine::Reporter *reporter = PluginImpl::GetPluginReporter();
if (reporter == nullptr) {
GELOGI("Profiling report is nullptr!");
return;
}

std::string data;
for (const auto &task : task_desc_info) {
std::string op_name = task.op_name;
uint32_t block_dim = task.block_dim;
uint32_t task_id = task.task_id;
uint32_t stream_id = task.stream_id;
data = op_name.append(" ").append(std::to_string(block_dim)
.append(" ")
.append(std::to_string(task_id))
.append(" ")
.append(std::to_string(stream_id))
.append("\n"));

Msprof::Engine::ReporterData reporter_data{};
reporter_data.deviceId = device_id;
reporter_data.data = (unsigned char *)data.c_str();
reporter_data.dataLen = data.size();
int ret = memcpy_s(reporter_data.tag, MSPROF_ENGINE_MAX_TAG_LEN + 1, "task_desc_info", sizeof("task_desc_info"));
if (ret != EOK) {
GELOGE(ret, "Report data tag of task_desc_info memcpy error!");
return;
}
for (size_t i = 0; i < device_id_.size(); ++i) {
for (const auto &task : task_desc_info) {
std::string op_name = task.op_name;
uint32_t block_dim = task.block_dim;
uint32_t task_id = task.task_id;
uint32_t stream_id = task.stream_id;
data = op_name.append(" ").append(std::to_string(block_dim)
.append(" ")
.append(std::to_string(task_id))
.append(" ")
.append(std::to_string(stream_id))
.append("\n"));

Msprof::Engine::ReporterData reporter_data{};
reporter_data.deviceId = device_id_[i];
reporter_data.data = (unsigned char *)data.c_str();
reporter_data.dataLen = data.size();
int ret = memcpy_s(reporter_data.tag, MSPROF_ENGINE_MAX_TAG_LEN + 1, "task_desc_info", sizeof("task_desc_info"));
if (ret != EOK) {
GELOGE(ret, "Report data tag of task_desc_info memcpy error!");
return;
}

ret = reporter->Report(&reporter_data);
if (ret != SUCCESS) {
GELOGE(ret, "Reporter data of task_desc_info fail!");
return;
ret = reporter->Report(&reporter_data);
if (ret != SUCCESS) {
GELOGE(ret, "Reporter data of task_desc_info fail!");
return;
}
}
}

data.clear();
data.clear();
}
#endif
}

FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY void ProfilingManager::ProfilingGraphDescInfo(
const std::vector<ComputeGraphDescInfo> &compute_graph_desc_info, const int32_t &device_id) {
const std::vector<ComputeGraphDescInfo> &compute_graph_desc_info) {
#ifdef DAVINCI_SUPPORT_PROFILING
Msprof::Engine::Reporter *reporter = PluginImpl::GetPluginReporter();
GE_IF_BOOL_EXEC(reporter == nullptr, GELOGI("Profiling report is nullptr!"); return;);

std::string data;
for (const auto &graph : compute_graph_desc_info) {
data.append("op_name:").append(graph.op_name).append(" op_type:").append(graph.op_type);
for (size_t i = 0; i < graph.input_format.size(); ++i) {
data.append(" input_id:")
.append(std::to_string(i))
.append(" input_format:")
.append(std::to_string(graph.input_format.at(i)))
.append(" input_data_type:")
.append(std::to_string(graph.input_data_type.at(i)))
.append(" input_shape:\"");
size_t input_shape_len = graph.input_shape.at(i).size();
if (input_shape_len == 0) {
data.append("");
} else if (input_shape_len == 1) {
data.append(std::to_string(graph.input_shape.at(i).at(0)));
} else {
for (size_t j = 0; j < input_shape_len - 1; ++j) {
data.append(std::to_string(graph.input_shape.at(i).at(j))).append(",");
for (size_t idx = 0; idx < device_id_.size(); ++idx) {
for (const auto &graph : compute_graph_desc_info) {
data.append("op_name:").append(graph.op_name).append(" op_type:").append(graph.op_type);
for (size_t i = 0; i < graph.input_format.size(); ++i) {
data.append(" input_id:")
.append(std::to_string(i))
.append(" input_format:")
.append(std::to_string(graph.input_format.at(i)))
.append(" input_data_type:")
.append(std::to_string(graph.input_data_type.at(i)))
.append(" input_shape:\"");
size_t input_shape_len = graph.input_shape.at(i).size();
if (input_shape_len == 0) {
data.append("");
} else if (input_shape_len == 1) {
data.append(std::to_string(graph.input_shape.at(i).at(0)));
} else {
for (size_t j = 0; j < input_shape_len - 1; ++j) {
data.append(std::to_string(graph.input_shape.at(i).at(j))).append(",");
}
data.append(std::to_string(graph.input_shape.at(i).at(input_shape_len - 1)));
}
data.append(std::to_string(graph.input_shape.at(i).at(input_shape_len - 1)));
}

data.append("\"");
}
data.append("\"");
}

for (size_t i = 0; i < graph.output_format.size(); ++i) {
data.append(" output_id:")
.append(std::to_string(i))
.append(" output_format:")
.append(std::to_string(graph.output_format.at(i)))
.append(" output_data_type:")
.append(std::to_string(graph.output_data_type.at(i)))
.append(" output_shape:\"");
size_t output_shape_len = graph.output_shape.at(i).size();
if (output_shape_len == 0) {
data.append("");
} else if (output_shape_len == 1) {
data.append(std::to_string(graph.output_shape.at(i).at(0)));
} else {
for (size_t j = 0; j < output_shape_len - 1; ++j) {
data.append(std::to_string(graph.output_shape.at(i).at(j))).append(",");
for (size_t i = 0; i < graph.output_format.size(); ++i) {
data.append(" output_id:")
.append(std::to_string(i))
.append(" output_format:")
.append(std::to_string(graph.output_format.at(i)))
.append(" output_data_type:")
.append(std::to_string(graph.output_data_type.at(i)))
.append(" output_shape:\"");
size_t output_shape_len = graph.output_shape.at(i).size();
if (output_shape_len == 0) {
data.append("");
} else if (output_shape_len == 1) {
data.append(std::to_string(graph.output_shape.at(i).at(0)));
} else {
for (size_t j = 0; j < output_shape_len - 1; ++j) {
data.append(std::to_string(graph.output_shape.at(i).at(j))).append(",");
}
data.append(std::to_string(graph.output_shape.at(i).at(output_shape_len - 1)));
}
data.append(std::to_string(graph.output_shape.at(i).at(output_shape_len - 1)));
data.append("\"");
}
data.append("\"");
}

data.append("\n");
data.append("\n");

Msprof::Engine::ReporterData reporter_data{};
Report(device_id, data, *reporter, reporter_data);
Msprof::Engine::ReporterData reporter_data{};
Report(idx, data, *reporter, reporter_data);

data.clear();
data.clear();
}
}
#endif
}

FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY void ProfilingManager::Report(
const int32_t &device_id, const string &data, Msprof::Engine::Reporter &reporter,
const size_t &idx, const string &data, Msprof::Engine::Reporter &reporter,
Msprof::Engine::ReporterData &reporter_data) {
#ifdef DAVINCI_SUPPORT_PROFILING
size_t index = data.size() / kReportMaxLen;
if (index >= 1) {
reporter_data.deviceId = device_id;
reporter_data.deviceId = device_id_[idx];
int ret = memcpy_s(reporter_data.tag, MSPROF_ENGINE_MAX_TAG_LEN + 1, "graph_desc_info", sizeof("graph_desc_info"));
GE_IF_BOOL_EXEC(ret != EOK, GELOGE(ret, "Report data tag of graph_desc_info memcpy error!"); return;);
for (size_t i = 0; i < index; ++i) {
@@ -442,7 +445,7 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY void ProfilingManager::Report(
GE_IF_BOOL_EXEC(ret != SUCCESS, GELOGE(ret, "Reporter data of graph_desc_info fail!"); return;);
}
} else {
reporter_data.deviceId = device_id;
reporter_data.deviceId = device_id_[idx];
reporter_data.data = (unsigned char *)data.c_str();
reporter_data.dataLen = data.size();
int ret = memcpy_s(reporter_data.tag, MSPROF_ENGINE_MAX_TAG_LEN + 1, "graph_desc_info", sizeof("graph_desc_info"));
@@ -457,24 +460,10 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY void ProfilingManager::Report(
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY void ProfilingManager::ReportProfilingData(
const std::vector<TaskDescInfo> &task_desc_info, const std::vector<ComputeGraphDescInfo> &compute_graph_desc_info) {
#ifdef DAVINCI_SUPPORT_PROFILING
int32_t device_id = 0;
rtError_t rt_ret = rtGetDevice(&device_id);
if (rt_ret != RT_ERROR_NONE) {
GELOGE(rt_ret, "runtime get device_id failed, current device_id:%d", device_id);
return;
}
GELOGI("current device_id:%d", device_id);

auto ret = std::find(device_id_.begin(), device_id_.end(), device_id);
if (ret == device_id_.end()) {
GELOGE(FAILED, "get valid device_id failed, profiling report failed.");
return;
}

GELOGI("start ProfilingTaskDescInfo.");
ProfilingTaskDescInfo(task_desc_info, device_id);
ProfilingTaskDescInfo(task_desc_info);
GELOGI("start ProfilingGraphDescInfo.");
ProfilingGraphDescInfo(compute_graph_desc_info, device_id);
ProfilingGraphDescInfo(compute_graph_desc_info);
GELOGI("Report profiling data for GE end.");
#endif
}


+ 3
- 4
src/ge/common/profiling/profiling_manager.h View File

@@ -50,11 +50,10 @@ class FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY ProfilingManager {
void ReportProfilingData(const std::vector<TaskDescInfo> &task_desc_info,
const std::vector<ComputeGraphDescInfo> &compute_graph_desc_info);

void Report(const int32_t &device_id, const string &data, Msprof::Engine::Reporter &reporter,
void Report(const size_t &idx, const string &data, Msprof::Engine::Reporter &reporter,
Msprof::Engine::ReporterData &reporter_data);
void ProfilingTaskDescInfo(const std::vector<TaskDescInfo> &task_desc_info, const int32_t &device_id);
void ProfilingGraphDescInfo(const std::vector<ComputeGraphDescInfo> &compute_graph_desc_info,
const int32_t &device_id);
void ProfilingTaskDescInfo(const std::vector<TaskDescInfo> &task_desc_info);
void ProfilingGraphDescInfo(const std::vector<ComputeGraphDescInfo> &compute_graph_desc_info);
void SetProfilingConfig(const string &profiling_cfg);
vector<int32_t> GetProfilingDeviceId() const { return device_id_; }



+ 1
- 1
src/ge/common/properties_manager.cc View File

@@ -59,7 +59,7 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY bool PropertiesManager::Init(co
// Load file contents
bool PropertiesManager::LoadFileContent(const std::string &file_path) {
// Normalize the path
string resolved_file_path = RealPath(file_path.c_str());
string resolved_file_path = domi::RealPath(file_path.c_str());
if (resolved_file_path.empty()) {
DOMI_LOGE("Invalid input file path [%s], make sure that the file path is correct.", file_path.c_str());
return false;


+ 193
- 193
src/ge/common/types.cc View File

@@ -15,6 +15,7 @@
*/

#include "framework/common/types.h"

#include "graph/types.h"

namespace ge {
@@ -26,13 +27,14 @@ const std::string DUMP_LAYER = "layer";
const std::string DUMP_FILE_PATH = "path";
} // namespace ge

using ge::OpTypeRegistrar;
namespace ge {
namespace domi {
const int DEFAULT_FORMAT = static_cast<const int>(ge::FORMAT_NCHW);
// Supported public property names
const std::string PROP_OME_START_TIME = "ome_start_time"; // start time
const std::string PROP_OME_DUMP_PATH = "ome_dump_path"; // dump path
const std::string PROP_OME_LOG_PATH = "ome_log_path"; // log path
/**
* @brief Supported public property names
*/
const std::string PROP_OME_START_TIME = "ome_start_time"; /**< start time */
const std::string PROP_OME_DUMP_PATH = "ome_dump_path"; /**< dump path */
const std::string PROP_OME_LOG_PATH = "ome_log_path"; /**< log path */

// Profile related constant
const uint32_t CCE_PROFILE_ON = 0;
@@ -385,7 +387,6 @@ REGISTER_OPTYPE_DEFINE(STREAMSWITCH, "StreamSwitch");
REGISTER_OPTYPE_DEFINE(STREAMSWITCHN, "StreamSwitchN");
REGISTER_OPTYPE_DEFINE(STREAMACTIVE, "StreamActive");
REGISTER_OPTYPE_DEFINE(MEMCPYASYNC, "MemcpyAsync");
REGISTER_OPTYPE_DEFINE(MEMCPYADDRASYNC, "MemcpyAddrAsync");
REGISTER_OPTYPE_DEFINE(STREAMMERGE, "StreamMerge");
REGISTER_OPTYPE_DEFINE(ENDGRAPH, "EndGraph");
REGISTER_OPTYPE_DEFINE(SEND, "Send");
@@ -393,7 +394,6 @@ REGISTER_OPTYPE_DEFINE(RECV, "Recv");

REGISTER_OPTYPE_DEFINE(LABELSET, "LabelSet");
REGISTER_OPTYPE_DEFINE(LABELGOTO, "LabelGoto");
REGISTER_OPTYPE_DEFINE(LABELGOTOEX, "LabelGotoEx");
REGISTER_OPTYPE_DEFINE(LABELSWITCH, "LabelSwitch");
REGISTER_OPTYPE_DEFINE(LABELSWITCHBYINDEX, "LabelSwitchByIndex");

@@ -469,315 +469,315 @@ const uint64_t ALLOC_MEMORY_MAX_SIZE = 8589934592; // Max size of 8 GB.
const uint64_t ALLOC_MEMORY_MAX_SIZE = 536870912; // Max size of 512M.
#endif

///
///@brief Magic number of model file
///
/**
* @brief Magic number of model file
*/
const uint32_t MODEL_FILE_MAGIC_NUM = 0x444F4D49; // magic number

///
///@brief Model head length
///
/**
* @brief Model head length
*/
const uint32_t MODEL_FILE_HEAD_LEN = 256;

///
///@ingroup domi_omg
///@brief Input node type
///
/**
* @ingroup domi_omg
* @brief Input node type
*/
const std::string INPUT_TYPE = "Input";

///
///@ingroup domi_omg
///@brief AIPP label, label AIPP conv operator
///
/**
* @ingroup domi_omg
* @brief AIPP label, label AIPP conv operator
*/
const std::string AIPP_CONV_FLAG = "Aipp_Conv_Flag";

///
///@ingroup domi_omg
///@brief AIPP label, label aipp data operator
///
/**
* @ingroup domi_omg
* @brief AIPP label, label aipp data operator
*/
const std::string AIPP_DATA_FLAG = "Aipp_Data_Flag";

///
///@ingroup domi_omg
///@brief Record the w dimension of model input corresponding to dynamic AIPP
///
/**
* @ingroup domi_omg
* @brief Record the w dimension of model input corresponding to dynamic AIPP
*/
const std::string AIPP_RELATED_DATA_DIM_W = "aipp_related_data_dim_w";

///
///@ingroup domi_omg
///@brief Record the H dimension of model input corresponding to dynamic AIPP
///
/**
* @ingroup domi_omg
* @brief Record the H dimension of model input corresponding to dynamic AIPP
*/
const std::string AIPP_RELATED_DATA_DIM_H = "aipp_related_data_dim_h";

///
///@ingroup domi_omg
///@brief The tag of the data operator. Mark this input to the dynamic AIPP operator
///
/**
* @ingroup domi_omg
* @brief The tag of the data operator. Mark this input to the dynamic AIPP operator
*/
const std::string INPUT_TO_DYNAMIC_AIPP = "input_to_dynamic_aipp";

///
///@ingroup domi_omg
///@brief DATA node type
///
/**
* @ingroup domi_omg
* @brief DATA node type
*/
const std::string DATA_TYPE = "Data";

///
///@ingroup domi_omg
///@brief DATA node type
///
/**
* @ingroup domi_omg
* @brief DATA node type
*/
const std::string AIPP_DATA_TYPE = "AippData";

///
///@ingroup domi_omg
///@brief Frame operator type
///
/**
* @ingroup domi_omg
* @brief Frame operator type
*/
const std::string FRAMEWORK_OP_TYPE = "FrameworkOp";

///
///@ingroup domi_omg
///@brief Data node type
///
/**
* @ingroup domi_omg
* @brief Data node type
*/
const std::string ANN_DATA_TYPE = "AnnData";
const std::string ANN_NETOUTPUT_TYPE = "AnnNetOutput";
const std::string ANN_DEPTHCONV_TYPE = "AnnDepthConv";
const std::string ANN_CONV_TYPE = "AnnConvolution";
const std::string ANN_FC_TYPE = "AnnFullConnection";
///
///@ingroup domi_omg
///@brief Convolution node type
///
/**
* @ingroup domi_omg
* @brief Convolution node type
*/
const std::string NODE_NAME_NET_OUTPUT = "Node_Output";

const std::string NODE_NAME_END_GRAPH = "Node_EndGraph";

///
///@ingroup domi_omg
///@brief Convolution node type
///
/**
* @ingroup domi_omg
* @brief Convolution node type
*/
const std::string OP_TYPE_CONVOLUTION = "Convolution";
///
///@ingroup domi_omg
///@brief Add convolution node name to AIPP
///
/**
* @ingroup domi_omg
* @brief Add convolution node name to AIPP
*/
const std::string AIPP_CONV_OP_NAME = "aipp_conv_op";
///
///@ingroup domi_omg
///@brief Operator configuration item separator
///
/**
* @ingroup domi_omg
* @brief Operator configuration item separator
*/
const std::string OP_CONF_DELIMITER = ":";

///
///@ingroup domi_omg
///@brief attr value name
///
/**
* @ingroup domi_omg
* @brief attr value name
*/
const std::string ATTR_NAME_VALUE1 = "value1";

///
///@ingroup domi_omg
///@brief attr value name, 6d_2_4d C
///
/**
* @ingroup domi_omg
* @brief attr value name, 6d_2_4d C
*/
const std::string ATTR_NAME_INPUT_CVALUE = "input_cvalue";

///
///@ingroup domi_omg
///@brief alpha default value
///
/**
* @ingroup domi_omg
* @brief alpha default value
*/
const float ALPHA_DEFAULT_VALUE = 1.0;

///
///@ingroup domi_omg
///@brief beta default value
///
/**
* @ingroup domi_omg
* @brief beta default value
*/
const float BETA_DEFAULT_VALUE = 0.0;

///
///@ingroup domi_omg
///@brief coef default value
///
/**
* @ingroup domi_omg
* @brief coef default value
*/
const float COEF_DEFAULT_VALUE = 0.0;

///
///@ingroup domi_omg
///@brief Relu6 coef value
///
/**
* @ingroup domi_omg
* @brief Relu6 coef value
*/
const float RELU6_COEF = 6.0;

///
///@ingroup domi_omg
///@brief stride default value
///
/**
* @ingroup domi_omg
* @brief stride default value
*/
const uint32_t STRIDE_DEFAULT_VALUE = 1;

///
///@ingroup domi_omg
///@brief pad default value
///
/**
* @ingroup domi_omg
* @brief pad default value
*/
const uint32_t PAD_DEFAULT_VALUE = 0;

///
///@ingroup domi_omg
///@brief dilation default value
///
/**
* @ingroup domi_omg
* @brief dilation default value
*/
const int DILATION_DEFAULT_VALUE = 1;

///
///@ingroup domi_omg
///@brief kernel default value
///
/**
* @ingroup domi_omg
* @brief kernel default value
*/
const uint32_t KERNEL_DEFAULT_VALUE = 0;

///
///@ingroup domi_omg
///@brief defaule convolution group size
///
/**
* @ingroup domi_omg
* @brief defaule convolution group size
*/
const uint32_t DEFAULT_CONV_GROUP = 1;

///
///@ingroup domi_omg
///@brief Default deconvolution adj
///
/**
* @ingroup domi_omg
* @brief Default deconvolution adj
*/
const uint32_t DEFAULT_DECONV_ADJ = 0;

///
///@ingroup domi_omg
///@brief Represents value 1
///
/**
* @ingroup domi_omg
* @brief Represents value 1
*/
const uint32_t NUM_ONE = 1;

///
///@ingroup domi_omg
///@brief spatial dim size default value
///
/**
* @ingroup domi_omg
* @brief spatial dim size default value
*/
const int32_t SPATIAL_DIM_DEFAULT_SIZE = 2;

///
///@ingroup domi_omg
///@brief dim extended default value
///
/**
* @ingroup domi_omg
* @brief dim extended default value
*/
const int32_t DIM_DEFAULT_VALUE = 1;

///
///@ingroup domi_omg
///@brief The first weight list in opdef is filter
///
/**
* @ingroup domi_omg
* @brief The first weight list in opdef is filter
*/
const int32_t WEIGHT_FILTER_INDEX = 0;

///
///@ingroup domi_omg
///@brief The second weight list in opdef is bias
///
/**
* @ingroup domi_omg
* @brief The second weight list in opdef is bias
*/
const int32_t WEIGHT_BIAS_INDEX = 1;

const int32_t TENSOR_ND_SUPPORT_SIZE = 8;

///
///@ingroup domi_omg
///@brief NCHW index default value
///
/**
* @ingroup domi_omg
* @brief NCHW index default value
*/
const uint32_t NCHW_DIM_N = 0;
const uint32_t NCHW_DIM_C = 1;
const uint32_t NCHW_DIM_H = 2;
const uint32_t NCHW_DIM_W = 3;

///
///@ingroup domi_omg
///@brief KCHW index default value
///
/**
* @ingroup domi_omg
* @brief KCHW index default value
*/
const uint32_t KCHW_DIM_K = 0;
const uint32_t KCHW_DIM_C = 1;
const uint32_t KCHW_DIM_H = 2;
const uint32_t KCHW_DIM_W = 3;

///
///@ingroup domi_omg
///@brief HWCK index default value
///
/**
* @ingroup domi_omg
* @brief HWCK index default value
*/
const uint32_t HWCK_DIM_H = 0;
const uint32_t HWCK_DIM_W = 1;
const uint32_t HWCK_DIM_C = 2;
const uint32_t HWCK_DIM_K = 3;

///
///@ingroup domi_omg
///@brief NHWC index default value
///
/**
* @ingroup domi_omg
* @brief NHWC index default value
*/
const uint32_t NHWC_DIM_N = 0;
const uint32_t NHWC_DIM_H = 1;
const uint32_t NHWC_DIM_W = 2;
const uint32_t NHWC_DIM_C = 3;

///
///@ingroup domi_omg
///@brief CHWN index default value
///
/**
* @ingroup domi_omg
* @brief CHWN index default value
*/
const uint32_t CHWN_DIM_N = 3;
const uint32_t CHWN_DIM_C = 0;
const uint32_t CHWN_DIM_H = 1;
const uint32_t CHWN_DIM_W = 2;

///
///@ingroup domi_omg
///@brief CHW index default value
///
/**
* @ingroup domi_omg
* @brief CHW index default value
*/
const uint32_t CHW_DIM_C = 0;
const uint32_t CHW_DIM_H = 1;
const uint32_t CHW_DIM_W = 2;

///
///@ingroup domi_omg
///@brief HWC index default value
///
/**
* @ingroup domi_omg
* @brief HWC index default value
*/
const uint32_t HWC_DIM_H = 0;
const uint32_t HWC_DIM_W = 1;
const uint32_t HWC_DIM_C = 2;
///
///@ingroup domi_omg
///@brief Pad index default value
///
/**
* @ingroup domi_omg
* @brief Pad index default value
*/
const uint32_t PAD_H_HEAD = 0;
const uint32_t PAD_H_TAIL = 1;
const uint32_t PAD_W_HEAD = 2;
const uint32_t PAD_W_TAIL = 3;

///
///@ingroup domi_omg
///@brief window index default value
///
/**
* @ingroup domi_omg
* @brief window index default value
*/
const uint32_t WINDOW_H = 0;
const uint32_t WINDOW_W = 1;

///
///@ingroup domi_omg
///@brief stride index default value
///
/**
* @ingroup domi_omg
* @brief stride index default value
*/
const uint32_t STRIDE_H = 0;
const uint32_t STRIDE_W = 1;

///
///@ingroup domi_omg
///@brief dilation index default value
///
/**
* @ingroup domi_omg
* @brief dilation index default value
*/
const uint32_t DILATION_H = 0;
const uint32_t DILATION_W = 1;

///
///@ingroup domi_omg
///@brief the num of XRBG channel
///
/**
* @ingroup domi_omg
* @brief the num of XRBG channel
*/
const uint32_t XRGB_CHN_NUM = 4;

///
///@ingroup domi_omg
///@brief global pooling default value
///
/**
* @ingroup domi_omg
* @brief global pooling default value
*/
const bool DEFAULT_GLOBAL_POOLING = false;

const uint32_t MODEL_VERSION = 0x10000000; ///< Model version 1.0///
const uint32_t MODEL_VERSION = 0x10000000; /**< Model version 1.0 */

// Eltwise's input size
const int ELTWISE_MIN_INPUT_SIZE = 2;

// flowctrl
/* flowctrl */
const std::string NODE_NAME_STREAM_SWITCH = "IteratorCtrl_StreamSwitch";
const std::string NODE_NAME_STREAM_ACTIVE = "IteratorCtrl_StreamActive";
const std::string NODE_NAME_FLOWCTRL_LOOP_PER_ITER = "npu_runconfig/iterations_per_loop";
@@ -792,4 +792,4 @@ const uint32_t STREAM_SWITCH_INPUT_NUM = 2;

const std::string NODE_NAME_GLOBAL_STEP = "ge_global_step";
const std::string NODE_NAME_GLOBAL_STEP_ASSIGNADD = "global_step_assignadd";
}; // namespace ge
}; // namespace domi

+ 14
- 13
src/ge/common/util.cc View File

@@ -57,7 +57,7 @@ const int kWarningThreshold = 536870912 * 2; // 536870912 represent 512M
const int kMaxFileSizeLimit = INT_MAX;
} // namespace

namespace ge {
namespace domi {
static bool ReadProtoFromCodedInputStream(CodedInputStream &coded_stream, Message *proto) {
GE_CHK_BOOL_TRUE_EXEC_WITH_LOG(proto == nullptr, return false, "incorrect parameter. nullptr == proto");

@@ -196,7 +196,7 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY int CreateDirectory(const std::
GE_CHK_BOOL_EXEC(!directory_path.empty(), return -1, "directory path is empty.");
auto dir_path_len = directory_path.length();
if (dir_path_len >= PATH_MAX) {
GELOGW("Directory path is too long.");
GELOGE(ge::FAILED, "Directory path is too long.");
return -1;
}
char tmp_dir_path[PATH_MAX] = {0};
@@ -207,7 +207,7 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY int CreateDirectory(const std::
int32_t ret = mmMkdir(tmp_dir_path, S_IRUSR | S_IWUSR | S_IXUSR); // 700
if (ret != 0) {
if (errno != EEXIST) {
GELOGW("Cannot create directory %s. Make sure that the directory exists and writable.",
GELOGE(ge::FAILED, "Cannot create directory %s. Make sure that the directory exists and writable.",
directory_path.c_str());
return ret;
}
@@ -218,7 +218,8 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY int CreateDirectory(const std::
int32_t ret = mmMkdir(const_cast<char *>(directory_path.c_str()), S_IRUSR | S_IWUSR | S_IXUSR); // 700
if (ret != 0) {
if (errno != EEXIST) {
GELOGW("Cannot create directory %s. Make sure that the directory exists and writable.", directory_path.c_str());
GELOGE(ge::FAILED, "Cannot create directory %s. Make sure that the directory exists and writable.",
directory_path.c_str());
return ret;
}
}
@@ -338,7 +339,7 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY std::string RealPath(const char
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY bool CheckInputPathValid(const std::string &file_path) {
// The specified path is empty
if (file_path.empty()) {
GELOGW("Path is empty.");
GELOGE(ge::FAILED, "Path is empty.");
return false;
}

@@ -357,23 +358,23 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY bool CheckInputPathValid(const
std::string real_path = RealPath(file_path.c_str());
// Unable to get absolute path (does not exist or does not have permission to access)
if (real_path.empty()) {
GELOGW("Can not get real path for %s, %s", file_path.c_str(), strerror(errno));
GELOGE(ge::FAILED, "Can not get real path for %s, %s", file_path.c_str(), strerror(errno));
return false;
}

// The absolute path points to a file that is not readable
if (access(real_path.c_str(), R_OK) != 0) {
GELOGW("Can not read file in %s, %s", file_path.c_str(), strerror(errno));
GELOGE(ge::FAILED, "Can not read file in %s, %s", file_path.c_str(), strerror(errno));
return false;
}

return true;
}

FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY bool CheckOutputPathValid(const std::string &file_path) {
FMK_FUNC_HOST_VISIBILITY bool CheckOutputPathValid(const std::string &file_path) {
// The specified path is empty
if (file_path.empty()) {
GELOGW("Path is empty.");
GELOGE(ge::FAILED, "Path is empty.");
return false;
}

@@ -393,8 +394,8 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY bool CheckOutputPathValid(const
// Can get absolute path (file exists)
if (!real_path.empty()) {
// File is not readable or writable
if (access(real_path.c_str(), W_OK | F_OK) != 0) {
GELOGW("Path[ %s ] exists, but can not be write, %s", file_path.c_str(), strerror(errno));
if (access(real_path.c_str(), R_OK | W_OK | F_OK) != 0) {
GELOGE(ge::FAILED, "Path[ %s ] exists, but can not be write, %s", file_path.c_str(), strerror(errno));
return false;
}
} else {
@@ -412,7 +413,7 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY bool CheckOutputPathValid(const
std::string prefix_path = std::string(file_path).substr(0, static_cast<size_t>(path_split_pos));
// Determine whether the specified path is valid by creating the path
if (CreateDirectory(prefix_path) != 0) {
GELOGW("Can not create prefix path for path[ %s ].", file_path.c_str());
GELOGE(ge::FAILED, "Can not create prefix path for path[ %s ].", file_path.c_str());
return false;
}
}
@@ -435,4 +436,4 @@ FMK_FUNC_HOST_VISIBILITY bool ValidateStr(const std::string &str, const std::str
return true;
#endif
}
} // namespace ge
} // namespace domi

+ 1
- 1
src/ge/executor/CMakeLists.txt View File

@@ -47,7 +47,6 @@ file(GLOB SRC_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR}
"../graph/load/new_model_manager/task_info/kernel_task_info.cc"
"../graph/load/new_model_manager/task_info/label_goto_task_info.cc"
"../graph/load/new_model_manager/task_info/label_set_task_info.cc"
"../graph/load/new_model_manager/task_info/memcpy_addr_async_task_info.cc"
"../graph/load/new_model_manager/task_info/memcpy_async_task_info.cc"
"../graph/load/new_model_manager/task_info/profiler_trace_task_info.cc"
"../graph/load/new_model_manager/task_info/stream_active_task_info.cc"
@@ -86,6 +85,7 @@ include_directories(${GE_SOURCE_DIR}/inc)
include_directories(${GE_SOURCE_DIR}/inc/graph)
include_directories(${GE_SOURCE_DIR}/third_party/fwkacllib/inc)
include_directories(${GE_SOURCE_DIR}/third_party/fwkacllib/inc/cce)
include_directories(${GE_SOURCE_DIR}/third_party/securec/include)
include_directories(${CMAKE_BINARY_DIR})
include_directories(${CMAKE_BINARY_DIR}/proto/ge)



+ 14
- 3
src/ge/executor/ge_executor.cc View File

@@ -193,8 +193,15 @@ Status GeExecutor::Initialize() {
}

// Start profiling
int32_t device_id = 0;
rtError_t rt_ret = rtGetDevice(&device_id);
if (rt_ret != RT_ERROR_NONE) {
GELOGE(rt_ret, "runtime get device_id failed, current device_id:%d", device_id);
return FAILED;
}
GELOGI("current device_id:%d", device_id);
Options profiling_options;
profiling_options.device_id = 0;
profiling_options.device_id = device_id;
profiling_options.job_id = "";
ProfilingManager::Instance().Init(profiling_options);

@@ -345,7 +352,7 @@ Status GeExecutor::LoadModelOffline(uint32_t &model_id, const std::string &path,
return GE_EXEC_NOT_INIT;
}

string filePath = RealPath(path.c_str());
string filePath = domi::RealPath(path.c_str());
if (filePath.empty()) {
GELOGE(ge::FAILED, "fileath is invalid. please check your text file '%s'.", path.c_str());
return ge::FAILED;
@@ -396,6 +403,10 @@ Status GeExecutor::UnloadModel(uint32_t model_id) {
return GE_EXEC_NOT_INIT;
}

// stop profiling
if (!ProfilingManager::Instance().ProfilingOpTraceOn() && ProfilingManager::Instance().ProfilingOn()) {
ProfilingManager::Instance().StopProfiling();
}
return GraphLoader::UnloadModel(model_id);
}

@@ -554,7 +565,7 @@ Status GeExecutor::LoadDataFromFile(const std::string &path, ModelData &model_da
return GE_EXEC_NOT_INIT;
}

string filePath = RealPath(path.c_str());
string filePath = domi::RealPath(path.c_str());
if (filePath.empty()) {
GELOGE(ge::FAILED, "filePath is invalid. please check your text file '%s'.", path.c_str());
return ge::FAILED;


+ 1
- 0
src/ge/ge_local_engine/CMakeLists.txt View File

@@ -35,6 +35,7 @@ include_directories(${GE_SOURCE_DIR}/inc/external/graph)
include_directories(${GE_SOURCE_DIR}/inc/framework)
include_directories(${GE_SOURCE_DIR}/inc/graph)
include_directories(${GE_SOURCE_DIR}/third_party/fwkacllib/inc)
include_directories(${GE_SOURCE_DIR}/third_party/securec/include)
include_directories(${CMAKE_BINARY_DIR})
include_directories(${CMAKE_BINARY_DIR}/proto/ge)



+ 1
- 1
src/ge/ge_local_engine/engine/host_cpu_engine.cc View File

@@ -237,7 +237,7 @@ Status HostCpuEngine::LoadLib(const std::string &lib_path) {
}

Status HostCpuEngine::GetRealPath(std::string &path) {
std::string real_path = RealPath(path.c_str());
std::string real_path = domi::RealPath(path.c_str());
if (real_path.empty()) {
GELOGW("File path %s is invalid.", path.c_str());
return INTERNAL_ERROR;


+ 1
- 1
src/ge/ge_local_engine/engine/host_cpu_engine.h View File

@@ -21,7 +21,7 @@
#include "framework/common/ge_inner_error_codes.h"
#include "graph/node.h"
#include "graph/operator.h"
#include "inc/register/register.h"
#include "register/register.h"

namespace ge {
class HostCpuEngine {


+ 2
- 0
src/ge/ge_local_engine/ops_kernel_store/ge_local_ops_kernel_info.cc View File

@@ -17,6 +17,8 @@
#include "ge_local_engine/ops_kernel_store/ge_local_ops_kernel_info.h"
#include <memory>
#include "common/constant/constant.h"
#include "framework/common/debug/ge_log.h"
#include "common/ge_inner_error_codes.h"
#include "common/ge/ge_util.h"
#include "common/ge_inner_error_codes.h"
#include "framework/common/debug/ge_log.h"


+ 1
- 0
src/ge/ge_runtime/CMakeLists.txt View File

@@ -26,6 +26,7 @@ include_directories(${GE_SOURCE_DIR}/inc/framework/common)
include_directories(${GE_SOURCE_DIR}/inc/framework/ge_runtime)
include_directories(${GE_SOURCE_DIR}/third_party/fwkacllib/inc)
include_directories(${GE_SOURCE_DIR}/third_party/fwkacllib/inc/cce)
include_directories(${GE_SOURCE_DIR}/third_party/securec/include)
include_directories(${CMAKE_BINARY_DIR})
include_directories(${CMAKE_BINARY_DIR}/proto/ge)



+ 2
- 5
src/ge/ge_runtime/runtime_model.cc View File

@@ -447,11 +447,8 @@ bool RuntimeModel::InitConstantInfo(std::shared_ptr<DavinciModel> &davinci_model
/// The logic of GetShapeSize is wrong, the scaler tensor's GetShapeSize is zero
/// and that of unknown shape is zero too.
/// Unknown shape will not appear here, so we can use zero judge a tensor is scaler or not.
int64_t elem_num = constant->weight_tensors[0].GetShapeSize();
if (elem_num == 0 && constant->weight_tensors[0].size == 0) {
elem_num = 1;
}

int64_t elem_num =
(constant->weight_tensors[0].GetShapeSize() == 0) ? 1 : constant->weight_tensors[0].GetShapeSize();
if (constant->weight_data.size() < sizeof(uint64_t)) {
GELOGE(FAILED, "weight_data size is smaller than sizeof(uint64_t)");
return false;


+ 8
- 3
src/ge/generator/ge_generator.cc View File

@@ -28,6 +28,11 @@
#include "graph/utils/graph_utils.h"
#include "model/ge_model.h"

using domi::DATA;
using domi::ModelHelper;
using domi::NETOUTPUT;
using domi::NODE_NAME_NET_OUTPUT;
using domi::SaveParam;
using ge::ModelBufferData;
using std::map;
using std::string;
@@ -101,7 +106,7 @@ static void GetOpsProtoPath(string &opsproto_path) {
const char *path_env = std::getenv("ASCEND_OPP_PATH");
if (path_env != nullptr) {
string path = path_env;
string file_path = RealPath(path.c_str());
string file_path = domi::RealPath(path.c_str());
if (file_path.empty()) {
GELOGE(FAILED, "File path %s is invalid.", path.c_str());
return;
@@ -143,7 +148,7 @@ Status GeGenerator::Initialize(const map<string, string> &options) {
GELOGI("opsproto_path is %s", opsproto_path.c_str());
OpsProtoManager *manager = OpsProtoManager::Instance();
map<string, string> option_tmp;
option_tmp.emplace(std::pair<string, string>(string("ge.opsProtoLibPath"), opsproto_path));
option_tmp.insert(std::pair<string, string>(string("ge.opsProtoLibPath"), opsproto_path));
(void)manager->Initialize(option_tmp);

Status ret = impl_->graph_manager_.Initialize(options);
@@ -258,7 +263,7 @@ Status GeGenerator::BuildSingleOpModel(OpDescPtr &op_desc, const vector<GeTensor
map<string, GeAttrValue> op_attrs = op_desc->GetAllAttrs();

// 1. Create ComputeGraph.
string name = ge::CurrentTimeInStr() + "_" + model_file_name;
string name = domi::CurrentTimeInStr() + "_" + model_file_name;
ge::ComputeGraphPtr compute_graph = MakeShared<ComputeGraph>(name);
if (compute_graph == nullptr) {
return INTERNAL_ERROR;


+ 1
- 1
src/ge/generator/generator_api.cc View File

@@ -116,7 +116,7 @@ Status_t OpTaskGernerator(const char *op_type, const OpTensor_t *in_tensor, int
CHECK_PARAM_NOT_NULL(om_file);
const std::string om_file_name(om_file);

std::string op_name = std::string(op_type) + "_" + std::to_string(ge::GetCurrentTimestap());
std::string op_name = std::string(op_type) + "_" + std::to_string(domi::GetCurrentTimestap());
ge::OpDescPtr op_desc = ge::MakeShared<ge::OpDesc>(op_name, op_type);
if (op_desc == nullptr) {
return ge::FAILED;


+ 8
- 7
src/ge/graph/build/graph_builder.cc View File

@@ -18,15 +18,18 @@
#include "common/ge/ge_util.h"
#include "common/helper/model_helper.h"
#include "common/opskernel/ops_kernel_info_types.h"
#include "graph/build/run_context.h"
#include "graph/build/stream_graph_optimizer.h"
#include "graph/build/run_context.h"
#include "graph/manager/graph_var_manager.h"
#include "graph/utils/node_utils.h"
#include "graph/utils/type_utils.h"
#include "init/gelib.h"
#include "model/ge_model.h"

using domi::ATTR_MODEL_MEMORY_SIZE;
using domi::ATTR_MODEL_WEIGHT_SIZE;
using domi::BuildMode;
using domi::DATA;

namespace {
const int32_t kInvalidPerfLevel = -1;
@@ -98,10 +101,8 @@ Status GraphBuilder::Build(ComputeGraphPtr &comp_graph, std::vector<SubGraphInfo

Status ret = SecondPartition(comp_graph, subgraph_ptr_list);
GE_CHK_STATUS_RET(ret, "Graph second partition Failed.");
auto subgraph_map = graph_partitioner_.GetSubGraphMap();

GE_TIMESTAMP_START(BuildSubgraph);
ge::ModelBuilder builder(comp_graph, subgraph_map, stream_max_parallel_num_, hcom_parallel_, build_mode_);
ge::ModelBuilder builder(comp_graph, subgraph_ptr_list, stream_max_parallel_num_, hcom_parallel_, build_mode_);

GELOGI("[Build] invoke the other opskernel to generate task.");

@@ -137,7 +138,7 @@ Status GraphBuilder::Build(ComputeGraphPtr &comp_graph, std::vector<SubGraphInfo
}

GE_TIMESTAMP_START(GetTaskInfo);
ret = GetTaskInfo(builder, model_ptr, comp_graph, subgraph_map, session_id);
ret = GetTaskInfo(builder, model_ptr, comp_graph, subgraph_ptr_list, session_id);
GE_TIMESTAMP_END(GetTaskInfo, "GraphBuilder::GetTaskInfo");

GraphUtils::DumpGEGraph(comp_graph, "AfterGetTask");
@@ -157,7 +158,7 @@ Status GraphBuilder::Build(ComputeGraphPtr &comp_graph, std::vector<SubGraphInfo
}

Status GraphBuilder::GetTaskInfo(const ge::ModelBuilder &builder, const ModelPtr &model_ptr,
ComputeGraphPtr &comp_graph, Graph2SubGraphInfoList &subgraph_map,
ComputeGraphPtr &comp_graph, std::vector<SubGraphInfoPtr> &subgraph_ptr_list,
uint64_t session_id) {
GE_CHECK_NOTNULL(model_ptr);
GE_CHECK_NOTNULL(comp_graph);
@@ -192,7 +193,7 @@ Status GraphBuilder::GetTaskInfo(const ge::ModelBuilder &builder, const ModelPtr
}

StreamGraphOptimizer stream_optimizer;
ret = stream_optimizer.OptimizeStreamedSubGraph(comp_graph, subgraph_map, run_context.GetRunContext());
ret = stream_optimizer.OptimizeStreamedSubGraph(comp_graph, subgraph_ptr_list, run_context.GetRunContext());
if (ret != SUCCESS) {
GELOGE(ret, "Optimize streamed subGraph fail.");
return ret;


+ 1
- 1
src/ge/graph/build/graph_builder.h View File

@@ -53,7 +53,7 @@ class GraphBuilder {
private:
Status CalcOpParam(const ge::ComputeGraphPtr &graph);
Status GetTaskInfo(const ge::ModelBuilder &builder, const ModelPtr &model_ptr, ComputeGraphPtr &comp_graph,
Graph2SubGraphInfoList &subgraph_map, uint64_t session_id = INVALID_SESSION_ID);
std::vector<SubGraphInfoPtr> &subgraph_ptr_list, uint64_t session_id = INVALID_SESSION_ID);
Status SetInputSize(const ge::NodePtr &node_ptr);
Status UpdateDataInputSize(const ge::NodePtr &node_ptr);
Status SecondPartition(ge::ComputeGraphPtr &comp_graph, vector<ge::SubGraphInfoPtr> &subgraph_ptr_list);


+ 118
- 169
src/ge/graph/build/logical_stream_allocator.cc View File

@@ -16,17 +16,22 @@

#include "graph/build/logical_stream_allocator.h"
#include "common/ge/ge_util.h"
#include "common/op/attr_define.h"
#include "framework/common/debug/ge_log.h"
#include "framework/common/fmk_error_codes.h"
#include "framework/common/types.h"
#include "graph/utils/graph_utils.h"
#include "graph/debug/ge_attr_define.h"

using std::map;
using std::set;
using std::string;
using std::vector;

using domi::ATTR_NAME_STREAM_LABEL;
using domi::CONSTANT;
using domi::CONSTANTOP;
using domi::HCOMALLREDUCE;

namespace {
const char *const kAICPUEngineName = "DNN_VM_AICPU";
const char *const kAttrNameParentOpType = "parentOpType";
@@ -70,7 +75,7 @@ bool LogicalStreamPass::HasNonConstInputNode(const Subgraph &subgraph) const {
return false;
}

Status AssignByLabelPass::Run(ComputeGraphPtr graph, const vector<SubgraphPtr> &subgraphs, Context &context) {
Status AssignByLabelPass::Run(ComputeGraphPtr whole_graph, const vector<SubgraphPtr> &subgraphs, Context &context) {
bool changed = false;
int64_t &next_stream = context.next_stream;
map<string, int64_t> label_streams;
@@ -97,7 +102,7 @@ Status AssignByLabelPass::Run(ComputeGraphPtr graph, const vector<SubgraphPtr> &
return changed ? SUCCESS : NOT_CHANGED;
}

Status IndependentStreamPass::Run(ComputeGraphPtr graph, const vector<SubgraphPtr> &subgraphs, Context &context) {
Status IndependentStreamPass::Run(ComputeGraphPtr whole_graph, const vector<SubgraphPtr> &subgraphs, Context &context) {
bool changed = false;
int64_t &next_stream = context.next_stream;

@@ -129,7 +134,8 @@ Status IndependentStreamPass::Run(ComputeGraphPtr graph, const vector<SubgraphPt
return changed ? SUCCESS : NOT_CHANGED;
}

Status AssignByDependencyPass::Run(ComputeGraphPtr graph, const vector<SubgraphPtr> &subgraphs, Context &context) {
Status AssignByDependencyPass::Run(ComputeGraphPtr whole_graph, const vector<SubgraphPtr> &subgraphs,
Context &context) {
bool changed = false;
if (IsHeadNodeExceeded(subgraphs)) {
int64_t &next_stream = context.next_stream;
@@ -297,7 +303,7 @@ int64_t AssignByDependencyPass::AssignNewStream(SubgraphPtr subgraph) {

subgraph->stream_id = stream_id;
engine_next_streams_[engine_name] = stream_id + 1;
assigned_subgraphs_.emplace_back(subgraph);
assigned_subgraphs_.emplace(subgraph);

if ((stream_id + 1) > engine_stream_num_[engine_name]) {
engine_stream_num_[engine_name] = stream_id + 1;
@@ -310,15 +316,6 @@ int64_t AssignByDependencyPass::AssignNewStream(SubgraphPtr subgraph) {
}

void AssignByDependencyPass::UpdateAssignedSubgraphs(Context &context) {
// If the parent stream is valid, the first assigned stream will reuse the parent stream id
// and other streams use new id. To ensure that the id of the new stream is continuous,
// we first subtract one from next_stream.
int64_t to_be_updated_stream = kInvalidStream;
if (context.parent_stream != kInvalidStream) {
context.next_stream--;
to_be_updated_stream = context.next_stream;
}

// Update the starting stream id for each engine.
int64_t &next_stream = context.next_stream;
map<string, int64_t> engine_start_streams;
@@ -328,16 +325,10 @@ void AssignByDependencyPass::UpdateAssignedSubgraphs(Context &context) {
next_stream += stream_count;
}

// Update the subgraph streams assigned by engine.
// Update the subgraphs assigned by the engine.
for (auto &subgraph : assigned_subgraphs_) {
subgraph->stream_id += engine_start_streams[subgraph->engine_conf.id];
if (subgraph->stream_id == to_be_updated_stream) {
subgraph->stream_id = context.parent_stream;
GELOGI("Subgraph %s of engine %s reuses parent stream %ld.", subgraph->name.c_str(),
subgraph->engine_conf.id.c_str(), context.parent_stream);
} else {
GELOGI("Stream of subgraph %s has been updated to %ld.", subgraph->name.c_str(), subgraph->stream_id);
}
GELOGI("Stream of subgraph %s has been updated to %ld.", subgraph->name.c_str(), subgraph->stream_id);
}
}

@@ -351,7 +342,7 @@ void AssignByDependencyPass::UpdateReusedSubgraphs() {
}
}

Status NodeStreamUpdatePass::Run(ComputeGraphPtr graph, const vector<SubgraphPtr> &subgraphs, Context &context) {
Status NodeStreamUpdatePass::Run(ComputeGraphPtr whole_graph, const vector<SubgraphPtr> &subgraphs, Context &context) {
// Check if all subgraphs have been assigned a stream.
for (const SubgraphPtr &subgraph : subgraphs) {
const string &engine_name = subgraph->engine_conf.id;
@@ -367,7 +358,7 @@ Status NodeStreamUpdatePass::Run(ComputeGraphPtr graph, const vector<SubgraphPtr
}

// Init the stream id of node.
for (NodePtr &node : graph->GetDirectNode()) {
for (NodePtr &node : whole_graph->GetDirectNode()) {
GE_CHECK_NOTNULL(node->GetOpDesc());
node->GetOpDesc()->SetStreamId(kInvalidStream);
}
@@ -389,11 +380,76 @@ Status NodeStreamUpdatePass::Run(ComputeGraphPtr graph, const vector<SubgraphPtr
}

// Update stream id for nodes belong to skipped engine subgraph
GE_CHK_STATUS_RET(UpdateForSkippedEngine(graph, subgraphs));
GE_CHK_STATUS_RET(UpdateForSkippedEngine(whole_graph, subgraphs));

RefreshContinuousStreams(whole_graph, context);

return SUCCESS;
}

Status AllReduceParallelPass::Run(ComputeGraphPtr whole_graph, const vector<SubgraphPtr> &subgraphs, Context &context) {
if (!context.hcom_parallel) {
return NOT_CHANGED;
}

GELOGI("AllReduceParallelPass is enabled.");
GraphUtils::DumpGEGraph(whole_graph, "BeforeAllReduceParallel");

// All successors of HcomAllReduce.
set<NodePtr> all_reduce_succs;

for (const NodePtr &node : whole_graph->GetDirectNode()) {
if (node->GetType() != HCOMALLREDUCE || node->GetInDataNodes().size() <= 1) {
continue;
}

string reduce_stream_label;
GE_CHECK_NOTNULL(node->GetOpDesc());
// ATTR_NAME_STREAM_LABEL is optional.
(void)AttrUtils::GetStr(node->GetOpDesc(), ATTR_NAME_STREAM_LABEL, reduce_stream_label);

set<NodePtr> cur_nodes = {node};
while (!cur_nodes.empty()) {
set<NodePtr> all_out_data_nodes;
for (auto &curr_node : cur_nodes) {
for (const NodePtr &out_node : curr_node->GetOutDataNodes()) {
string out_stream_label;
GE_CHECK_NOTNULL(out_node->GetOpDesc());
// ATTR_NAME_STREAM_LABEL is optional.
(void)AttrUtils::GetStr(out_node->GetOpDesc(), ATTR_NAME_STREAM_LABEL, out_stream_label);
if (out_stream_label == reduce_stream_label) {
all_reduce_succs.emplace(out_node);
all_out_data_nodes.emplace(out_node);
}
}
}
cur_nodes = all_out_data_nodes;
}
}

map<int64_t, int64_t> old_stream_to_new;
for (const NodePtr &node : all_reduce_succs) {
GE_CHECK_NOTNULL(node->GetOpDesc());
auto old_stream = node->GetOpDesc()->GetStreamId();
if (old_stream != kInvalidStream) {
int64_t new_stream = kInvalidStream;
auto iter = old_stream_to_new.find(old_stream);
if (iter != old_stream_to_new.end()) {
new_stream = iter->second;
} else {
new_stream = context.next_stream;
context.next_stream++;
old_stream_to_new.emplace(old_stream, new_stream);
}

GELOGI("Stream of node %s has been updated from %ld to %ld.", node->GetName().c_str(), old_stream, new_stream);
node->GetOpDesc()->SetStreamId(new_stream);
}
}

return !all_reduce_succs.empty() ? SUCCESS : NOT_CHANGED;
}

int64_t NodeStreamUpdatePass::GetSingleInoutStream(const NodePtr &node) const {
set<int64_t> stream_ids;

@@ -421,11 +477,11 @@ int64_t NodeStreamUpdatePass::GetSingleInoutStream(const NodePtr &node) const {
return kInvalidStream;
}

Status NodeStreamUpdatePass::UpdateForSkippedEngine(const ComputeGraphPtr &graph,
Status NodeStreamUpdatePass::UpdateForSkippedEngine(const ComputeGraphPtr &whole_graph,
const vector<SubgraphPtr> &subgraphs) {
set<OpDescPtr> nodes_to_be_updated;

// Check if subgraph is engine skipped and without stream label or not
// Check if sub graph is engine skipped and without stream label or not
for (const SubgraphPtr &subgraph : subgraphs) {
if (IsEngineSkip(*subgraph) && !HasStreamLabel(*subgraph)) {
auto graph = subgraph->subgraph_info.GetSubGraph();
@@ -441,7 +497,7 @@ Status NodeStreamUpdatePass::UpdateForSkippedEngine(const ComputeGraphPtr &graph
}

// Try reassign the stream id
for (ge::NodePtr &node : graph->GetDirectNode()) {
for (ge::NodePtr &node : whole_graph->GetDirectNode()) {
auto op_desc = node->GetOpDesc();
GE_CHECK_NOTNULL(op_desc);
int64_t stream_id = op_desc->GetStreamId();
@@ -458,7 +514,6 @@ Status NodeStreamUpdatePass::UpdateForSkippedEngine(const ComputeGraphPtr &graph
}
}
}

return SUCCESS;
}

@@ -475,65 +530,40 @@ bool NodeStreamUpdatePass::AreAllPredStreamsInvalid(const NodePtr &node) const {
return true;
}

Status AllReduceParallelPass::Run(ComputeGraphPtr graph, const vector<SubgraphPtr> &subgraphs, Context &context) {
if (!context.hcom_parallel) {
return NOT_CHANGED;
}

GELOGI("AllReduceParallelPass is enabled.");
GraphUtils::DumpGEGraph(graph, "BeforeAllReduceParallel");

// All successors of HcomAllReduce.
set<NodePtr> all_reduce_succs;

for (const NodePtr &node : graph->GetDirectNode()) {
if (node->GetType() != HCOMALLREDUCE || node->GetInDataNodes().size() <= 1) {
continue;
}

string reduce_stream_label;
GE_CHECK_NOTNULL(node->GetOpDesc());
(void)AttrUtils::GetStr(node->GetOpDesc(), ATTR_NAME_STREAM_LABEL, reduce_stream_label);
void NodeStreamUpdatePass::RefreshContinuousStreams(ComputeGraphPtr whole_graph, Context &context) const {
int64_t stream_num = context.next_stream;
vector<bool> stream_has_node(stream_num);

set<NodePtr> cur_nodes = {node};
while (!cur_nodes.empty()) {
set<NodePtr> all_out_data_nodes;
for (auto &curr_node : cur_nodes) {
for (const NodePtr &out_node : curr_node->GetOutDataNodes()) {
string out_stream_label;
GE_CHECK_NOTNULL(out_node->GetOpDesc());
(void)AttrUtils::GetStr(out_node->GetOpDesc(), ATTR_NAME_STREAM_LABEL, out_stream_label);
if (out_stream_label == reduce_stream_label) {
all_reduce_succs.emplace(out_node);
all_out_data_nodes.emplace(out_node);
}
for (const NodePtr &node : whole_graph->GetDirectNode()) {
if (node != nullptr) {
auto op_desc = node->GetOpDesc();
if (op_desc != nullptr) {
int64_t stream_id = op_desc->GetStreamId();
if (stream_id != kInvalidStream && stream_id < stream_num) {
stream_has_node[stream_id] = true;
}
}
cur_nodes = all_out_data_nodes;
}
}

map<int64_t, int64_t> old_stream_to_new;
for (const NodePtr &node : all_reduce_succs) {
GE_CHECK_NOTNULL(node->GetOpDesc());
auto old_stream = node->GetOpDesc()->GetStreamId();
if (old_stream != kInvalidStream) {
int64_t new_stream = kInvalidStream;
auto iter = old_stream_to_new.find(old_stream);
if (iter != old_stream_to_new.end()) {
new_stream = iter->second;
} else {
new_stream = context.next_stream;
context.next_stream++;
old_stream_to_new.emplace(old_stream, new_stream);
}

GELOGI("Stream of node %s has been updated from %ld to %ld.", node->GetName().c_str(), old_stream, new_stream);
node->GetOpDesc()->SetStreamId(new_stream);
context.next_stream = 0;
vector<int64_t> old_to_new_streams(stream_num, kInvalidStream);
for (size_t old_stream = 0; old_stream < stream_has_node.size(); ++old_stream) {
if (stream_has_node[old_stream]) {
old_to_new_streams[old_stream] = context.next_stream;
++context.next_stream;
}
}

return !all_reduce_succs.empty() ? SUCCESS : NOT_CHANGED;
for (const NodePtr &node : whole_graph->GetDirectNode()) {
auto op_desc = node->GetOpDesc();
if (op_desc != nullptr) {
int64_t stream_id = op_desc->GetStreamId();
if (stream_id != kInvalidStream && stream_id < stream_num) {
op_desc->SetStreamId(old_to_new_streams[stream_id]);
}
}
}
}

LogicalStreamAllocator::LogicalStreamAllocator(const map<string, SchedulerConf> &scheduler_confs,
@@ -542,10 +572,9 @@ LogicalStreamAllocator::LogicalStreamAllocator(const map<string, SchedulerConf>
context_.hcom_parallel = hcom_parallel;
}

Status LogicalStreamAllocator::Assign(const ComputeGraphPtr &whole_graph, const Graph2SubGraphInfoList &subgraph_map,
Status LogicalStreamAllocator::Assign(const ComputeGraphPtr &whole_graph, const vector<SubGraphInfoPtr> &subgraph_infos,
int64_t &stream_num) {
GE_CHECK_NOTNULL(whole_graph);

map<string, EngineConfPtr> engine_confs;
GE_TIMESTAMP_START(InitEngineConfs);
for (const auto &item : scheduler_confs_) {
@@ -559,64 +588,16 @@ Status LogicalStreamAllocator::Assign(const ComputeGraphPtr &whole_graph, const
}
GE_TIMESTAMP_END(InitEngineConfs, "GraphBuilder::AssignStreamInitEngineConfs");

Status status = DoAssign(whole_graph, subgraph_map, engine_confs);
if (status != SUCCESS) {
GELOGE(status, "Assign streams failed.");
return status;
}

vector<ComputeGraphPtr> subgraphs = whole_graph->GetAllSubgraphs();
for (const ComputeGraphPtr &subgraph : subgraphs) {
Status status = DoAssign(subgraph, subgraph_map, engine_confs);
if (status != SUCCESS) {
GELOGE(status, "Assign streams failed.");
return status;
}
}

RefreshContinuousStreams(whole_graph);

stream_num = context_.next_stream;
GELOGI("Assigned logical stream num: %ld.", stream_num);

return SUCCESS;
}

Status LogicalStreamAllocator::DoAssign(const ComputeGraphPtr &graph, const Graph2SubGraphInfoList &subgraph_map,
const map<string, EngineConfPtr> &engine_confs) {
GE_CHECK_NOTNULL(graph);

NodePtr parent_node = graph->GetParentNode();
if (parent_node == nullptr || parent_node->GetOpDesc() == nullptr) {
context_.parent_stream = kInvalidStream;
} else {
context_.parent_stream = parent_node->GetOpDesc()->GetStreamId();
}

auto iter = subgraph_map.find(graph);
if (iter == subgraph_map.end()) {
GELOGE(FAILED, "Graph %s not found.", graph->GetName().c_str());
return FAILED;
}

const vector<SubGraphInfoPtr> &subgraph_info_list = iter->second;
vector<SubgraphPtr> subgraphs;
GE_TIMESTAMP_START(ConvertSubgraphs);
Status status = ConvertSubgraphs(subgraph_info_list, engine_confs, subgraphs);
Status status = ConvertSubgraphs(subgraph_infos, engine_confs, subgraphs);
GE_TIMESTAMP_END(ConvertSubgraphs, "GraphBuilder::AssignStreamConvertSubgraphs");
if (status != SUCCESS) {
GELOGE(status, "Create subgraphs failed.");
return status;
}

GELOGI("Subgraphs of graph %s:", graph->GetName().c_str());
for (const auto &subgraph : subgraphs) {
if (subgraph != nullptr) {
GELOGI("subgraph: %s", subgraph->name.c_str());
}
}

return RunPasses(graph, subgraphs);
return RunPasses(whole_graph, subgraphs, stream_num);
}

Status LogicalStreamAllocator::ConvertSubgraphs(const vector<SubGraphInfoPtr> &subgraph_infos,
@@ -655,7 +636,8 @@ Status LogicalStreamAllocator::ConvertSubgraphs(const vector<SubGraphInfoPtr> &s
return SUCCESS;
}

Status LogicalStreamAllocator::RunPasses(const ComputeGraphPtr &graph, const vector<SubgraphPtr> &subgraphs) {
Status LogicalStreamAllocator::RunPasses(const ComputeGraphPtr &whole_graph, const vector<SubgraphPtr> &subgraphs,
int64_t &stream_num) {
vector<LogicalStreamPassPtr> passes;
passes.emplace_back(MakeShared<AssignByLabelPass>());
passes.emplace_back(MakeShared<IndependentStreamPass>());
@@ -666,7 +648,7 @@ Status LogicalStreamAllocator::RunPasses(const ComputeGraphPtr &graph, const vec
for (auto &pass : passes) {
GE_CHECK_NOTNULL(pass);

Status status = pass->Run(graph, subgraphs, context_);
Status status = pass->Run(whole_graph, subgraphs, context_);
if (status == SUCCESS) {
GELOGI("Stream pass %s return SUCCESS.", pass->GetName().c_str());
} else if (status == NOT_CHANGED) {
@@ -677,42 +659,9 @@ Status LogicalStreamAllocator::RunPasses(const ComputeGraphPtr &graph, const vec
}
}

return SUCCESS;
}

void LogicalStreamAllocator::RefreshContinuousStreams(const ComputeGraphPtr &graph) {
int64_t stream_num = context_.next_stream;
vector<bool> stream_has_node(stream_num);

for (const NodePtr &node : graph->GetAllNodes()) {
if (node != nullptr) {
auto op_desc = node->GetOpDesc();
if (op_desc != nullptr) {
int64_t stream_id = op_desc->GetStreamId();
if (stream_id != kInvalidStream && stream_id < stream_num) {
stream_has_node[stream_id] = true;
}
}
}
}

context_.next_stream = 0;
vector<int64_t> old_to_new_streams(stream_num, kInvalidStream);
for (size_t old_stream = 0; old_stream < stream_has_node.size(); ++old_stream) {
if (stream_has_node[old_stream]) {
old_to_new_streams[old_stream] = context_.next_stream;
++context_.next_stream;
}
}
stream_num = context_.next_stream;
GELOGI("Assigned logical stream num: %ld.", stream_num);

for (const NodePtr &node : graph->GetAllNodes()) {
auto op_desc = node->GetOpDesc();
if (op_desc != nullptr) {
int64_t stream_id = op_desc->GetStreamId();
if (stream_id != kInvalidStream && stream_id < stream_num) {
op_desc->SetStreamId(old_to_new_streams[stream_id]);
}
}
}
return SUCCESS;
}
} // namespace ge

+ 12
- 14
src/ge/graph/build/logical_stream_allocator.h View File

@@ -60,7 +60,7 @@ class LogicalStreamPass {
};

struct Context {
int64_t parent_stream = kInvalidStream;
// Next stream id.
int64_t next_stream = 0;
bool hcom_parallel = false;
};
@@ -71,7 +71,7 @@ class LogicalStreamPass {
virtual ~LogicalStreamPass() = default;

const std::string &GetName() const;
virtual Status Run(ComputeGraphPtr graph, const std::vector<SubgraphPtr> &subgraphs, Context &context) = 0;
virtual Status Run(ComputeGraphPtr whole_graph, const std::vector<SubgraphPtr> &subgraphs, Context &context) = 0;

protected:
bool IsEngineSkip(const Subgraph &subgraph) const;
@@ -93,21 +93,21 @@ using LogicalStreamPassPtr = std::shared_ptr<LogicalStreamPass>;
class AssignByLabelPass : public LogicalStreamPass {
public:
STREAM_PASS_DEFAULT_FUNC(AssignByLabelPass);
Status Run(ComputeGraphPtr graph, const std::vector<SubgraphPtr> &subgraphs, Context &context) override;
Status Run(ComputeGraphPtr whole_graph, const std::vector<SubgraphPtr> &subgraphs, Context &context) override;
};

// Engines such as hccl require independent Stream.
class IndependentStreamPass : public LogicalStreamPass {
public:
STREAM_PASS_DEFAULT_FUNC(IndependentStreamPass);
Status Run(ComputeGraphPtr graph, const std::vector<SubgraphPtr> &subgraphs, Context &context) override;
Status Run(ComputeGraphPtr whole_graph, const std::vector<SubgraphPtr> &subgraphs, Context &context) override;
};

// Reuse streams or assign new streams based on dependencies.
class AssignByDependencyPass : public LogicalStreamPass {
public:
STREAM_PASS_DEFAULT_FUNC(AssignByDependencyPass);
Status Run(ComputeGraphPtr graph, const std::vector<SubgraphPtr> &subgraphs, Context &context) override;
Status Run(ComputeGraphPtr whole_graph, const std::vector<SubgraphPtr> &subgraphs, Context &context) override;

private:
void InitEndSubgraphMap(const std::vector<SubgraphPtr> &subgraphs, std::map<NodePtr, SubgraphPtr> &end_subgraph_map);
@@ -132,7 +132,7 @@ class AssignByDependencyPass : public LogicalStreamPass {
std::map<std::string, int64_t> engine_stream_num_;

// Subgraphs of assign stream by engine
std::vector<SubgraphPtr> assigned_subgraphs_;
std::set<SubgraphPtr> assigned_subgraphs_;

// <current subgraph, reused subgraph>
std::vector<std::pair<SubgraphPtr, SubgraphPtr>> reused_subgraphs_;
@@ -142,7 +142,7 @@ class AssignByDependencyPass : public LogicalStreamPass {
class NodeStreamUpdatePass : public LogicalStreamPass {
public:
STREAM_PASS_DEFAULT_FUNC(NodeStreamUpdatePass);
Status Run(ComputeGraphPtr graph, const std::vector<SubgraphPtr> &subgraphs, Context &context) override;
Status Run(ComputeGraphPtr whole_graph, const std::vector<SubgraphPtr> &subgraphs, Context &context) override;

private:
/// Optimize for case like:
@@ -150,18 +150,19 @@ class NodeStreamUpdatePass : public LogicalStreamPass {
/// To case:
/// NodeA(stream1) -> Const(stream1) -> NodeB(stream1)
/// Which could reduce event number (Const could be other type which belong to skipped engine subgraph)
Status UpdateForSkippedEngine(const ComputeGraphPtr &graph, const std::vector<SubgraphPtr> &subgraphs);
Status UpdateForSkippedEngine(const ComputeGraphPtr &whole_graph, const std::vector<SubgraphPtr> &subgraphs);

int64_t GetSingleInoutStream(const NodePtr &node) const;
// Judge if all predecessors' streams of node are INVALID_STREAM
bool AreAllPredStreamsInvalid(const NodePtr &node) const;
void RefreshContinuousStreams(ComputeGraphPtr whole_graph, Context &context) const;
};

// AllReduce and backward operators execute in parallel.
class AllReduceParallelPass : public LogicalStreamPass {
public:
STREAM_PASS_DEFAULT_FUNC(AllReduceParallelPass);
Status Run(ComputeGraphPtr graph, const std::vector<SubgraphPtr> &subgraphs, Context &context) override;
Status Run(ComputeGraphPtr whole_graph, const std::vector<SubgraphPtr> &subgraphs, Context &context) override;
};

// Assign logical streams which is not limited by the number of tasks.
@@ -177,16 +178,13 @@ class LogicalStreamAllocator {
LogicalStreamAllocator &operator=(const LogicalStreamAllocator &) = delete;
~LogicalStreamAllocator() = default;

Status Assign(const ComputeGraphPtr &whole_graph, const Graph2SubGraphInfoList &subgraph_map, int64_t &stream_num);
Status Assign(const ComputeGraphPtr &whole_graph, const std::vector<SubGraphInfoPtr> &subgraphs, int64_t &stream_num);

private:
Status DoAssign(const ComputeGraphPtr &graph, const Graph2SubGraphInfoList &subgraph_map,
const map<string, EngineConfPtr> &engine_confs);
Status ConvertSubgraphs(const std::vector<SubGraphInfoPtr> &subgraph_infos,
const std::map<std::string, EngineConfPtr> &engine_confs,
std::vector<SubgraphPtr> &subgraphs);
Status RunPasses(const ComputeGraphPtr &graph, const std::vector<SubgraphPtr> &subgraphs);
void RefreshContinuousStreams(const ComputeGraphPtr &graph);
Status RunPasses(const ComputeGraphPtr &whole_graph, const std::vector<SubgraphPtr> &subgraphs, int64_t &stream_num);

const std::map<std::string, SchedulerConf> &scheduler_confs_;
const std::map<std::string, int> &max_parallel_num_;


+ 1
- 0
src/ge/graph/build/memory/CMakeLists.txt View File

@@ -33,6 +33,7 @@ include_directories(${GE_SOURCE_DIR}/inc/external)
include_directories(${GE_SOURCE_DIR}/inc/external/graph)
include_directories(${GE_SOURCE_DIR}/inc/framework)
include_directories(${GE_SOURCE_DIR}/third_party/fwkacllib/inc)
include_directories(${GE_SOURCE_DIR}/third_party/securec/include)
include_directories(${CMAKE_BINARY_DIR})
include_directories(${CMAKE_BINARY_DIR}/proto/ge)



+ 3
- 3
src/ge/graph/build/memory/binary_block_mem_assigner.cc View File

@@ -100,13 +100,13 @@ Status BinaryBlockMemAssigner::GetMemoryRanges(vector<int64_t> &range_ceils) {

GELOGD("Origin ranges:");
for (auto &v : ranges) {
GELOGD("__%s", ToString(v).c_str());
GELOGD("__%s", domi::ToString(v).c_str());
}

PlanRanges(range_number_limit, ranges);
GELOGD("Origin ranges:");
for (auto &v : ranges) {
GELOGD("__%s", ToString(v).c_str());
GELOGD("__%s", domi::ToString(v).c_str());
}

for (auto &range : ranges) {
@@ -115,7 +115,7 @@ Status BinaryBlockMemAssigner::GetMemoryRanges(vector<int64_t> &range_ceils) {
range_ceils.push_back(range.back());
}
}
GELOGI("Range ceils: %s", ToString(range_ceils).c_str());
GELOGI("Range ceils: %s", domi::ToString(range_ceils).c_str());

return SUCCESS;
}


+ 26
- 2
src/ge/graph/build/memory/block_mem_assigner.cc View File

@@ -29,6 +29,7 @@
#include "graph/utils/op_desc_utils.h"
#include "graph/utils/tensor_utils.h"

#include "common/op/attr_define.h"
#include "graph/debug/ge_attr_define.h"

#include "graph/optimize/common/params.h"
@@ -46,6 +47,29 @@ const int kReuseMaxCharNum = 2000;
} // namespace

namespace ge {
using domi::AIPP_DATA_TYPE;
using domi::AIPPDATA;
using domi::ANN_DATA_TYPE;
using domi::APPLYMOMENTUM;
using domi::ASSIGN;
using domi::ASSIGNADD;
using domi::ASSIGNSUB;
using domi::CONSTANT;
using domi::CONSTANTOP;
using domi::DATA;
using domi::DATA_TYPE;
using domi::ENTER;
using domi::FASTRCNNPREDICTIONS;
using domi::HCOMALLREDUCE;
using domi::HCOMBROADCAST;
using domi::MULTISHAPE;
using domi::NETOUTPUT;
using domi::NEXTITERATION;
using domi::PROPOSAL;
using domi::REFENTER;
using domi::REFNEXTITERATION;
using domi::VARIABLE;
using domi::ZEROSLIKE;
using std::map;
using std::pair;
using std::string;
@@ -134,7 +158,7 @@ string ToString(ge::NodeTypeIndex &x) {
string MemoryBlock::String() {
stringstream ss;
ss << "Block size: " << Size() << " from " << HeadOffset() << " to " << TailOffset() << "";
ss << "real_size_list: " << ToString(real_size_list_) << "";
ss << "real_size_list: " << domi::ToString(real_size_list_) << "";
ss << "ref_count: " << ref_count_ << "";
ss << "members: ";
for (auto x : NodeTypeIndexList()) {
@@ -175,7 +199,7 @@ void BlockMemAssigner::GetOutAndWorkSpaceMem(vector<int64_t> &all_memory_size) {
all_memory_size.insert(all_memory_size.end(), temp.begin(), temp.end());
}
sort(all_memory_size.begin(), all_memory_size.end());
GELOGI("All memory size: %s", ToString(all_memory_size).c_str());
GELOGI("All memory size: %s", domi::ToString(all_memory_size).c_str());

for (auto iter = all_memory_size.begin(); iter != all_memory_size.end();) {
if (*iter == 0) {


+ 18
- 8
src/ge/graph/build/memory/graph_mem_assigner.cc View File

@@ -18,6 +18,7 @@
#include <cstring>
#include <set>
#include "common/math/math_util.h"
#include "common/op/attr_define.h"
#include "framework/common/debug/ge_log.h"
#include "graph/build/memory/hybrid_mem_assigner.h"
#include "graph/build/memory/var_mem_assign_util.h"
@@ -28,6 +29,19 @@
#include "graph/utils/tensor_utils.h"
#include "graph/utils/type_utils.h"

using domi::AIPP_DATA_TYPE;
using domi::ATOMICADDRCLEAN;
using domi::ATTR_NAME_AUTOMIC_ADD_MEM_SIZE;
using domi::ATTR_NAME_AUTOMIC_ADD_START;
using domi::CONCAT;
using domi::CONSTANTOP;
using domi::DATA_TYPE;
using domi::HCOMBROADCAST;
using domi::LABELSWITCHBYINDEX;
using domi::NODE_NAME_NET_OUTPUT;
using domi::STREAMMERGE;
using domi::VARIABLE;

namespace {
const int kDataOutputIndex = 0;
const int kAllInputAddrIsAtomic = -1;
@@ -423,10 +437,8 @@ Status GraphMemoryAssigner::ReAssignReuseAndNoPaddingContinuousInputMemory() {
pre_mem_offset, peer_op_desc->GetStreamId(), out_size, output_mem_size);
}
memory_offset_[0].mem_offset_ += extra_memory_size;
size_t after_mem_offset = memory_offset_[0].mem_offset_;
AlignMemOffset(MEM_ALIGN_SIZE);
GELOGI("After reassign virtual input node[name:%s, type:%s] memory, memory offset = %zu, align memory = %zu.",
op_desc->GetName().c_str(), op_desc->GetType().c_str(), after_mem_offset, memory_offset_[0].mem_offset_);
GELOGI("After reassign virtual input node[name:%s, type:%s] memory, memory offset = %zu.",
op_desc->GetName().c_str(), op_desc->GetType().c_str(), memory_offset_[0].mem_offset_);
}
}
return SUCCESS;
@@ -511,10 +523,8 @@ Status GraphMemoryAssigner::ReAssignReuseAndNoPaddingContinuousOutputMemory() {
}
op_desc->SetOutputOffset(output_list);
memory_offset_[0].mem_offset_ += extra_memory_size;
size_t after_mem_offset = memory_offset_[0].mem_offset_;
AlignMemOffset(MEM_ALIGN_SIZE);
GELOGI("After reassign virtual output node[name:%s, type:%s] memory, memory offset = %zu, align memory = %zu.",
op_desc->GetName().c_str(), op_desc->GetType().c_str(), after_mem_offset, memory_offset_[0].mem_offset_);
GELOGI("After reassign virtual output node[name:%s, type:%s] memory, memory offset = %zu.",
op_desc->GetName().c_str(), op_desc->GetType().c_str(), memory_offset_[0].mem_offset_);
}
}
return SUCCESS;


+ 23
- 17
src/ge/graph/build/memory/var_mem_assign_util.cc View File

@@ -16,6 +16,7 @@

#include "graph/build/memory/var_mem_assign_util.h"
#include <vector>
#include "common/op/attr_define.h"
#include "common/types.h"
#include "framework/common/debug/ge_log.h"
#include "graph/common/transop_util.h"
@@ -50,10 +51,10 @@ Status VarMemAssignUtil::AssignMemory2VariableNode(ge::ComputeGraphPtr &compute_
Status VarMemAssignUtil::AssignStaticMemory2Node(ge::ComputeGraphPtr &compute_graph) {
GE_IF_BOOL_EXEC(compute_graph == nullptr, return FAILED);
for (const ge::NodePtr &n : compute_graph->GetDirectNode()) {
GE_IF_BOOL_EXEC((n->GetType() != VARIABLE) && (n->GetType() != CONSTANTOP), continue);
GE_IF_BOOL_EXEC((n->GetType() != domi::VARIABLE) && (n->GetType() != domi::CONSTANTOP), continue);
string ref_var_src_var_name;
GE_CHECK_NOTNULL(n->GetOpDesc());
GE_IF_BOOL_EXEC(ge::AttrUtils::GetStr(n->GetOpDesc(), REF_VAR_SRC_VAR_NAME, ref_var_src_var_name), continue);
GE_IF_BOOL_EXEC(ge::AttrUtils::GetStr(n->GetOpDesc(), domi::REF_VAR_SRC_VAR_NAME, ref_var_src_var_name), continue);
string node_name = n->GetName();
GE_IF_BOOL_EXEC(n->GetOpDesc()->GetAllOutputsDesc().empty(),
GELOGE(FAILED, "node:%s has no OutputDesc.", n->GetName().c_str());
@@ -63,7 +64,7 @@ Status VarMemAssignUtil::AssignStaticMemory2Node(ge::ComputeGraphPtr &compute_gr
if (!VarManager::Instance(compute_graph->GetSessionID())->IsVarExist(node_name, *tensor_desc)) {
GE_CHK_STATUS_RET(
VarManager::Instance(compute_graph->GetSessionID())->AssignVarMem(node_name, *tensor_desc, RT_MEMORY_HBM));
GE_IF_BOOL_EXEC(n->GetType() == VARIABLE,
GE_IF_BOOL_EXEC(n->GetType() == domi::VARIABLE,
GE_CHK_STATUS_RET(AssignData2Fp32Var(n, compute_graph->GetSessionID())));
GE_CHK_STATUS_RET(VarManager::Instance(compute_graph->GetSessionID())
->SetAllocatedGraphId(node_name, compute_graph->GetGraphID()));
@@ -84,7 +85,7 @@ Status VarMemAssignUtil::AssignStaticMemory2Node(ge::ComputeGraphPtr &compute_gr
Status VarMemAssignUtil::AssignData2Fp32Var(const ge::NodePtr &node, uint64_t session_id) {
string src_var_name;
GE_CHECK_NOTNULL(node->GetOpDesc());
if (ge::AttrUtils::GetStr(node->GetOpDesc(), VAR_ATTR_SRC_VAR_NAME, src_var_name)) {
if (ge::AttrUtils::GetStr(node->GetOpDesc(), domi::VAR_ATTR_SRC_VAR_NAME, src_var_name)) {
ge::GeTensorDesc cur_tensor_desc;
uint8_t *dev_ptr = nullptr;
rtMemType_t memory_type = RT_MEMORY_HBM;
@@ -99,10 +100,11 @@ Status VarMemAssignUtil::AssignData2Fp32Var(const ge::NodePtr &node, uint64_t se

Status VarMemAssignUtil::AssignVarAttr2Nodes(ge::ComputeGraphPtr &compute_graph) {
for (const ge::NodePtr &node : compute_graph->GetDirectNode()) {
GE_IF_BOOL_EXEC(node->GetType() != VARIABLE, continue);
GE_IF_BOOL_EXEC(node->GetType() != domi::VARIABLE, continue);
string ref_var_src_var_name;
GE_CHECK_NOTNULL(node->GetOpDesc());
GE_IF_BOOL_EXEC(ge::AttrUtils::GetStr(node->GetOpDesc(), REF_VAR_SRC_VAR_NAME, ref_var_src_var_name), continue);
GE_IF_BOOL_EXEC(ge::AttrUtils::GetStr(node->GetOpDesc(), domi::REF_VAR_SRC_VAR_NAME, ref_var_src_var_name),
continue);
GE_CHK_STATUS_RET(DealVariableNode(compute_graph->GetGraphID(), node, compute_graph->GetSessionID()));
}
return SUCCESS;
@@ -140,7 +142,8 @@ Status VarMemAssignUtil::DealExportVariableNode(const ge::NodePtr &node, const g
GE_IF_BOOL_EXEC(var_out_anchor == nullptr, return FAILED);
for (const ge::InDataAnchorPtr &dst_in_var_anchor : var_out_anchor->GetPeerInDataAnchors()) {
ge::NodePtr dst_node = dst_in_var_anchor->GetOwnerNode();
if ((dst_node->GetType() == ASSIGN) || (dst_node->GetType() == ASSIGNADD) || (dst_node->GetType() == ASSIGNSUB)) {
if ((dst_node->GetType() == domi::ASSIGN) || (dst_node->GetType() == domi::ASSIGNADD) ||
(dst_node->GetType() == domi::ASSIGNSUB)) {
if (dst_in_var_anchor == dst_node->GetInDataAnchor(0)) {
GE_CHK_STATUS_RET(DealExportVariableNode(dst_node, var_node, session_id));
}
@@ -208,19 +211,20 @@ Status VarMemAssignUtil::DealVariableNode(uint32_t graph_id, const ge::NodePtr &
for (const ge::OutDataAnchorPtr &var_out_data_anchor : node->GetAllOutDataAnchors()) {
for (const ge::InDataAnchorPtr &dst_in_data_anchor : var_out_data_anchor->GetPeerInDataAnchors()) {
ge::NodePtr dst_node = dst_in_data_anchor->GetOwnerNode();
if (dst_node->GetType() == HCOMBROADCAST) {
if (dst_node->GetType() == domi::HCOMBROADCAST) {
GE_CHK_STATUS_RET(DealBroadCastNode(graph_id, dst_node, dst_in_data_anchor, node, session_id));
continue;
}

if ((dst_node->GetType() == ASSIGN) || (dst_node->GetType() == ASSIGNADD) || (dst_node->GetType() == ASSIGNSUB)) {
if ((dst_node->GetType() == domi::ASSIGN) || (dst_node->GetType() == domi::ASSIGNADD) ||
(dst_node->GetType() == domi::ASSIGNSUB)) {
if (dst_in_data_anchor == dst_node->GetInDataAnchor(0)) {
GE_CHK_STATUS_RET(DealExportVariableNode(dst_node, node, session_id));
}
}
auto dst_type = dst_node->GetType();
bool is_trans_node =
(dst_type == TRANSDATA) || (dst_type == CAST) || (dst_type == TRANSPOSE) || (dst_type == PERMUTE);
bool is_trans_node = (dst_type == domi::TRANSDATA) || (dst_type == domi::CAST) || (dst_type == domi::TRANSPOSE) ||
(dst_type == domi::PERMUTE);
if (is_trans_node) {
NodePtr final_trans_node = GetFinalTransNode(dst_node);
GE_CHK_STATUS_RET(DealTransNode(final_trans_node));
@@ -237,8 +241,8 @@ ge::NodePtr VarMemAssignUtil::GetFinalTransNode(const ge::NodePtr &trans_node) {
for (const auto &dst_in_anchor : trans_out_data_anchor->GetPeerInDataAnchors()) {
NodePtr dst_node = dst_in_anchor->GetOwnerNode();
auto dst_type = dst_node->GetType();
bool is_trans_node =
(dst_type == TRANSDATA) || (dst_type == CAST) || (dst_type == TRANSPOSE) || (dst_type == PERMUTE);
bool is_trans_node = (dst_type == domi::TRANSDATA) || (dst_type == domi::CAST) || (dst_type == domi::TRANSPOSE) ||
(dst_type == domi::PERMUTE);
if (is_trans_node && (dst_in_anchor->GetIdx() == 0)) {
final_ref_node = GetFinalTransNode(dst_node);
}
@@ -252,7 +256,8 @@ Status VarMemAssignUtil::DealTransNode(const ge::NodePtr &final_trans_node) {
GE_IF_BOOL_EXEC(final_trans_out_anchor == nullptr, return SUCCESS);
for (const ge::InDataAnchorPtr &dst_in_var_anchor : final_trans_out_anchor->GetPeerInDataAnchors()) {
ge::NodePtr dst_node = dst_in_var_anchor->GetOwnerNode();
if ((dst_node->GetType() == ASSIGN) || (dst_node->GetType() == ASSIGNADD) || (dst_node->GetType() == ASSIGNSUB)) {
if ((dst_node->GetType() == domi::ASSIGN) || (dst_node->GetType() == domi::ASSIGNADD) ||
(dst_node->GetType() == domi::ASSIGNSUB)) {
GE_CHK_STATUS_RET(DealExportTransNode(dst_node, final_trans_node));
}
}
@@ -264,7 +269,8 @@ Status VarMemAssignUtil::DealExportTransNode(const ge::NodePtr &node, const ge::
GE_CHECK_NOTNULL(node_out_anchor);
for (const ge::InDataAnchorPtr &dst_in_var_anchor : node_out_anchor->GetPeerInDataAnchors()) {
ge::NodePtr dst_node = dst_in_var_anchor->GetOwnerNode();
if ((dst_node->GetType() == ASSIGN) || (dst_node->GetType() == ASSIGNADD) || (dst_node->GetType() == ASSIGNSUB)) {
if ((dst_node->GetType() == domi::ASSIGN) || (dst_node->GetType() == domi::ASSIGNADD) ||
(dst_node->GetType() == domi::ASSIGNSUB)) {
GE_CHK_STATUS_RET(DealExportTransNode(dst_node, final_trans_node));
}
}
@@ -300,7 +306,7 @@ Status VarMemAssignUtil::AssignMemory2HasRefAttrNode(ge::ComputeGraphPtr &comput
for (const ge::NodePtr &n : compute_graph->GetDirectNode()) {
string ref_var_src_var_name;
GE_CHECK_NOTNULL(n->GetOpDesc());
bool is_ref = ge::AttrUtils::GetStr(n->GetOpDesc(), REF_VAR_SRC_VAR_NAME, ref_var_src_var_name);
bool is_ref = ge::AttrUtils::GetStr(n->GetOpDesc(), domi::REF_VAR_SRC_VAR_NAME, ref_var_src_var_name);
GE_IF_BOOL_EXEC(is_ref,
GE_CHK_STATUS_RET(AssignData2VarRef(n, ref_var_src_var_name, compute_graph->GetSessionID())));
}
@@ -323,7 +329,7 @@ Status VarMemAssignUtil::AssignData2VarRef(const ge::NodePtr &has_ref_attr_node,
GE_CHECK_SIZE(ref_attr_node_output_list.size());

int out_index = 0;
bool is_get = ge::AttrUtils::GetInt(var_ref_src_var->GetOpDesc(), REF_VAR_PRE_PEER_OUT_INDEX, out_index);
bool is_get = ge::AttrUtils::GetInt(var_ref_src_var->GetOpDesc(), domi::REF_VAR_PRE_PEER_OUT_INDEX, out_index);
if (!is_get) {
GELOGI("%s failed to get attr [REF_VAR_PRE_PEER_OUT_INDEX]", var_ref_src_var->GetName().c_str());
}


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save