Skip to content
Snippets Groups Projects
Commit ce61e4d1 authored by Yifan Zhao's avatar Yifan Zhao
Browse files

Use modern CMake approach to name libraries

parent a7978123
No related branches found
No related tags found
No related merge requests found
......@@ -7,7 +7,7 @@ message(STATUS "CUDA Architecture: ${CMAKE_CUDA_ARCHITECTURES}")
# find_package will use the auxillary cmake/Find*.cmake we provide
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
find_package(CUDNN 7 EXACT REQUIRED) # CUDNN_INCLUDE_PATH, CUDNN_LIBRARY_PATH
find_package(CUDNN 7 EXACT REQUIRED) # CUDNN_INCLUDE_PATH, CUDNN_LIBRARY_DIR and CUDNN::cudnn
include_directories(./include/)
# find_package will use the auxillary cmake/Find*.cmake we provide
......
......@@ -10,8 +10,9 @@
# The following are set after configuration is done:
# CUDNN_FOUND
# CUDNN_INCLUDE_PATH
# CUDNN_LIBRARY_PATH
# CUDNN_LIBRARY_DIR
#
# It also provides the IMPORTed target CUDNN::cudnn.
include(FindPackageHandleStandardArgs)
......@@ -45,11 +46,8 @@ endif()
find_library(CUDNN_LIBRARY_PATH ${CUDNN_LIBNAME}
PATHS ${CUDNN_LIBRARY}
PATH_SUFFIXES lib lib64 cuda/lib cuda/lib64 lib/x64)
# Get director from filename ${CUDNN_LIBRARY_PATH}
get_filename_component(
CUDNN_LIBRARY_PATH
"${CUDNN_LIBRARY_PATH}/.." ABSOLUTE
)
# Get directory from filename ${CUDNN_LIBRARY_PATH}
get_filename_component(CUDNN_LIBRARY_DIR "${CUDNN_LIBRARY_PATH}/.." ABSOLUTE)
# This version check is from OpenCV repo: https://github.com/opencv/opencv/blob/master/cmake/FindCUDNN.cmake
# extract version from the include
......@@ -80,4 +78,8 @@ find_package_handle_standard_args(
VERSION_VAR CUDNN_VERSION
)
add_library(CUDNN::cudnn IMPORTED INTERFACE)
target_include_directories(CUDNN::cudnn SYSTEM INTERFACE "${CUDNN_INCLUDE_PATH}")
target_link_libraries(CUDNN::cudnn INTERFACE "${CUDNN_LIBRARY_PATH}")
mark_as_advanced(CUDNN_ROOT CUDNN_INCLUDE_DIR CUDNN_LIBRARY)
......@@ -24,8 +24,8 @@ configure_file(
# -- Default include directories
set(
INCLUDES
${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}
${CUDNN_INCLUDE_PATH}
# Have to add these because of tensor_runtime.ll (see below)
${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} ${CUDNN_INCLUDE_PATH}
./tensor_runtime/include ${CMAKE_CURRENT_BINARY_DIR}/tensor_runtime/include
./dnn_sources/include
)
......@@ -39,9 +39,16 @@ add_library(soc_simulator SHARED soc_simulator/promise_timing_model.cpp)
target_include_directories(soc_simulator PUBLIC soc_simulator/)
# -- Link libraries
find_package(OpenMP REQUIRED) # Provides ${OpenMP_CXX_FLAGS}
set(LINK_DIR CUDNN_LIBRARY_PATH)
set(LINK_LIBS gpu_profiler soc_simulator stdc++fs cudnn curand cublas)
find_package(OpenMP REQUIRED) # Provides ${OpenMP_CXX_FLAGS} and OpenMP::OpenMP_CXX
# This will use the CUDA found by CUDA language support in the root CMake,
# but it exports the CUDA::* targets (used below) so we can freely add libraries to link to.
find_package(CUDAToolkit REQUIRED)
set(
LINK_LIBS
gpu_profiler soc_simulator
CUDA::cublas CUDA::curand CUDNN::cudnn
OpenMP::OpenMP_CXX
)
if(USE_GFLAGS)
list(APPEND LINK_LIBS gflags)
endif()
......@@ -77,15 +84,14 @@ endforeach()
# -- Adding tensor_runtime targets
function(add_tensor_runtime target_name)
add_library(${target_name} SHARED ${RUNTIME_SRCS})
set_property(TARGET ${target_name} PROPERTY CUDA_ARCHITECTURES 60)
set_target_properties(${target_name} PROPERTIES CUDA_ARCHITECTURES 60)
target_compile_options(
${target_name} PRIVATE
--expt-relaxed-constexpr -maxrregcount 32 -Xcompiler=${OpenMP_CXX_FLAGS}
$<$<CONFIG:DEBUG>:-lineinfo -Xcompiler=-ggdb>
)
target_include_directories(${target_name} PUBLIC ${INCLUDES})
target_link_directories(${target_name} PUBLIC ${LINK_DIR})
target_link_libraries(${target_name} PUBLIC ${LINK_LIBS} ${OpenMP_CXX_FLAGS})
target_link_libraries(${target_name} PUBLIC ${LINK_LIBS})
target_compile_definitions(${target_name} PRIVATE ${DEFS} ${ARGN})
endfunction(add_tensor_runtime)
......
......@@ -21,8 +21,8 @@ set(
LLVMClearDFG
LLVMGenHPVM
)
# CUDA_TOOLKIT_ROOT_DIR and CUDNN_LIBRARY_PATH has been defined globally
set(CUDNN_DIR ${CUDNN_LIBRARY_PATH})
# CUDA_TOOLKIT_ROOT_DIR and CUDNN_LIBRARY_DIR has been defined globally
set(CUDNN_DIR ${CUDNN_LIBRARY_DIR})
# First resolve all `@symbol@` by configuring the file
configure_file(main.py.in ${CMAKE_CURRENT_BINARY_DIR}/main.py.conf)
# Then resolve all generator expressions we configured into the previous file
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment