Browse Source

ge decoupling

Signed-off-by: zhupuxu <zhupuxu@huawei.com>
pull/1778/head
zhupuxu 4 years ago
parent
commit
87ca3a1de4
6 changed files with 43 additions and 24 deletions
  1. +5
    -11
      CMakeLists.txt
  2. +1
    -0
      ge/CMakeLists.txt
  3. +28
    -0
      ge/common/profiling/ge_profiling.cc
  4. +2
    -13
      ge/common/profiling/profiling_manager.cc
  5. +4
    -0
      ge/common/profiling/profiling_manager.h
  6. +3
    -0
      inc/framework/common/profiling/ge_profiling.h

+ 5
- 11
CMakeLists.txt View File

@@ -84,14 +84,12 @@ else ()
set(STATIC_ACL_LIB ${GE_LIB_PATH})
find_module(slog libalog.so ${GE_LIB_PATH})
find_module(static_mmpa libmmpa.a ${GE_LIB_PATH})
find_module(msprofiler_ext libmsprofiler.a ${GE_LIB_PATH})
find_module(hccl libhccl.so ${GE_LIB_PATH})
find_module(adump_server libadump_server.a ${GE_LIB_PATH})
find_module(runtime libruntime.so ${GE_LIB_PATH})
find_module(runtime_compile libruntime_compile.so ${GE_LIB_PATH})
find_module(resource libresource.so ${GE_LIB_PATH})
find_module(ascend_hal_stub libascend_hal.so ${GE_LIB_PATH})
find_module(msprofiler_fwk_ext libmsprofiler_fwk.a ${GE_LIB_PATH})
#find_module(ascendcl_static libascendcl.a ${GE_LIB_PATH})
else()
find_module(slog libalog.so ${ASCEND_ATC_DIR})
@@ -100,7 +98,6 @@ else ()
if(PLATFORM STREQUAL "train")
find_module(adump_server libadump_server.a ${ASCEND_RUNTIME_DIR})
find_module(runtime libruntime.so ${ASCEND_RUNTIME_DIR})
find_module(msprofiler_fwk_ext libmsprofiler_fwk.a ${ASCEND_RUNTIME_DIR})
find_module(ascend_hal_stub libascend_hal.so ${ASCEND_DRIVER_DIR}/driver)
if(PRODUCT STREQUAL "flr3")
message(FATAL_ERROR "This platform is not supported in train mode, build terminated")
@@ -108,8 +105,7 @@ else ()
elseif(PLATFORM STREQUAL "inference")
find_module(adump_server libadump_server.a ${ASCEND_ACL_DIR})
find_module(runtime libruntime.so ${ASCEND_ACL_DIR})
find_module(runtime_compile libruntime_compile.so ${ASCEND_ATC_DIR})
find_module(msprofiler_ext libmsprofiler.a ${ASCEND_ACL_DIR})
find_module(runtime_compile libruntime_compile.so ${ASCEND_ATC_DIR})
if(PRODUCT STREQUAL "flr3")
elseif(PRODUCT STREQUAL "flr1")
find_module(ascend_hal_stub libascend_hal.so ${ASCEND_DRIVER_DIR}/driver)
@@ -119,12 +115,10 @@ else ()
find_module(ascend_hal_stub libascend_hal.so ${ASCEND_DRIVER_DIR})
endif()
elseif(PLATFORM STREQUAL "all")
find_module(adump_server libadump_server.a ${ASCEND_RUNTIME_DIR})
find_module(runtime libruntime.so ${ASCEND_RUNTIME_DIR})
find_module(msprofiler_fwk_ext libmsprofiler_fwk.a ${ASCEND_RUNTIME_DIR})
find_module(ascend_hal_stub libascend_hal.so ${ASCEND_DRIVER_DIR})
find_module(runtime_compile libruntime_compile.so ${ASCEND_ATC_DIR})
find_module(msprofiler_ext libmsprofiler.a ${ASCEND_ACL_DIR})
find_module(adump_server libadump_server.a ${ASCEND_RUNTIME_DIR})
find_module(runtime libruntime.so ${ASCEND_RUNTIME_DIR})
find_module(ascend_hal_stub libascend_hal.so ${ASCEND_DRIVER_DIR})
find_module(runtime_compile libruntime_compile.so ${ASCEND_ATC_DIR})
else()
message(STATUS "PLATFORM param is invalid, should be train or inference, you choose nothing!")
endif()


+ 1
- 0
ge/CMakeLists.txt View File

