@@ -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() | |||
@@ -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} | |||
@@ -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) |
@@ -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 |
@@ -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"; | |||
@@ -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 | |||
@@ -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_ |
@@ -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) \ | |||
@@ -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 | |||
@@ -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 | |||
@@ -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_ |
@@ -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_ |
@@ -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_ |
@@ -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_ |
@@ -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_ |
@@ -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: | |||
/// | |||
@@ -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_ |
@@ -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_ |
@@ -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_ |
@@ -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_ |
@@ -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_ |
@@ -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_ |
@@ -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. | |||
@@ -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_ |
@@ -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_ |
@@ -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" | |||
@@ -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; | |||
@@ -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_ |
@@ -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 { | |||
@@ -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) | |||
@@ -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()); | |||
} | |||
} | |||
@@ -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) { | |||
@@ -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; | |||
} | |||
@@ -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 |
@@ -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" | |||
@@ -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 |
@@ -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: | |||
@@ -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) |
@@ -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) | |||
@@ -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; | |||
@@ -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) | |||
@@ -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 |
@@ -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); | |||
@@ -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; | |||
@@ -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; | |||
} | |||
@@ -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; | |||
@@ -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", | |||
@@ -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", | |||
@@ -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", | |||
@@ -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", | |||
@@ -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", | |||
@@ -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; | |||
@@ -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(), | |||
@@ -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; | |||
@@ -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; | |||
} | |||
@@ -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; | |||
@@ -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; | |||
@@ -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 |
@@ -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_ |
@@ -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) { | |||
@@ -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; | |||
@@ -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) { | |||
@@ -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); | |||
} | |||
@@ -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; | |||
} | |||
@@ -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; | |||
} | |||
@@ -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_ |
@@ -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; | |||
@@ -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_ |
@@ -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 |
@@ -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 |
@@ -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_ |
@@ -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() {} | |||
@@ -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)); | |||
@@ -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 |
@@ -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; | |||
@@ -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 | |||
} | |||
@@ -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_; } | |||
@@ -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; | |||
@@ -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 |
@@ -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 |
@@ -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) | |||
@@ -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; | |||
@@ -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) | |||
@@ -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; | |||
@@ -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 { | |||
@@ -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" | |||
@@ -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) | |||
@@ -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; | |||
@@ -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; | |||
@@ -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; | |||
@@ -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; | |||
@@ -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); | |||
@@ -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 |
@@ -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_; | |||
@@ -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) | |||
@@ -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; | |||
} | |||
@@ -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,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; | |||
@@ -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()); | |||
} | |||