From 4e9407413c8f005e6aeb3043bb3609e3eac853eb Mon Sep 17 00:00:00 2001 From: likun104 Date: Mon, 21 Oct 2024 10:07:29 +0800 Subject: [PATCH 1/2] fix memleak and enable ASan for tf_adapter v2 --- tf_adapter_2.x/tests/CMakeLists.txt | 3 +++ tf_adapter_2.x/tests/cmake/acl/module.cmake | 17 +++++++++++--- tf_adapter_2.x/tests/cmake/aoe/module.cmake | 8 +++++++ .../tests/cmake/graph_engine/module.cmake | 22 ++++++++++++++----- tf_adapter_2.x/tests/ut/CMakeLists.txt | 6 +++-- 5 files changed, 46 insertions(+), 10 deletions(-) diff --git a/tf_adapter_2.x/tests/CMakeLists.txt b/tf_adapter_2.x/tests/CMakeLists.txt index 4ca02cae9..14ef3683f 100644 --- a/tf_adapter_2.x/tests/CMakeLists.txt +++ b/tf_adapter_2.x/tests/CMakeLists.txt @@ -30,6 +30,9 @@ foreach (COMPILE_FLAG ${CUSTOM_COMPILE_FLAGS}) set(CMAKE_CXX_FLAGS "${COMPILE_FLAG} ${CMAKE_CXX_FLAGS}") endforeach (COMPILE_FLAG) +set(TFADAPTER_COMMON_COMPILE_OPTION -g -O0 -fsanitize=address -fsanitize=leak -fsanitize-recover=address) +set(TFADAPTER_COMMON_LINK_OPTION -fsanitize=address -fsanitize=leak -fsanitize-recover=address) + include_directories(${ASCEND_INSTALLED_PATH}/opensdk/opensdk/include/ascendcl/external) # just for acl include_directories(${ASCEND_INSTALLED_PATH}/opensdk/opensdk/include/aoe) include_directories(${CMAKE_CURRENT_LIST_DIR}/stub/include) diff --git a/tf_adapter_2.x/tests/cmake/acl/module.cmake b/tf_adapter_2.x/tests/cmake/acl/module.cmake index 5a05d64d2..f59cb0b09 100644 --- a/tf_adapter_2.x/tests/cmake/acl/module.cmake +++ b/tf_adapter_2.x/tests/cmake/acl/module.cmake @@ -3,7 +3,18 @@ add_library(acl_libs INTERFACE) add_library(acl_stub STATIC ${CMAKE_CURRENT_LIST_DIR}/../../stub/acl_stub.cpp) target_include_directories(acl_stub PRIVATE - ${ASCEND_INSTALLED_PATH}/opensdk/opensdk/include/ascendcl/external - ${CMAKE_CURRENT_LIST_DIR}/../../stub/include) + ${ASCEND_INSTALLED_PATH}/opensdk/opensdk/include/ascendcl/external + ${CMAKE_CURRENT_LIST_DIR}/../../stub/include) -target_link_libraries(acl_libs INTERFACE acl_stub) +target_compile_options(acl_stub PRIVATE + ${TFADAPTER_COMMON_COMPILE_OPTION} +) + +target_link_libraries(acl_stub PRIVATE + ${TFADAPTER_COMMON_LINK_OPTION} +) + +target_link_libraries(acl_libs INTERFACE + ${TFADAPTER_COMMON_LINK_OPTION} + acl_stub +) diff --git a/tf_adapter_2.x/tests/cmake/aoe/module.cmake b/tf_adapter_2.x/tests/cmake/aoe/module.cmake index dd0403fa1..ddfef75e3 100644 --- a/tf_adapter_2.x/tests/cmake/aoe/module.cmake +++ b/tf_adapter_2.x/tests/cmake/aoe/module.cmake @@ -2,6 +2,14 @@ set(AOE_STUB_SRC ${CMAKE_CURRENT_LIST_DIR}/../../stub/aoe_stub.cpp) add_library(aoe_stub STATIC ${AOE_STUB_SRC}) +target_compile_options(aoe_stub PRIVATE ${TFADAPTER_COMMON_COMPILE_OPTION}) + +target_link_libraries(aoe_stub PRIVATE ${TFADAPTER_COMMON_LINK_OPTION}) + add_library(aoe_tuning SHARED ${AOE_STUB_SRC}) +target_compile_options(aoe_tuning PRIVATE ${TFADAPTER_COMMON_COMPILE_OPTION}) + +target_link_libraries(aoe_tuning PRIVATE ${TFADAPTER_COMMON_LINK_OPTION}) + add_dependencies(aoe_stub aoe_tuning) diff --git a/tf_adapter_2.x/tests/cmake/graph_engine/module.cmake b/tf_adapter_2.x/tests/cmake/graph_engine/module.cmake index 3630dd29d..200b6d88c 100644 --- a/tf_adapter_2.x/tests/cmake/graph_engine/module.cmake +++ b/tf_adapter_2.x/tests/cmake/graph_engine/module.cmake @@ -1,10 +1,22 @@ add_library(ge_libs INTERFACE) add_library(ge_stub STATIC - ${CMAKE_CURRENT_LIST_DIR}/../../stub/ge_stub.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../stub/parser_stub.cpp) + ${CMAKE_CURRENT_LIST_DIR}/../../stub/ge_stub.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../stub/parser_stub.cpp) target_include_directories(ge_stub PRIVATE - ${CMAKE_CURRENT_LIST_DIR}/../../npu_device/core - ${CMAKE_CURRENT_LIST_DIR}/../../tests/stub/include) -target_link_libraries(ge_libs INTERFACE ge_stub) + ${CMAKE_CURRENT_LIST_DIR}/../../npu_device/core + ${CMAKE_CURRENT_LIST_DIR}/../../tests/stub/include) + +target_compile_options(ge_stub PRIVATE + ${TFADAPTER_COMMON_COMPILE_OPTION} +) + +target_link_libraries(ge_stub PRIVATE + ${TFADAPTER_COMMON_LINK_OPTION} +) + +target_link_libraries(ge_libs INTERFACE + ${TFADAPTER_COMMON_LINK_OPTION} + ge_stub +) diff --git a/tf_adapter_2.x/tests/ut/CMakeLists.txt b/tf_adapter_2.x/tests/ut/CMakeLists.txt index 9de249e61..022ceedb1 100644 --- a/tf_adapter_2.x/tests/ut/CMakeLists.txt +++ b/tf_adapter_2.x/tests/ut/CMakeLists.txt @@ -7,10 +7,12 @@ file(GLOB_RECURSE TEST_SOURCES add_executable(adapter2_ut_main ${TEST_SOURCES}) target_compile_options(adapter2_ut_main PRIVATE - -O0 -g --coverage -fprofile-arcs -ftest-coverage) + ${TFADAPTER_COMMON_COMPILE_OPTION} + -O0 -g --coverage -fprofile-arcs -ftest-coverage) target_link_libraries(adapter2_ut_main PRIVATE - tensorflow_libs gtest_main acl_stub aoe_stub ge_stub c_sec ${PYTHON_LD_LIBRARY} -lrt -ldl -lutil) + ${TFADAPTER_COMMON_LINK_OPTION} + tensorflow_libs gtest_main acl_stub aoe_stub ge_stub c_sec ${PYTHON_LD_LIBRARY} -lrt -ldl -lutil) add_custom_target(adapter2_ut ALL COMMAND ./adapter2_ut_main -- Gitee From e3647736b048e5b2654a858a35386d6b85358240 Mon Sep 17 00:00:00 2001 From: likun104 Date: Mon, 21 Oct 2024 15:15:55 +0800 Subject: [PATCH 2/2] update build.sh --- build.sh | 4 ++-- tf_adapter_2.x/tests/CI_Build | 2 +- tf_adapter_2.x/tests/MyLSan.supp | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 tf_adapter_2.x/tests/MyLSan.supp diff --git a/build.sh b/build.sh index b557f98a9..5a8b8ee91 100755 --- a/build.sh +++ b/build.sh @@ -160,7 +160,7 @@ main() { '*/inc/*' '*/output/*' '*/usr/*' '*/Eigen/*' '*/absl/*' '*/google/*' '*/tensorflow/core/*' \ -o adapter1_coverage.info export LD_LIBRARY_PATH=${BASE_PATH}/tf_adapter_2.x/tests/build/:$LD_LIBRARY_PATH - bash ${BASE_PATH}/tf_adapter_2.x/tests/CI_Build adapter2_ut + LD_PRELOAD=$(gcc -print-file-name=libasan.so) bash ${BASE_PATH}/tf_adapter_2.x/tests/CI_Build adapter2_ut lcov -o coverage/coverage.info -a ${BASE_PATH}/tf_adapter_2.x/tests/build/ut/ut.coverage -a adapter1_coverage.info fi if [[ "X$ENABLE_TFADAPTER_ST" = "Xon" ]]; then @@ -183,7 +183,7 @@ main() { '*/inc/*' '*/output/*' '*/usr/*' '*/Eigen/*' '*/absl/*' '*/google/*' '*/tensorflow/core/*' \ -o adapter1_coverage.info export LD_LIBRARY_PATH=${BASE_PATH}/tf_adapter_2.x/tests/build/:$LD_LIBRARY_PATH - bash ${BASE_PATH}/tf_adapter_2.x/tests/CI_Build adapter2_st + LD_PRELOAD=$(gcc -print-file-name=libasan.so) bash ${BASE_PATH}/tf_adapter_2.x/tests/CI_Build adapter2_st lcov -o coverage/coverage.info -a ${BASE_PATH}/tf_adapter_2.x/tests/build/st/st.coverage -a adapter1_coverage.info fi logging "---------------- tfadapter build finished ----------------" diff --git a/tf_adapter_2.x/tests/CI_Build b/tf_adapter_2.x/tests/CI_Build index 0118c3369..0441a3304 100644 --- a/tf_adapter_2.x/tests/CI_Build +++ b/tf_adapter_2.x/tests/CI_Build @@ -23,6 +23,6 @@ cd build cmake .. -make "${TARGET}" -j8 +LSAN_OPTIONS=suppressions=$CONFIGURE_DIR/MyLSan.supp make "${TARGET}" -j8 deactivate diff --git a/tf_adapter_2.x/tests/MyLSan.supp b/tf_adapter_2.x/tests/MyLSan.supp new file mode 100644 index 000000000..ecf1b2f22 --- /dev/null +++ b/tf_adapter_2.x/tests/MyLSan.supp @@ -0,0 +1 @@ +leak:/usr/lib/gcc/x86_64-linux-gnu/7/libasan.so -- Gitee