@@ -813,6 +813,7 @@ target_link_libraries(ge_runner PRIVATE
ge_proto_common
ge_proto_client
-Wl,--no-as-needed
msprofiler_fwk_share
graph
ge_common
ascend_protobuf


+ 28
- 0
ge/common/profiling/ge_profiling.cc View File

@@ -178,6 +178,11 @@ ge::Status RegProfReporterCallback(MsprofReporterCallback func) {
} else {
GELOGI("GE register Msprof reporter callback.");
ge::ProfilingManager::Instance().SetMsprofReporterCallback(func);
auto ctrl_handle = ge::ProfilingManager::Instance().GetMsprofCtrlHandle();
if (ctrl_handle != nullptr) {
void *report_func = reinterpret_cast<void *>(func);
ctrl_handle(0, report_func, sizeof(report_func));
}
// Pass MsprofReporterCallback to runtime
ge::Status rt_ret = rtSetMsprofReporterCallback(func);
if (rt_ret != ge::SUCCESS) {
@@ -202,6 +207,15 @@ ge::Status ProfCommandHandle(ProfCommandHandleType type, void *data, uint32_t le
GELOGW("The prof comand type is invalid.");
return ge::PARAM_INVALID;
}
auto ctrl_handle = ge::ProfilingManager::Instance().GetMsprofCtrlHandle();
if (ctrl_handle != nullptr) {
if (type == kProfCommandhandleStart) {
ctrl_handle(1, data, len);
}
if (type == kProfCommandhandleStop) {
ctrl_handle(2, data, len);
}
}
std::vector<string> prof_params;
if (type == kProfCommandhandleStart || type == kProfCommandhandleStop) {
if (!isProfConfigValid(prof_config_param->devIdList, prof_config_param->devNums)) {
@@ -289,3 +303,17 @@ ge::Status ProfSetStepInfo(uint64_t index_id, uint16_t tag_id, rtStream_t stream
ge::Status ProfGetDeviceFormGraphId(uint32_t graph_id, uint32_t &device_id) {
return ge::ProfilingManager::Instance().GetDeviceIdFromGraph(graph_id, device_id);
}

ge::Status ProfRegisterCtrlCallback(MsprofCtrlHandle func) {
if (func == nullptr) {
GELOGE(ge::PARAM_INVALID, "[Check][Param]Msprof ctrl callback is nullptr");
REPORT_INNER_ERROR("E19999", "Msprof ctrl callback is nullptr");
return ge::PARAM_INVALID;
}
if (ge::ProfilingManager::Instance().GetMsprofCtrlHandle() != nullptr) {
GELOGW("Msprof ctrl callback is exist, just ignore it.");
} else {
ge::ProfilingManager::Instance().SetMsprofCtrlHandle(func);
}
return ge::SUCCESS;
}

+ 2
- 13
ge/common/profiling/profiling_manager.cc View File

@@ -97,12 +97,7 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY ge::Status ProfilingManager::In
}

if (is_execute_profiling_) {
if (prof_cb_.msprofCtrlCallback == nullptr) {
GELOGE(ge::PARAM_INVALID, "[Check][Param]MsprofCtrlCallback callback is nullptr");
REPORT_INNER_ERROR("E19999", "MsprofCtrlCallback callback is nullptr");
return ge::PARAM_INVALID;
}
int32_t cb_ret = prof_cb_.msprofCtrlCallback(
int32_t cb_ret = MsprofInit(
static_cast<uint32_t>(MsprofCtrlCallbackType::MSPROF_CTRL_INIT_GE_OPTIONS),
static_cast<void *>(&prof_conf), sizeof(MsprofGeOptions));
if (cb_ret != 0) {
@@ -243,13 +238,7 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY void ProfilingManager::StopProf
}

// stop profiling
if (prof_cb_.msprofCtrlCallback == nullptr) {
GELOGE(ge::PARAM_INVALID, "[Check][Param]MsprofCtrlCallback callback is nullptr");
REPORT_INNER_ERROR("E19999", "MsprofCtrlCallback callback is nullptr");
return;
}
int32_t cb_ret = prof_cb_.msprofCtrlCallback(static_cast<uint32_t>(MsprofCtrlCallbackType::MSPROF_CTRL_FINALIZE),
nullptr, 0);
int32_t cb_ret = MsprofFinalize();
if (cb_ret != 0) {
GELOGW("call msprofCtrlCallback failed, type:%u, return:%d",
static_cast<uint32_t>(MsprofCtrlCallbackType::MSPROF_CTRL_FINALIZE), cb_ret);


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

@@ -28,6 +28,7 @@
#include "external/register/register_types.h"
#include "toolchain/prof_callback.h"
#include "runtime/stream.h"
#include "common/profiling/ge_profiling.h"

using std::map;
using std::string;
@@ -116,6 +117,8 @@ class FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY ProfilingManager {
void CleanSubscribeInfo();
void SetGraphIdToModelMap(uint32_t graph_id, uint32_t model_id) { model_id_map_[graph_id] = model_id; }
Status GetModelIdFromGraph(uint32_t graph_id, uint32_t &model_id);
void SetMsprofCtrlHandle(MsprofCtrlHandle func) { ctrl_handle_ = func; }
MsprofCtrlHandle GetMsprofCtrlHandle() { return ctrl_handle_; }

private:
Status InitFromOptions(const Options &options, MsprofGeOptions &prof_conf);
@@ -147,6 +150,7 @@ class FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY ProfilingManager {
std::map<uint32_t, uint32_t> device_id_map_; // key: graph_id, value: device_id
std::map<uint32_t, uint32_t> model_id_map_; // key: graph_id, value: model_id
ProfSubscribeInfo subscribe_info_;
MsprofCtrlHandle ctrl_handle_;
};
} // namespace ge
#endif // GE_COMMON_PROFILING_PROFILING_MANAGER_H_

+ 3
- 0
inc/framework/common/profiling/ge_profiling.h View File

@@ -39,6 +39,8 @@ struct ProfCommandHandleData {
uint32_t modelId;
};

typedef int32_t (*MsprofCtrlHandle)(uint32_t dataType, void *data, uint32_t dataLen);

GE_FUNC_VISIBILITY ge::Status RegProfCtrlCallback(MsprofCtrlCallback func);
GE_FUNC_VISIBILITY ge::Status RegProfSetDeviceCallback(MsprofSetDeviceCallback func);
GE_FUNC_VISIBILITY ge::Status RegProfReporterCallback(MsprofReporterCallback func);
@@ -52,4 +54,5 @@ GE_FUNC_VISIBILITY ge::Status ProfSetStepInfo(uint64_t index_id, uint16_t tag_id

GE_FUNC_VISIBILITY ge::Status ProfGetDeviceFormGraphId(uint32_t graph_id, uint32_t &device_id);

GE_FUNC_VISIBILITY ge::Status ProfRegisterCtrlCallback(MsprofCtrlHandle func);
#endif // INC_FRAMEWORK_COMMON_GE_PROFILING_H_

Loading…
Cancel
Save