Skip to content

Commit

Permalink
Embed cnmem within build system.
Browse files Browse the repository at this point in the history
  • Loading branch information
Christophe Van Gysel committed Mar 21, 2018
1 parent 7cb8b38 commit c391bbc
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 30 deletions.
62 changes: 32 additions & 30 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,41 @@ project (device_matrix)

list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/third_party)

find_package(CUDA REQUIRED)
find_package(Glog REQUIRED)

MESSAGE(STATUS "CUDA: " ${CUDA_LIBRARIES} " " ${CUDA_INCLUDE_DIRS})
MESSAGE(STATUS "GLog: " ${GLOG_LIBRARIES})

if(NOT TARGET gtest)
# Adapted from http://crascit.com/2015/07/25/cmake-gtest/.
configure_file(third_party/googletest-CMakeLists.txt googletest-download/CMakeLists.txt)
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download )
execute_process(COMMAND ${CMAKE_COMMAND} --build .
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download )

# Prevent GoogleTest from overriding our compiler/linker options
# when building with Visual Studio
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)

# Add googletest directly to our build. This adds
# the following targets: gtest, gtest_main, gmock
# and gmock_main
add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googletest-src
${CMAKE_CURRENT_BINARY_DIR}/googletest-build
EXCLUDE_FROM_ALL)
endif(NOT TARGET gtest)
find_package(CUDA 7.0 REQUIRED)
find_package(ExtraCUDA REQUIRED) # nvToolsExt
find_package(Glog 0.3.4 REQUIRED)

function(add_external_src TARGET_NAME MODULE_NAME)
if(NOT TARGET ${TARGET_NAME})
configure_file(third_party/${MODULE_NAME}-CMakeLists.txt
${MODULE_NAME}-download/CMakeLists.txt)
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}-download )
execute_process(COMMAND ${CMAKE_COMMAND} --build .
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}-download )

# Prevent GoogleTest from overriding our compiler/linker options
# when building with Visual Studio
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)

add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}-src
${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}-build
EXCLUDE_FROM_ALL)
endif(NOT TARGET ${TARGET_NAME})
endfunction()

add_external_src(gtest googletest)
add_external_src(cnmem cnmem)

set(LIBRARIES
-lglog
-lcublas -lcudart -lnvToolsExt -lcnmem
cnmem
${CUDA_LIBRARIES}
${CUDA_CUBLAS_LIBRARIES}
${EXTRACUDA_LIBRARIES}
${GLOG_LIBRARIES}
${CUDA_LIBRARIES} ${GLOG_LIBRARIES})

set(TEST_LIBRARIES
gtest_main gmock ${LIBRARIES})
set(TEST_LIBRARIES gtest_main gmock ${LIBRARIES})

set(CMAKE_CXX_FLAGS
"-std=c++11 -march=native -O3 -funroll-loops")
Expand All @@ -49,8 +51,8 @@ set(CUDA_SEPARABLE_COMPILATION ON)
SET(INCLUDE_DIRS
"${gtest_SOURCE_DIR}/include"
"${gmock_SOURCE_DIR}/include"
${GLOG_INCLUDE_DIRS}
${CUDA_TOOLKIT_ROOT_DIR}/samples/common/inc
${GLOG_INCLUDE_DIRS}
${GTEST_INCLUDE_DIRS}
)

Expand Down
14 changes: 14 additions & 0 deletions third_party/FindExtraCUDA.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
include(FindPackageHandleStandardArgs)

find_library(CUDA_NVTX_LIBRARY nvToolsExt
PATHS ${CUDA_TOOLKIT_ROOT_DIR}/lib64)

find_package_handle_standard_args(
ExtraCUDA
DEFAULT_MSG
CUDA_NVTX_LIBRARY)

if(ExtraCUDA_FOUND)
set(EXTRACUDA_LIBRARIES ${CUDA_NVTX_LIBRARY})
message(STATUS "Found Extra CUDA libraries (library: ${EXTRACUDA_LIBRARIES})")
endif()
15 changes: 15 additions & 0 deletions third_party/cnmem-CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
cmake_minimum_required(VERSION 2.8.2)

project(cnmem-download NONE)

include(ExternalProject)
ExternalProject_Add(cnmem
GIT_REPOSITORY https://github.com/NVIDIA/cnmem.git
GIT_TAG master
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/cnmem-src"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/cnmem-build"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
TEST_COMMAND ""
)

0 comments on commit c391bbc

Please sign in to comment.