已合并
fix: 修复 LLT 测试插件和日志桩依赖 #4735
fix: 修复 LLT 测试插件和日志桩依赖 #4735
已合并
yelongjian创建于 24 天前
共 14 个文件变更+129-26
@@ -437,6 +437,9 @@ static rtError_t MockRtGetSocSpec(const char *label, const char *key, char *valu
437 437 
438VOID *mmDlopen(const CHAR *fileName, INT32 mode) {438VOID *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 
18add_library(profiler_stub SHARED src/profiler_stub.cc src/dump_stub.cc ${PROTO_SRCS})18add_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+ 
20add_dependencies(profiler_stub32add_dependencies(profiler_stub
21 dump_proto33 dump_proto
22 )34 )
@@ -12,7 +12,6 @@
12#include <fstream>12#include <fstream>
13#include <string.h>13#include <string.h>
14#include <stdarg.h>14#include <stdarg.h>
15-#include <map>
16 15 
17#define MSG_LENGTH_STUB (1024)16#define MSG_LENGTH_STUB (1024)
18#define SET_MOUDLE_ID_MAP_NAME(x) {#x, x}17#define SET_MOUDLE_ID_MAP_NAME(x) {#x, x}
@@ -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- 
56void DlogRecord(int moduleId, int level, const char *fmt, ...) {48void 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)
76add_subdirectory(depends/trace)76add_subdirectory(depends/trace)
77add_subdirectory(depends/ascendcl)77add_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+ 
79add_subdirectory(ut)87add_subdirectory(ut)
80add_subdirectory(st)88add_subdirectory(st)
@@ -9,6 +9,7 @@
9# -----------------------------------------------------------------------------------------------------------9# -----------------------------------------------------------------------------------------------------------
10 10 
11add_library(ascendcl_stub SHARED src/ascendcl_stub.cc)11add_library(ascendcl_stub SHARED src/ascendcl_stub.cc)
12+set_property(TARGET ascendcl_stub APPEND PROPERTY LINK_OPTIONS "-Wl,-soname,libacl_rt.so")
12target_compile_options(ascendcl_stub PRIVATE -g)13target_compile_options(ascendcl_stub PRIVATE -g)
13target_compile_definitions(ascendcl_stub PRIVATE14target_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+ 
1460const char *aclrtGetSocName() {1479const 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_st14# compile for fe_st
15add_library(runtime_stub_fe SHARED15add_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 PRIVATE19#target_include_directories(runtime_stub_fe PRIVATE
19# )20# )
@@ -12,7 +12,6 @@
12#include <fstream>12#include <fstream>
13#include <string.h>13#include <string.h>
14#include <stdarg.h>14#include <stdarg.h>
15-#include <map>
16 15 
17#define MSG_LENGTH_STUB (1024)16#define MSG_LENGTH_STUB (1024)
18#define SET_MOUDLE_ID_MAP_NAME(x) {#x, x}17#define SET_MOUDLE_ID_MAP_NAME(x) {#x, x}
@@ -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- 
56void DlogRecord(int moduleId, int level, const char *fmt, ...) {48void 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 
73target_compile_options(tefusion_st PRIVATE73target_compile_options(tefusion_st PRIVATE
74+ $<$<STREQUAL:${ENABLE_GCOV},true>:--coverage>
74 -D__OPTIMIZER_KT_TEST__75 -D__OPTIMIZER_KT_TEST__
75 -DDAVINCI_CLOUD76 -DDAVINCI_CLOUD
76 -Dgoogle=ascend_private)77 -Dgoogle=ascend_private)
@@ -83,7 +84,18 @@ target_link_directories(tefusion_st PRIVATE
83 ${ASCEND_INSTALL_PATH}/devlib84 ${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+ 
86target_link_libraries(tefusion_st PRIVATE97target_link_libraries(tefusion_st PRIVATE
98+ $<$<STREQUAL:${ENABLE_GCOV},true>:--coverage>
87 msprof_headers99 msprof_headers
88 cce_headers100 cce_headers
89 runtime_headers101 runtime_headers
@@ -127,4 +139,4 @@ target_link_libraries(tefusion_st PRIVATE
127 fusion_pass139 fusion_pass
128 intf_llt_pub140 intf_llt_pub
129 ge_common_base141 ge_common_base
130- acl_rt)142+ ascendcl_stub)
@@ -16,6 +16,10 @@
16 16 
17using namespace std;17using namespace std;
18 18 
19+#ifdef GE_TEFUSION_GCOV
20+extern "C" void __gcov_dump(void);
21+#endif
22+ 
19int main(int argc, char **argv) {23int 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+#endif
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 
73target_compile_options(tefusion_ut PRIVATE73target_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_CLOUD77 -DDAVINCI_CLOUD
@@ -84,7 +85,18 @@ target_link_directories(tefusion_ut PRIVATE
84 ${ASCEND_INSTALL_PATH}/devlib85 ${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+ 
87target_link_libraries(tefusion_ut PRIVATE98target_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_headers101 air_headers
90 ge_metadef_headers102 ge_metadef_headers
@@ -126,7 +138,7 @@ target_link_libraries(tefusion_ut PRIVATE
126 aicore_utils138 aicore_utils
127 fe139 fe
128 fusion_pass140 fusion_pass
129- acl_rt141+ ascendcl_stub
130 graph_base142 graph_base
131 ge_common_base143 ge_common_base
132 GTestShared::gmock144 GTestShared::gmock
@@ -28,6 +28,10 @@
28 28 
29using namespace std;29using namespace std;
30 30 
31+#ifdef GE_TEFUSION_GCOV
32+extern "C" void __gcov_dump(void);
33+#endif
34+ 
31int main(int argc, char **argv) {35int 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+#endif
50+ std::_Exit(ret);
44}51}
@@ -247,6 +247,7 @@ target_link_options(ge_common_atc PRIVATE
247 247 
248target_link_libraries(ge_common_atc248target_link_libraries(ge_common_atc
249 intf_llt_pub249 intf_llt_pub
250+ mmpa_stub
250 ascendcl_stub251 ascendcl_stub
251 -Wl,-z,muldefs252 -Wl,-z,muldefs
252 ge_compiler253 ge_compiler
@@ -33,8 +33,20 @@
33#include "register/amct_registry.h"33#include "register/amct_registry.h"
34 34 
35#include <fstream>35#include <fstream>
36+#include <dlfcn.h>
37+#include <string.h>
36#include <vector>38#include <vector>
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+ 
38DECLARE_bool(help);50DECLARE_bool(help);
39DECLARE_bool(raw_ge_options_ignore_unsupported);51DECLARE_bool(raw_ge_options_ignore_unsupported);
40DECLARE_int32(virtual_type);52DECLARE_int32(virtual_type);