已合并
fix: 修复 LLT 测试插件和日志桩依赖 #4735
yelongjian创建于 24 天前
fix: 修复 LLT 测试插件和日志桩依赖 #4735
已合并
共 14 个文件变更+129-26
| @@ -437,6 +437,9 @@ static rtError_t MockRtGetSocSpec(const char *label, const char *key, char *valu | |||
| 437 | 437 | ||
| 438 | VOID *mmDlopen(const CHAR *fileName, INT32 mode) { | 438 | VOID *mmDlopen(const CHAR *fileName, INT32 mode) { |
| 439 | const std::string so_name = fileName ? fileName : ""; | 439 | const std::string so_name = fileName ? fileName : ""; |
| 440 | + if (so_name.find("liboptf_plugin_hccl.so") != std::string::npos) { | ||
| 441 | + return nullptr; | ||
| 442 | + } | ||
| 440 | if (so_name.find("libcce.so") != std::string::npos) { | 443 | if (so_name.find("libcce.so") != std::string::npos) { |
| 441 | return (void *)(libcce_name.data()); | 444 | return (void *)(libcce_name.data()); |
| 442 | }; | 445 | }; |
| @@ -17,6 +17,18 @@ generate_cann_protobuf(dump_proto PROTO_SRCS PROTO_HDRS ${PROTO_LIST} "--proto_p | |||
| 17 | 17 | ||
| 18 | add_library(profiler_stub SHARED src/profiler_stub.cc src/dump_stub.cc ${PROTO_SRCS}) | 18 | add_library(profiler_stub SHARED src/profiler_stub.cc src/dump_stub.cc ${PROTO_SRCS}) |
| 19 | 19 | ||
| 20 | +# Use the test dump implementation when runner targets are built for LLT. | ||
| 21 | +foreach(runner_target ge_runner ge_runner_v2) | ||
| 22 | + if (TARGET ${runner_target}) | ||
| 23 | + get_target_property(runner_link_libraries ${runner_target} LINK_LIBRARIES) | ||
| 24 | + list(REMOVE_ITEM runner_link_libraries ascend_dump) | ||
| 25 | + list(APPEND runner_link_libraries profiler_stub) | ||
| 26 | + set_target_properties(${runner_target} PROPERTIES | ||
| 27 | + LINK_LIBRARIES "${runner_link_libraries}" | ||
| 28 | + ) | ||
| 29 | + endif() | ||
| 30 | +endforeach() | ||
| 31 | + | ||
| 20 | add_dependencies(profiler_stub | 32 | add_dependencies(profiler_stub |
| 21 | dump_proto | 33 | dump_proto |
| 22 | ) | 34 | ) |
| @@ -12,7 +12,6 @@ | |||
| 12 | 12 | ||
| 13 | 13 | ||
| 14 | 14 | ||
| 15 | - | ||
| 16 | 15 | ||
| 17 | 16 | ||
| 18 | 17 | ||
| @@ -46,13 +45,6 @@ int CheckLogLevel(int moduleId, int level) { | |||
| 46 | return level >= DLOG_ERROR; | 45 | return level >= DLOG_ERROR; |
| 47 | } | 46 | } |
| 48 | 47 | ||
| 49 | -const std::map<int, std::string> LOG_LEVEL_STR_MAP{ | ||
| 50 | - {DLOG_DEBUG, "DEBUG"}, | ||
| 51 | - {DLOG_INFO, "INFO"}, | ||
| 52 | - {DLOG_WARN, "WARN"}, | ||
| 53 | - {DLOG_ERROR, "ERROR"}, | ||
| 54 | -}; | ||
| 55 | - | ||
| 56 | void DlogRecord(int moduleId, int level, const char *fmt, ...) { | 48 | void DlogRecord(int moduleId, int level, const char *fmt, ...) { |
| 57 | if (moduleId < 0 || moduleId >= INVLID_MOUDLE_ID) { | 49 | if (moduleId < 0 || moduleId >= INVLID_MOUDLE_ID) { |
| 58 | return; | 50 | return; |
| @@ -63,9 +55,21 @@ void DlogRecord(int moduleId, int level, const char *fmt, ...) { | |||
| 63 | int len; | 55 | int len; |
| 64 | char msg[MSG_LENGTH_STUB] = {0}; | 56 | char msg[MSG_LENGTH_STUB] = {0}; |
| 65 | std::string level_str = "NULL"; | 57 | std::string level_str = "NULL"; |
| 66 | - auto iter = LOG_LEVEL_STR_MAP.find(level); | 58 | + switch (level) { |
| 67 | - if (iter != LOG_LEVEL_STR_MAP.end()) { | 59 | + case DLOG_DEBUG: |
| 68 | - level_str = iter->second; | 60 | + level_str = "DEBUG"; |
| 61 | + break; | ||
| 62 | + case DLOG_INFO: | ||
| 63 | + level_str = "INFO"; | ||
| 64 | + break; | ||
| 65 | + case DLOG_WARN: | ||
| 66 | + level_str = "WARN"; | ||
| 67 | + break; | ||
| 68 | + case DLOG_ERROR: | ||
| 69 | + level_str = "ERROR"; | ||
| 70 | + break; | ||
| 71 | + default: | ||
| 72 | + break; | ||
| 69 | } | 73 | } |
| 70 | snprintf(msg, MSG_LENGTH_STUB, "[FE] [%s] ", level_str.c_str()); | 74 | snprintf(msg, MSG_LENGTH_STUB, "[FE] [%s] ", level_str.c_str()); |
| 71 | va_list ap; | 75 | va_list ap; |
| @@ -76,5 +76,13 @@ add_subdirectory(depends/op_tiling) | |||
| 76 | add_subdirectory(depends/trace) | 76 | add_subdirectory(depends/trace) |
| 77 | add_subdirectory(depends/ascendcl) | 77 | add_subdirectory(depends/ascendcl) |
| 78 | 78 | ||
| 79 | +# Redirect toolkit runtime dependencies to the TeFusion test stubs. | ||
| 80 | +set_target_properties(acl_rt PROPERTIES | ||
| 81 | + IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/depends/ascendcl/libascendcl_stub.so" | ||
| 82 | +) | ||
| 83 | +set_target_properties(runtime PROPERTIES | ||
| 84 | + IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/depends/runtime/libruntime_stub_fe.so" | ||
| 85 | +) | ||
| 86 | + | ||
| 79 | add_subdirectory(ut) | 87 | add_subdirectory(ut) |
| 80 | add_subdirectory(st) | 88 | add_subdirectory(st) |
| @@ -9,6 +9,7 @@ | |||
| 9 | # ----------------------------------------------------------------------------------------------------------- | 9 | # ----------------------------------------------------------------------------------------------------------- |
| 10 | 10 | ||
| 11 | add_library(ascendcl_stub SHARED src/ascendcl_stub.cc) | 11 | add_library(ascendcl_stub SHARED src/ascendcl_stub.cc) |
| 12 | +set_property(TARGET ascendcl_stub APPEND PROPERTY LINK_OPTIONS "-Wl,-soname,libacl_rt.so") | ||
| 12 | target_compile_options(ascendcl_stub PRIVATE -g) | 13 | target_compile_options(ascendcl_stub PRIVATE -g) |
| 13 | target_compile_definitions(ascendcl_stub PRIVATE | 14 | target_compile_definitions(ascendcl_stub PRIVATE |
| 14 | $<$<STREQUAL:${ENABLE_OPEN_SRC},True>:ONLY_COMPILE_OPEN_SRC> | 15 | $<$<STREQUAL:${ENABLE_OPEN_SRC},True>:ONLY_COMPILE_OPEN_SRC> |
| @@ -1457,6 +1457,25 @@ aclError aclrtGetMemInfo(aclrtMemAttr attr, size_t *free_size, size_t *total) { | |||
| 1457 | return ge::AclRuntimeStub::GetInstance()->aclrtGetMemInfo(attr, free_size, total); | 1457 | return ge::AclRuntimeStub::GetInstance()->aclrtGetMemInfo(attr, free_size, total); |
| 1458 | } | 1458 | } |
| 1459 | 1459 | ||
| 1460 | +aclError aclrtCtxSetSysParamOpt(aclSysParamOpt opt, int64_t value) { | ||
| 1461 | + return ACL_SUCCESS; | ||
| 1462 | +} | ||
| 1463 | + | ||
| 1464 | +aclError aclrtSetSysParamOpt(aclSysParamOpt opt, int64_t value) { | ||
| 1465 | + return ACL_SUCCESS; | ||
| 1466 | +} | ||
| 1467 | + | ||
| 1468 | +aclError aclrtHostRegister(void *ptr, uint64_t size, aclrtHostRegisterType type, void **devPtr) { | ||
| 1469 | + if (devPtr != nullptr) { | ||
| 1470 | + *devPtr = ptr; | ||
| 1471 | + } | ||
| 1472 | + return ACL_SUCCESS; | ||
| 1473 | +} | ||
| 1474 | + | ||
| 1475 | +aclError aclrtHostUnregister(void *ptr) { | ||
| 1476 | + return ACL_SUCCESS; | ||
| 1477 | +} | ||
| 1478 | + | ||
| 1460 | const char *aclrtGetSocName() { | 1479 | const char *aclrtGetSocName() { |
| 1461 | return ge::AclRuntimeStub::GetInstance()->aclrtGetSocName(); | 1480 | return ge::AclRuntimeStub::GetInstance()->aclrtGetSocName(); |
| 1462 | } | 1481 | } |
| @@ -14,6 +14,7 @@ set(FE_SRC_CPP | |||
| 14 | # compile for fe_st | 14 | # compile for fe_st |
| 15 | add_library(runtime_stub_fe SHARED | 15 | add_library(runtime_stub_fe SHARED |
| 16 | ${FE_SRC_CPP}) | 16 | ${FE_SRC_CPP}) |
| 17 | +set_property(TARGET runtime_stub_fe APPEND PROPERTY LINK_OPTIONS "-Wl,-soname,libruntime.so") | ||
| 17 | 18 | ||
| 18 | #target_include_directories(runtime_stub_fe PRIVATE | 19 | #target_include_directories(runtime_stub_fe PRIVATE |
| 19 | # ) | 20 | # ) |
| @@ -12,7 +12,6 @@ | |||
| 12 | 12 | ||
| 13 | 13 | ||
| 14 | 14 | ||
| 15 | - | ||
| 16 | 15 | ||
| 17 | 16 | ||
| 18 | 17 | ||
| @@ -46,13 +45,6 @@ int CheckLogLevel(int moduleId, int level) { | |||
| 46 | return level >= DLOG_ERROR; | 45 | return level >= DLOG_ERROR; |
| 47 | } | 46 | } |
| 48 | 47 | ||
| 49 | -const std::map<int, std::string> LOG_LEVEL_STR_MAP{ | ||
| 50 | - {DLOG_DEBUG, "DEBUG"}, | ||
| 51 | - {DLOG_INFO, "INFO"}, | ||
| 52 | - {DLOG_WARN, "WARN"}, | ||
| 53 | - {DLOG_ERROR, "ERROR"}, | ||
| 54 | -}; | ||
| 55 | - | ||
| 56 | void DlogRecord(int moduleId, int level, const char *fmt, ...) { | 48 | void DlogRecord(int moduleId, int level, const char *fmt, ...) { |
| 57 | if (moduleId < 0 || moduleId >= INVLID_MOUDLE_ID) { | 49 | if (moduleId < 0 || moduleId >= INVLID_MOUDLE_ID) { |
| 58 | return; | 50 | return; |
| @@ -63,9 +55,21 @@ void DlogRecord(int moduleId, int level, const char *fmt, ...) { | |||
| 63 | int len; | 55 | int len; |
| 64 | char msg[MSG_LENGTH_STUB] = {0}; | 56 | char msg[MSG_LENGTH_STUB] = {0}; |
| 65 | std::string level_str = "NULL"; | 57 | std::string level_str = "NULL"; |
| 66 | - auto iter = LOG_LEVEL_STR_MAP.find(level); | 58 | + switch (level) { |
| 67 | - if (iter != LOG_LEVEL_STR_MAP.end()) { | 59 | + case DLOG_DEBUG: |
| 68 | - level_str = iter->second; | 60 | + level_str = "DEBUG"; |
| 61 | + break; | ||
| 62 | + case DLOG_INFO: | ||
| 63 | + level_str = "INFO"; | ||
| 64 | + break; | ||
| 65 | + case DLOG_WARN: | ||
| 66 | + level_str = "WARN"; | ||
| 67 | + break; | ||
| 68 | + case DLOG_ERROR: | ||
| 69 | + level_str = "ERROR"; | ||
| 70 | + break; | ||
| 71 | + default: | ||
| 72 | + break; | ||
| 69 | } | 73 | } |
| 70 | snprintf(msg, MSG_LENGTH_STUB, "[FE] [%s] ", level_str.c_str()); | 74 | snprintf(msg, MSG_LENGTH_STUB, "[FE] [%s] ", level_str.c_str()); |
| 71 | va_list ap; | 75 | va_list ap; |
| @@ -71,6 +71,7 @@ target_include_directories(tefusion_st PRIVATE | |||
| 71 | ${ASCEND_INSTALL_PATH}/include/experiment/metadef) | 71 | ${ASCEND_INSTALL_PATH}/include/experiment/metadef) |
| 72 | 72 | ||
| 73 | target_compile_options(tefusion_st PRIVATE | 73 | target_compile_options(tefusion_st PRIVATE |
| 74 | + $<$<STREQUAL:${ENABLE_GCOV},true>:--coverage> | ||
| 74 | -D__OPTIMIZER_KT_TEST__ | 75 | -D__OPTIMIZER_KT_TEST__ |
| 75 | -DDAVINCI_CLOUD | 76 | -DDAVINCI_CLOUD |
| 76 | -Dgoogle=ascend_private) | 77 | -Dgoogle=ascend_private) |
| @@ -83,7 +84,18 @@ target_link_directories(tefusion_st PRIVATE | |||
| 83 | ${ASCEND_INSTALL_PATH}/devlib | 84 | ${ASCEND_INSTALL_PATH}/devlib |
| 84 | ) | 85 | ) |
| 85 | 86 | ||
| 87 | +target_compile_definitions(tefusion_st PRIVATE | ||
| 88 | + $<$<STREQUAL:${ENABLE_GCOV},true>:GE_TEFUSION_GCOV> | ||
| 89 | +) | ||
| 90 | + | ||
| 91 | +target_link_options(tefusion_st PRIVATE | ||
| 92 | + -Wl,--disable-new-dtags | ||
| 93 | + -Wl,-rpath,${CMAKE_BINARY_DIR}/tests/engines/te_fusion/depends/ascendcl | ||
| 94 | + -Wl,-rpath,${CMAKE_BINARY_DIR}/tests/engines/te_fusion/depends/runtime | ||
| 95 | +) | ||
| 96 | + | ||
| 86 | target_link_libraries(tefusion_st PRIVATE | 97 | target_link_libraries(tefusion_st PRIVATE |
| 98 | + $<$<STREQUAL:${ENABLE_GCOV},true>:--coverage> | ||
| 87 | msprof_headers | 99 | msprof_headers |
| 88 | cce_headers | 100 | cce_headers |
| 89 | runtime_headers | 101 | runtime_headers |
| @@ -127,4 +139,4 @@ target_link_libraries(tefusion_st PRIVATE | |||
| 127 | fusion_pass | 139 | fusion_pass |
| 128 | intf_llt_pub | 140 | intf_llt_pub |
| 129 | ge_common_base | 141 | ge_common_base |
| 130 | - acl_rt) | 142 | + ascendcl_stub) |
| @@ -16,6 +16,10 @@ | |||
| 16 | 16 | ||
| 17 | using namespace std; | 17 | using namespace std; |
| 18 | 18 | ||
| 19 | + | ||
| 20 | +extern "C" void __gcov_dump(void); | ||
| 21 | + | ||
| 22 | + | ||
| 19 | int main(int argc, char **argv) { | 23 | int main(int argc, char **argv) { |
| 20 | string stub_cann_path = fe::GetCodeDir() + "/tests/engines/nn_engine/depends/CANN_910b_stub/cann"; | 24 | string stub_cann_path = fe::GetCodeDir() + "/tests/engines/nn_engine/depends/CANN_910b_stub/cann"; |
| 21 | fe::EnvVarGuard cann_guard(MM_ENV_ASCEND_HOME_PATH, stub_cann_path.c_str()); | 25 | fe::EnvVarGuard cann_guard(MM_ENV_ASCEND_HOME_PATH, stub_cann_path.c_str()); |
| @@ -28,5 +32,8 @@ int main(int argc, char **argv) { | |||
| 28 | cann_guard.Restore(); | 32 | cann_guard.Restore(); |
| 29 | opp_guard.Restore(); | 33 | opp_guard.Restore(); |
| 30 | int ret = RUN_ALL_TESTS(); | 34 | int ret = RUN_ALL_TESTS(); |
| 31 | - return ret; | 35 | +#ifdef GE_TEFUSION_GCOV |
| 36 | + __gcov_dump(); | ||
| 37 | + | ||
| 38 | + std::_Exit(ret); | ||
| 32 | } | 39 | } |
| @@ -71,6 +71,7 @@ target_include_directories(tefusion_ut PRIVATE | |||
| 71 | ${TEFUSION_TEST_ROOT_PATH}) | 71 | ${TEFUSION_TEST_ROOT_PATH}) |
| 72 | 72 | ||
| 73 | target_compile_options(tefusion_ut PRIVATE | 73 | target_compile_options(tefusion_ut PRIVATE |
| 74 | + $<$<STREQUAL:${ENABLE_GCOV},true>:--coverage> | ||
| 74 | $<$<STREQUAL:${ENABLE_ASAN},true>:-fsanitize=address -fsanitize-recover=address,all -fno-omit-frame-pointer -g> | 75 | $<$<STREQUAL:${ENABLE_ASAN},true>:-fsanitize=address -fsanitize-recover=address,all -fno-omit-frame-pointer -g> |
| 75 | -D__OPTIMIZER_KT_TEST__ | 76 | -D__OPTIMIZER_KT_TEST__ |
| 76 | -DDAVINCI_CLOUD | 77 | -DDAVINCI_CLOUD |
| @@ -84,7 +85,18 @@ target_link_directories(tefusion_ut PRIVATE | |||
| 84 | ${ASCEND_INSTALL_PATH}/devlib | 85 | ${ASCEND_INSTALL_PATH}/devlib |
| 85 | ) | 86 | ) |
| 86 | 87 | ||
| 88 | +target_compile_definitions(tefusion_ut PRIVATE | ||
| 89 | + $<$<STREQUAL:${ENABLE_GCOV},true>:GE_TEFUSION_GCOV> | ||
| 90 | +) | ||
| 91 | + | ||
| 92 | +target_link_options(tefusion_ut PRIVATE | ||
| 93 | + -Wl,--disable-new-dtags | ||
| 94 | + -Wl,-rpath,${CMAKE_BINARY_DIR}/tests/engines/te_fusion/depends/ascendcl | ||
| 95 | + -Wl,-rpath,${CMAKE_BINARY_DIR}/tests/engines/te_fusion/depends/runtime | ||
| 96 | +) | ||
| 97 | + | ||
| 87 | target_link_libraries(tefusion_ut PRIVATE | 98 | target_link_libraries(tefusion_ut PRIVATE |
| 99 | + $<$<STREQUAL:${ENABLE_GCOV},true>:--coverage> | ||
| 88 | $<$<STREQUAL:${ENABLE_ASAN},true>:-fsanitize=address> | 100 | $<$<STREQUAL:${ENABLE_ASAN},true>:-fsanitize=address> |
| 89 | air_headers | 101 | air_headers |
| 90 | ge_metadef_headers | 102 | ge_metadef_headers |
| @@ -126,7 +138,7 @@ target_link_libraries(tefusion_ut PRIVATE | |||
| 126 | aicore_utils | 138 | aicore_utils |
| 127 | fe | 139 | fe |
| 128 | fusion_pass | 140 | fusion_pass |
| 129 | - acl_rt | 141 | + ascendcl_stub |
| 130 | graph_base | 142 | graph_base |
| 131 | ge_common_base | 143 | ge_common_base |
| 132 | GTestShared::gmock | 144 | GTestShared::gmock |
| @@ -28,6 +28,10 @@ | |||
| 28 | 28 | ||
| 29 | using namespace std; | 29 | using namespace std; |
| 30 | 30 | ||
| 31 | + | ||
| 32 | +extern "C" void __gcov_dump(void); | ||
| 33 | + | ||
| 34 | + | ||
| 31 | int main(int argc, char **argv) { | 35 | int main(int argc, char **argv) { |
| 32 | string stub_cann_path = fe::GetCodeDir() + "/tests/engines/nn_engine/depends/CANN_910b_stub/cann"; | 36 | string stub_cann_path = fe::GetCodeDir() + "/tests/engines/nn_engine/depends/CANN_910b_stub/cann"; |
| 33 | fe::EnvVarGuard cann_guard(MM_ENV_ASCEND_HOME_PATH, stub_cann_path.c_str()); | 37 | fe::EnvVarGuard cann_guard(MM_ENV_ASCEND_HOME_PATH, stub_cann_path.c_str()); |
| @@ -40,5 +44,8 @@ int main(int argc, char **argv) { | |||
| 40 | cann_guard.Restore(); | 44 | cann_guard.Restore(); |
| 41 | opp_guard.Restore(); | 45 | opp_guard.Restore(); |
| 42 | int ret = RUN_ALL_TESTS(); | 46 | int ret = RUN_ALL_TESTS(); |
| 43 | - return ret; | 47 | +#ifdef GE_TEFUSION_GCOV |
| 48 | + __gcov_dump(); | ||
| 49 | + | ||
| 50 | + std::_Exit(ret); | ||
| 44 | } | 51 | } |
| @@ -247,6 +247,7 @@ target_link_options(ge_common_atc PRIVATE | |||
| 247 | 247 | ||
| 248 | target_link_libraries(ge_common_atc | 248 | target_link_libraries(ge_common_atc |
| 249 | intf_llt_pub | 249 | intf_llt_pub |
| 250 | + mmpa_stub | ||
| 250 | ascendcl_stub | 251 | ascendcl_stub |
| 251 | -Wl,-z,muldefs | 252 | -Wl,-z,muldefs |
| 252 | ge_compiler | 253 | ge_compiler |
| @@ -33,8 +33,20 @@ | |||
| 33 | 33 | ||
| 34 | 34 | ||
| 35 | 35 | ||
| 36 | + | ||
| 37 | + | ||
| 36 | 38 | ||
| 37 | 39 | ||
| 40 | +extern "C" void *dlopen(const char *file_name, int mode) { | ||
| 41 | + if (file_name != nullptr && strstr(file_name, "liboptf_plugin_hccl.so") != nullptr) { | ||
| 42 | + return nullptr; | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + using DlopenFunc = void *(*)(const char *, int); | ||
| 46 | + static DlopenFunc real_dlopen = reinterpret_cast<DlopenFunc>(dlsym(RTLD_NEXT, "dlopen")); | ||
| 47 | + return real_dlopen(file_name, mode); | ||
| 48 | +} | ||
| 49 | + | ||
| 38 | DECLARE_bool(help); | 50 | DECLARE_bool(help); |
| 39 | DECLARE_bool(raw_ge_options_ignore_unsupported); | 51 | DECLARE_bool(raw_ge_options_ignore_unsupported); |
| 40 | DECLARE_int32(virtual_type); | 52 | DECLARE_int32(virtual_type); |