set(ATVOSS_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/include)
set(ATVOSS_EXAMPLES_COMMON_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/common)
add_custom_target(atvoss_examples)
if(SOC STREQUAL "ascend950")
set(NPU_ARCH dav-3510)
else()
message(FATAL_ERROR
"SOC only supports ascend950, but get ${SOC}"
)
set(NPU_ARCH)
endif()
set(INCLUDE_DIRECTORIES
${ASCEND_INCLUDE_DIRS}
${ATVOSS_INCLUDE_DIRS}
${ATVOSS_EXAMPLES_COMMON_SOURCE_DIR}
)
set(LINK_DIRECTORIES
${ASCEND_DIR}/lib64
)
set(LINK_LIBRARIES
ascendcl
platform
register
tiling_api
runtime
)
set(COMPILE_OPTIONS
-O3
-fdiagnostics-color=always
-w
)
macro(atvoss_example_add_executable NAME)
unset(CMAKE_CXX_FLAGS)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_C_COMPILER ${BISHENG})
set(CMAKE_CXX_COMPILER ${BISHENG})
set(CMAKE_LINKER ${BISHENG})
message(STATUS "CMAKE_CURRENT_SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR}")
set(EXAMPLE_DESTINATION bin)
set(COMPILE_FLAGS "--npu-arch=${NPU_ARCH} -xasc ")
message(STATUS "COMPILE FLAGS: ${COMPILE_FLAGS}")
set(SOURCE_FILES ${ARGN})
set_source_files_properties(
${SOURCE_FILES} PROPERTIES
LANGUAGE CXX
COMPILE_FLAGS "${COMPILE_FLAGS}"
)
add_executable(${NAME} ${SOURCE_FILES})
set_target_properties(${NAME} PROPERTIES
LINK_DEPENDS_NO_SHARED ON
POSITION_INDEPENDENT_CODE ON
)
target_compile_options(${NAME} PRIVATE ${COMPILE_OPTIONS})
target_include_directories(${NAME} PRIVATE ${INCLUDE_DIRECTORIES})
target_link_directories(${NAME} PRIVATE ${LINK_DIRECTORIES})
target_link_libraries(${NAME} PRIVATE ${LINK_LIBRARIES})
add_dependencies(atvoss_examples ${NAME})
install(TARGETS ${NAME} DESTINATION ${EXAMPLE_DESTINATION} COMPONENT ${NAME})
install(TARGETS ${NAME} DESTINATION ${EXAMPLE_DESTINATION} COMPONENT atvoss_examples)
endmacro()
foreach(EXAMPLE
abs
rms_norm
muls
)
add_subdirectory(${EXAMPLE})
endforeach()