diff --git a/CMakeLists.txt b/CMakeLists.txt index a106f30..9241626 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,15 +1,19 @@ -cmake_minimum_required (VERSION 3.3) +cmake_minimum_required (VERSION 3.14) project(tim-vx) -set(CMAKE_C_FLAGS "-Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Werror -fPIC -Wno-enum-conversion") -set(CMAKE_CXX_FLAGS "--std=c++14 -Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Werror -fPIC") +OPTION(TIM_VX_ENABLE_TEST "Build the unit test" ON) +OPTION(TIM_VX_ENABLE_LAYOUT_INFER "Enable layout inference support" ON) -OPTION(ENABLE_LAYOUT_INFER "add layout inference support" ON) +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_POSITION_INDEPENDENT_CODE ON) +set(CMAKE_C_FLAGS "-Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Werror -Wno-enum-conversion") +set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Werror") + +if(NOT DEFINED CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "..." FORCE) +endif() set(CMAKE_C_VISIBILITY_PRESET hidden) -set(OVXLIB_API_ATTR "__attribute__\(\(visibility\(\"default\"\)\)\)") -message(${OVXLIB_API_ATTR}) -add_definitions(-DOVXLIB_API=${OVXLIB_API_ATTR}) if(EXTERNAL_VIV_SDK AND EXISTS ${EXTERNAL_VIV_SDK}) # this is for internal development purpose @@ -26,6 +30,18 @@ else() endif() endif() +if(TIM_VX_ENABLE_TEST) + include(FetchContent) + FetchContent_Declare( + googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG release-1.10.0 + ) + + set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) + FetchContent_MakeAvailable(googletest) +endif() + include_directories(${PROJECT_SOURCE_DIR}/include/tim/vx) include_directories(${OVXDRV_INCLUDE_DIRS}) diff --git a/include/tim/transform/layout_inference.h b/include/tim/transform/layout_inference.h index a106e65..93f2efc 100644 --- a/include/tim/transform/layout_inference.h +++ b/include/tim/transform/layout_inference.h @@ -27,14 +27,25 @@ #include #include -#include "tim/vx/context.h" -#include "tim/vx/graph.h" namespace tim { + +namespace vx { + class Context; + class Graph; + class Tensor; + class Operation; +} + namespace transform { -std::pair, /* infer graph */ - std::map, - std::shared_ptr> /* graph io tensor map */> +std::pair< + /*graph after layout inference*/ + std::shared_ptr, + /* tensor mapping between original graph and graph after layout infer*/ + std::map< + std::shared_ptr, + std::shared_ptr> + > LayoutInference(const std::shared_ptr& src_graph, std::shared_ptr& ctx); diff --git a/src/tim/CMakeLists.txt b/src/tim/CMakeLists.txt index 8edfee7..8da1b4b 100644 --- a/src/tim/CMakeLists.txt +++ b/src/tim/CMakeLists.txt @@ -18,7 +18,7 @@ include_directories(${PROJECT_SOURCE_DIR}/include/tim/vx) include_directories(${PROJECT_SOURCE_DIR}/src/tim/vx) include_directories(${PROJECT_SOURCE_DIR}/src/tim/vx/internal/include) -if(ENABLE_LAYOUT_INFER) +if(TIM_VX_ENABLE_LAYOUT_INFER) include_directories(${PROJECT_SOURCE_DIR}/) aux_source_directory(./transform LAYOUT_INFER_FRAMEWORK_SRCS) @@ -30,9 +30,13 @@ if(ENABLE_LAYOUT_INFER) ) endif() +set(UT_SRC) +aux_source_directory(./vx/ut VX_UT_SRC) +list(APPEND UT_SRC ${VX_UT_SRC}) foreach(src_file ${SRC}) if(${src_file} MATCHES ".*_test\.cc") list(REMOVE_ITEM SRC ${src_file}) + list(APPEND UT_SRC ${src_file}) endif() endforeach() @@ -45,10 +49,19 @@ target_link_libraries(${TARGET_NAME}-static PRIVATE -Wl,--whole-archive tim_internal -Wl,--no-whole-archive) install(TARGETS ${TARGET_NAME} ${TARGET_NAME}-static - DESTINATION ${CMAKE_BINARY_DIR}/install/lib) + DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) -install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/tim/vx DESTINATION ${CMAKE_BINARY_DIR}/install/include/tim/) +install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/tim/vx DESTINATION ${CMAKE_INSTALL_PREFIX}/include/tim/) -if(ENABLE_LAYOUT_INFER) - install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/tim/transform DESTINATION ${CMAKE_BINARY_DIR}/install/include/tim/) +if(TIM_VX_ENABLE_LAYOUT_INFER) + install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/tim/transform DESTINATION ${CMAKE_INSTALL_PREFIX}/include/tim/) +endif() + +if (TIM_VX_ENABLE_TEST) + include(GoogleTest) + + add_executable(unit_test ${UT_SRC}) + target_link_libraries(unit_test gtest gtest_main ${TARGET_NAME}-static) + + install(TARGETS unit_test DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/) endif() diff --git a/src/tim/transform/layout_inference.cc b/src/tim/transform/layout_inference.cc index b2b252d..cc597b4 100644 --- a/src/tim/transform/layout_inference.cc +++ b/src/tim/transform/layout_inference.cc @@ -24,6 +24,7 @@ #include "permute_vector.h" #include "layout_infer_context.h" + #include "tim/transform/layout_inference.h" #include "ops/conv2d_layout_inference.h" #include "ops/reduce_layout_inference.h" @@ -48,6 +49,10 @@ #include #include +#include "tim/vx/context.h" +#include "tim/vx/graph.h" +#include "tim/vx/operation.h" + namespace tim { namespace transform { namespace layout_inference_impl { diff --git a/src/tim/vx/ut/context_test.cc b/src/tim/vx/context_test.cc similarity index 100% rename from src/tim/vx/ut/context_test.cc rename to src/tim/vx/context_test.cc diff --git a/src/tim/vx/ut/graph_test.cc b/src/tim/vx/graph_test.cc similarity index 100% rename from src/tim/vx/ut/graph_test.cc rename to src/tim/vx/graph_test.cc diff --git a/src/tim/vx/internal/CMakeLists.txt b/src/tim/vx/internal/CMakeLists.txt index ee5a54d..4d30f7b 100644 --- a/src/tim/vx/internal/CMakeLists.txt +++ b/src/tim/vx/internal/CMakeLists.txt @@ -1,6 +1,8 @@ message("src/tim/vx/internal") set(lib_name "tim_internal") +set(OVXLIB_API_ATTR "__attribute__\(\(visibility\(\"default\"\)\)\)") +add_definitions(-DOVXLIB_API=${OVXLIB_API_ATTR}) aux_source_directory(src INTERNAL_SRC) aux_source_directory(src/kernel INTERNAL_KERNEL) diff --git a/src/tim/vx/ut/relational_operations_test.cc b/src/tim/vx/ops/relational_operations_test.cc similarity index 100% rename from src/tim/vx/ut/relational_operations_test.cc rename to src/tim/vx/ops/relational_operations_test.cc diff --git a/src/tim/vx/ut/reorg_test.cc b/src/tim/vx/ops/reorg_test.cc similarity index 100% rename from src/tim/vx/ut/reorg_test.cc rename to src/tim/vx/ops/reorg_test.cc diff --git a/src/tim/vx/ut/simple_operations_test.cc b/src/tim/vx/ops/simple_operations_test.cc similarity index 100% rename from src/tim/vx/ut/simple_operations_test.cc rename to src/tim/vx/ops/simple_operations_test.cc