1 Star 0 Fork 130

yangpengfei / akg

forked from MindSpore / akg-full-log 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
CMakeLists.txt 8.57 KB
一键复制 编辑 原始数据 按行查看 历史
lvwenyuan 提交于 2020-09-10 17:21 . autotune reduction schedule
# Copyright 2020 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 3.14)
if(POLICY CMP0054)
cmake_policy(SET CMP0054 NEW)
endif()
if(POLICY CMP0072)
cmake_policy(SET CMP0072 NEW)
endif()
project(akg C CXX)
set(AKG_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
# Find gmp
find_path(GMP_INCLUDE_DIR NAME gmp.h HINTS /usr /usr/local PATH_SUFFIXES include include/x86_64-linux-gnu)
find_library(GMP_LIBRARY NAMES gmp HINTS /usr /usr/local PATH_SUFFIXES lib lib64 lib/x86_64-linux-gnu)
if(NOT GMP_INCLUDE_DIR)
message(FATAL_ERROR "Please export CMAKE_INCLUDE_PATH to directory where gmp.h locates at.")
endif()
if(NOT GMP_LIBRARY)
message(FATAL_ERROR "Please export CMAKE_LIBRARY_PATH to directory where libgmp.so locates at.")
endif()
include(cmake/RT.cmake)
include(cmake/utils.cmake)
include(cmake/external_libs/isl.cmake)
set(TVM_DIR "${AKG_SOURCE_DIR}/third_party/incubator-tvm")
if(NOT ENABLE_AKG)
message("-- Build akg alone")
include(cmake/external_libs/gtest.cmake)
add_subdirectory(${AKG_SOURCE_DIR}/tests/unittest_cpp)
set(GTEST_DIR "${CMAKE_CURRENT_BINARY_DIR}/_deps/gtest-src")
set(UNITTEST_DIR "${AKG_SOURCE_DIR}/tests/unittest_cpp")
endif()
file(COPY ${AKG_SOURCE_DIR}/python/akg DESTINATION
${CMAKE_CURRENT_BINARY_DIR})
# Utility functions
include(${TVM_DIR}/cmake/util/Util.cmake)
tvm_option(USE_CCE_RT "Build with cce with runtime support" OFF)
tvm_option(USE_CCE_RT_SIM "Build cce with simulate runtime support" OFF)
tvm_option(USE_KC_AIR "Build cce with kc air rpc support" OFF)
tvm_option(USE_ASAN "Build with AddressSanitizer" OFF)
tvm_option(USE_CUDA "Build with CUDA" OFF)
tvm_option(USE_CUDNN "Build with cuDNN" OFF)
tvm_option(USE_LLVM "Build with LLVM" OFF)
tvm_option(
USE_DEFAULT_LOG
"Use Customize log to eliminate useless log. If you want to enable defalut log, set this option to ON"
OFF)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# include directories
include_directories(AFTER "${TVM_DIR}/include")
include_directories(AFTER "${TVM_DIR}")
include_directories(AFTER "${TVM_DIR}/src")
include_directories(AFTER "${TVM_DIR}/src/schedule")
include_directories(AFTER "${AKG_SOURCE_DIR}/src")
include_directories(AFTER "${AKG_SOURCE_DIR}/src/include")
# cce rt
include_directories(AFTER "${AKG_SOURCE_DIR}/third_party/fwkacllib/inc")
include_directories(AFTER "${AKG_SOURCE_DIR}/third_party/fwkacllib/inc/toolchain")
include_directories(AFTER "${TVM_DIR}/3rdparty/dmlc-core/include")
include_directories(AFTER "${TVM_DIR}/3rdparty/dlpack/include")
include_directories(AFTER "${TVM_DIR}/3rdparty/compiler-rt")
include_directories(AFTER "${TVM_DIR}/3rdparty/rang/include")
include_directories(AFTER "${TVM_DIR}/3rdparty/picojson")
# initial variables
set(TVM_LINKER_LIBS )
add_definitions(-DPICOJSON_USE_INT64=1)
add_definitions(-DDMLC_LOG_CUSTOMIZE=1)
if(USE_AKG_LOG)
add_definitions(-DUSE_AKG_LOG=1)
endif()
# Generic compilation options
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag("-std=c++11" SUPPORT_CXX11)
if(NOT SUPPORT_CXX11)
message(
FATAL_ERROR "-- please choose a compiler which support C++ 11 standard")
endif()
check_cxx_compiler_flag("-march=native" NATIVE_BUILD)
if(NATIVE_BUILD AND ENABLE_NATIVE_BUILD)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
endif()
set(CMAKE_SKIP_RPATH TRUE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pipe -Wall -fPIC -fstack-protector-all")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-z,relro,-z,now,-z,noexecstack")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pipe -Wall -fPIC -fstack-protector-all")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-z,relro,-z,now,-z,noexecstack")
if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
message("-- Build in Debug mode")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -g -rdynamic")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g -rdynamic")
else()
message("-- Build in Release mode")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -D_FORTIFY_SOURCE=2 -Werror")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -D_FORTIFY_SOURCE=2 -Werror")
endif()
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_CXX_COMPILER_VERSION
VERSION_GREATER 7.0)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -faligned-new")
endif()
if(USE_ASAN)
set(CMAKE_C_FLAGS
"-fsanitize=address -fno-omit-frame-pointer ${CMAKE_C_FLAGS}")
set(CMAKE_CXX_FLAGS
"-fsanitize=address -fno-omit-frame-pointer ${CMAKE_CXX_FLAGS}")
endif()
# add source group
file(GLOB_RECURSE GROUP_SOURCE "${TVM_DIR}/src/*.cc" "src/*.cc")
file(GLOB_RECURSE GROUP_INCLUDE "${TVM_DIR}/src/*.h"
"${TVM_DIR}/include/*.h" "src/*.h" "include/*.h")
assign_source_group("Source" ${GROUP_SOURCE})
assign_source_group("Include" ${GROUP_INCLUDE})
# Source file lists
file(
GLOB
COMPILER_SRCS
${TVM_DIR}/3rdparty/dmlc-core/src/io/filesys.cc
${TVM_DIR}/3rdparty/dmlc-core/src/io/indexed_recordio_split.cc
${TVM_DIR}/3rdparty/dmlc-core/src/io/input_split_base.cc
${TVM_DIR}/3rdparty/dmlc-core/src/io/line_split.cc
${TVM_DIR}/3rdparty/dmlc-core/src/io/recordio_split.cc
${TVM_DIR}/3rdparty/dmlc-core/src/io/local_filesys.cc
${TVM_DIR}/3rdparty/dmlc-core/src/io.cc
${TVM_DIR}/src/api/*.cc
${TVM_DIR}/src/arithmetic/*.cc
${TVM_DIR}/src/codegen/*.cc
${TVM_DIR}/src/lang/*.cc
${TVM_DIR}/src/pass/*.cc
${TVM_DIR}/src/op/*.cc
${TVM_DIR}/src/node/*.cc
${TVM_DIR}/src/schedule/*.cc
${TVM_DIR}/src/runtime/*.cc
${TVM_DIR}/src/runtime/cce/*.cc
${TVM_DIR}/src/runtime/vm/*.cc
${TVM_DIR}/src/runtime/vm/profiler/*.cc
${TVM_DIR}/src/codegen/stackvm/*.cc
${AKG_SOURCE_DIR}/src/poly/*.cc
${AKG_SOURCE_DIR}/src/poly/schedule_pass/*.cc
${AKG_SOURCE_DIR}/src/poly/schedule_pass_gpu/*.cc
${AKG_SOURCE_DIR}/src/poly/tiling/*.cc
${AKG_SOURCE_DIR}/src/api/*.cc
${AKG_SOURCE_DIR}/src/pass/*.cc
${AKG_SOURCE_DIR}/src/rpc/*.cc
${AKG_SOURCE_DIR}/src/schedule/*.cc
${AKG_SOURCE_DIR}/src/emit_insn/*.cc
${AKG_SOURCE_DIR}/src/contrib/cce_parm/*.cc
${AKG_SOURCE_DIR}/src/contrib/parser/*.cc
${AKG_SOURCE_DIR}/src/runtime/stub/*.cc
${AKG_SOURCE_DIR}/src/codegen/*.cc
${AKG_SOURCE_DIR}/src/composite/*.cc
${AKG_SOURCE_DIR}/src/op/*.cc
${AKG_SOURCE_DIR}/src/common/*.cc)
file(GLOB DATATYPE_SRCS ${TVM_DIR}/src/codegen/datatype/*.cc)
list(APPEND COMPILER_SRCS ${DATATYPE_SRCS})
file(GLOB TOPI_SRCS ${TVM_DIR}/topi/src/*.cc)
file(GLOB_RECURSE RELAY_SRCS ${TVM_DIR}/src/relay/*.cc)
list(APPEND COMPILER_SRCS ${RELAY_SRCS})
file(GLOB COMPILER_VERILOG_SRCS ${TVM_DIR}/src/codegen/veriog/*.cc)
list(APPEND COMPILER_SRCS ${COMPILER_VERILOG_SRCS})
file(
GLOB
RUNTIME_SRCS
${TVM_DIR}/src/runtime/*.cc
${TVM_DIR}/src/runtime/cce/*.cc
${TVM_DIR}/src/runtime/vm/*.cc
${TVM_DIR}/src/runtime/stackvm/*.cc)
if(USE_CUDA)
include(${TVM_DIR}/cmake/util/FindCUDA.cmake)
include(${TVM_DIR}/cmake/modules/CUDA.cmake)
endif()
if(USE_LLVM)
include(${TVM_DIR}/cmake/util/FindLLVM.cmake)
file(GLOB LLVM_SRCS ${TVM_DIR}/src/codegen/llvm/*.cc)
list(APPEND COMPILER_SRCS ${LLVM_SRCS})
include(${TVM_DIR}/cmake/modules/LLVM.cmake)
endif()
file(GLOB RUNTIME_STUB_SRC ${AKG_SOURCE_DIR}/src/runtime/stub/*.cc)
if(USE_CCE_RT
OR USE_CCE_RT_SIM
OR USE_KC_AIR)
list(REMOVE_ITEM COMPILER_SRCS ${RUNTIME_STUB_SRC})
endif()
if(USE_RPC)
message(STATUS "Build with RPC support...")
file(GLOB RUNTIME_RPC_SRCS ${TVM_DIR}/src/runtime/rpc/*.cc)
list(APPEND RUNTIME_SRCS ${RUNTIME_RPC_SRCS})
endif(USE_RPC)
file(GLOB COMPILER_OFF_SRC ${TVM_DIR}/src/codegen/opt/build_*_off.cc)
list(APPEND COMPILER_SRCS ${COMPILER_OFF_SRC})
if(USE_CUDA)
list(REMOVE_ITEM COMPILER_SRCS ${TVM_DIR}/src/codegen/opt/build_cuda_off.cc)
endif(USE_CUDA)
add_library(akg SHARED ${COMPILER_SRCS} ${RUNTIME_SRCS} ${TOPI_SRCS} ${RUNTIME_SRCS})
add_dependencies(akg akg::isl_fixed)
target_link_libraries(akg ${TVM_LINKER_LIBS} ${TVM_RUNTIME_LINKER_LIBS} akg::isl_fixed ${GMP_LIBRARY})
# Related headers
target_include_directories(akg PRIVATE "${TVM_DIR}/topi/include")
# Installation rules
install(TARGETS akg DESTINATION lib${LIB_SUFFIX})
if(ENABLE_AKG)
install(
DIRECTORY
${TVM_DIR}/python/tvm
${TVM_DIR}/topi/python/topi
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/akg)
endif()
C++
1
https://gitee.com/yangpengfei6/akg.git
git@gitee.com:yangpengfei6/akg.git
yangpengfei6
akg
akg
master

搜索帮助