SINGA-255 Compile mandatory depedent libaries together with SINGA code Add git tag and remove some options.
Project: http://git-wip-us.apache.org/repos/asf/incubator-singa/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-singa/commit/47e38c87 Tree: http://git-wip-us.apache.org/repos/asf/incubator-singa/tree/47e38c87 Diff: http://git-wip-us.apache.org/repos/asf/incubator-singa/diff/47e38c87 Branch: refs/heads/master Commit: 47e38c87c574f012b6aa5238c5e7a06a6bdf348e Parents: a98446f Author: xiezl <[email protected]> Authored: Mon Oct 24 13:45:10 2016 +0800 Committer: xiezl <[email protected]> Committed: Tue Oct 25 14:52:34 2016 +0800 ---------------------------------------------------------------------- CMakeLists.txt | 59 +++++++++++++++++----------------------- cmake/Dependencies.cmake | 63 +++++++++++++++++++++++-------------------- 2 files changed, 58 insertions(+), 64 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/47e38c87/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/CMakeLists.txt b/CMakeLists.txt index f67c7af..58244c7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,6 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8) PROJECT(singa) SET(PACKAGE_VERSION "1.0.0") -MESSAGE(STATUS "CMAKE paths: ${CMAKE_PREFIX_PATH} test ${CMAKE_SYSTEM_PREFIX_PATH}") LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Thirdparty) #message(STATUS "module path: ${CMAKE_MODULE_PATH}") @@ -34,7 +33,7 @@ IF(WIN32) IF (MSVC) MESSAGE(STATUS "Using msvc compiler") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_SCL_SECURE_NO_WARNINGS") - MESSAGE(STATUS "Using msvc compiler ${CMAKE_CXX_FLAGS}") + #MESSAGE(STATUS "Using msvc compiler ${CMAKE_CXX_FLAGS}") ENDIF() ENDIF() IF(CMAKE_BUILD_TYPE=Debug) @@ -42,10 +41,10 @@ IF(CMAKE_BUILD_TYPE=Debug) ENDIF() #message(STATUS "${CMAKE_CXX_FLAGS}") SET(SINGA_INCLUDE_DIR - "${CMAKE_SOURCE_DIR}/include;${CMAKE_SOURCE_DIR}/lib/cnmem/include;${PROJECT_BINARY_DIR}") + "${CMAKE_SOURCE_DIR}/include;${PROJECT_BINARY_DIR}") INCLUDE_DIRECTORIES(${SINGA_INCLUDE_DIR}) -OPTION(USE_CBLAS "Use CBlas libs" ON) +#OPTION(USE_CBLAS "Use CBlas libs" ON) OPTION(USE_CUDA "Use Cuda libs" OFF) OPTION(USE_CUDNN "Use Cudnn libs" ON) OPTION(USE_OPENCV "Use opencv" OFF) @@ -56,7 +55,7 @@ OPTION(USE_OPENCL "Use OpenCL" OFF) OPTION(ENABLE_DIST "enable distributed training" OFF) OPTION(DISABLE_WARNINGS "disable warnings under windows" ON) OPTION(USE_MODULES "Use submodules to compile" OFF) -OPTION(BUILD_SHARED_LIBS "Use shared library" OFF) +#OPTION(USE_SHARED_LIBS "Use shared library" OFF) INCLUDE("cmake/Dependencies.cmake") #INCLUDE("cmake/Utils.cmake") @@ -77,7 +76,7 @@ IF (USE_CUDA) include(ExternalProject) ExternalProject_Add(cnmem GIT_REPOSITORY "https://github.com/NVIDIA/cnmem.git" - GIT_TAG "master" + GIT_TAG "28a182d" SOURCE_DIR "cnmem/" CONFIGURE_COMMAND "${CMAKE_COMMAND}" "-H${CMAKE_BINARY_DIR}/cnmem" "-B." @@ -85,7 +84,7 @@ IF (USE_CUDA) ) #ADD_SUBDIRECTORY(lib/cnmem) #LIST(APPEND SINGA_LINKER_LIBS cnmem) - #SET(global_cuda_objs "") + SET(global_cuda_objs "") ENDIF() # TODO(wangwei) detect the ev lib @@ -95,24 +94,23 @@ ENDIF() IF (USE_MODULES) include(ExternalProject) - #ADD_SUBDIRECTORY(lib/protobuf/cmake) - #ADD_SUBDIRECTORY(lib/OpenBLAS) - IF(BUILD_SHARED_LIBS) + #IF(USE_SHARED_LIBS) + # ExternalProject_Add(protobuf + # GIT_REPOSITORY "https://github.com/google/protobuf.git" + # GIT_TAG "2.7.0" + # SOURCE_DIR "protobuf/" + # CONFIGURE_COMMAND "${CMAKE_COMMAND}" + # "-H${CMAKE_BINARY_DIR}/protobuf/cmake" "-B." + # "-Dprotobuf_BUILD_TESTS=OFF" "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}" + # "-Dprotobuf_BUILD_SHARED_LIBS=ON" "-DCMAKE_C_FLAGS=-fPIC" + # "-DCMAKE_CXX_FLAGS=-fPIC" + # BUILD_COMMAND "${CMAKE_COMMAND}" --build "." + # ) + #ELSE() ExternalProject_Add(protobuf GIT_REPOSITORY "https://github.com/google/protobuf.git" - GIT_TAG "2.7.0" - SOURCE_DIR "protobuf/" - CONFIGURE_COMMAND "${CMAKE_COMMAND}" - "-H${CMAKE_BINARY_DIR}/protobuf/cmake" "-B." - "-Dprotobuf_BUILD_TESTS=OFF" "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}" - "-Dprotobuf_BUILD_SHARED_LIBS=ON" "-DCMAKE_C_FLAGS=-fPIC" - "-DCMAKE_CXX_FLAGS=-fPIC" - BUILD_COMMAND "${CMAKE_COMMAND}" --build "." - ) - ELSE() - ExternalProject_Add(protobuf - GIT_REPOSITORY "https://github.com/google/protobuf.git" - GIT_TAG "2.7.0" + #GIT_TAG "2.7.0" + GIT_TAG "f56542f" SOURCE_DIR "protobuf/" CONFIGURE_COMMAND "${CMAKE_COMMAND}" "-H${CMAKE_BINARY_DIR}/protobuf/cmake" "-B." @@ -121,26 +119,17 @@ IF (USE_MODULES) "-DCMAKE_CXX_FLAGS=-fPIC" BUILD_COMMAND "${CMAKE_COMMAND}" --build "." ) - ENDIF() + #ENDIF() ExternalProject_Add(openblas GIT_REPOSITORY "https://github.com/xianyi/OpenBLAS.git" - GIT_TAG "develop" + #GIT_TAG "develop" + GIT_TAG "f3419e6" SOURCE_DIR "openblas/" BUILD_IN_SOURCE 1 CONFIGURE_COMMAND "" BUILD_COMMAND "make" "ONLY_CBLAS=1" INSTALL_COMMAND "make" "PREFIX=${CMAKE_BINARY_DIR}/" "install" ) - IF(USE_CUDA) - ExternalProject_Add(cnmem - GIT_REPOSITORY "https://github.com/NVIDIA/cnmem.git" - GIT_TAG "master" - SOURCE_DIR "cnmem/" - CONFIGURE_COMMAND "${CMAKE_COMMAND}" - "-H${CMAKE_BINARY_DIR}/cnmem" "-B." - "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}" - ) - ENDIF() ENDIF() INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}/include") http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/47e38c87/cmake/Dependencies.cmake ---------------------------------------------------------------------- diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index 572a43b..ed49eaf 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -19,45 +19,47 @@ SET(SINGA_LINKER_LIBS "") IF(USE_MODULES) - IF(USE_SHARED_LIBS) + #IF(USE_SHARED_LIBS) + # include(FindProtobuf) + # SET(CMAKE_INSTALL_RPATH "${CMAKE_BINARY_DIR}/lib") + # link_directories(${CMAKE_BINARY_DIR}/lib) + # SET(PROTOBUF_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include") + # SET(PROTOBUF_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotobuf.so") + # SET(PROTOBUF_PROTOC_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotoc.so") + # SET(PROTOBUF_PROTOC_EXECUTABLE "${CMAKE_BINARY_DIR}/bin/protoc") + # INCLUDE_DIRECTORIES(SYSTEM ${PROTOBUF_INCLUDE_DIR}) + # LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARY}) + # #IF(USE_CBLAS) + # SET(CBLAS_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include") + # SET(CBLAS_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libopenblas.so") + # INCLUDE_DIRECTORIES(SYSTEM ${CBLAS_INCLUDE_DIR}) + # LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES}) + #ENDIF() + #ELSE() include(FindProtobuf) SET(PROTOBUF_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include") - SET(PROTOBUF_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libprotobuf.so") - SET(PROTOBUF_PROTOC_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotoc.so") - SET(PROTOBUF_PROTOC_EXECUTABLE "${CMAKE_BINARY_DIR}/bin/protoc") - INCLUDE_DIRECTORIES(SYSTEM ${PROTOBUF_INCLUDE_DIR}) - LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARIES}) - IF(USE_CBLAS) - SET(CBLAS_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include") - SET(CBLAS_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libopenblas.so") - INCLUDE_DIRECTORIES(SYSTEM ${CBLAS_INCLUDE_DIR}) - LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES}) - ENDIF() - ELSE() - include(FindProtobuf) - SET(PROTOBUF_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include") - SET(PROTOBUF_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libprotobuf.a") + SET(PROTOBUF_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotobuf.a") SET(PROTOBUF_PROTOC_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotoc.a") SET(PROTOBUF_PROTOC_EXECUTABLE "${CMAKE_BINARY_DIR}/bin/protoc") INCLUDE_DIRECTORIES(SYSTEM ${PROTOBUF_INCLUDE_DIR}) - LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARIES}) - IF(USE_CBLAS) + LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARY}) + #IF(USE_CBLAS) SET(CBLAS_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include") SET(CBLAS_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libopenblas.a") INCLUDE_DIRECTORIES(SYSTEM ${CBLAS_INCLUDE_DIR}) LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES}) - ENDIF() - ENDIF() + #ENDIF() + #ENDIF() ELSE() FIND_PACKAGE( Protobuf REQUIRED ) - MESSAGE(STATUS "proto libs " ${PROTOBUF_LIBRARIES}) - LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARIES}) - IF(USE_CBLAS) + #MESSAGE(STATUS "proto libs " ${PROTOBUF_LIBRARY}) + LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARY}) + #IF(USE_CBLAS) FIND_PACKAGE(CBLAS REQUIRED) INCLUDE_DIRECTORIES(SYSTEM ${CBLAS_INCLUDE_DIR}) LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES}) - MESSAGE(STATUS "Found cblas at ${CBLAS_LIBRARIES}") - ENDIF() + #MESSAGE(STATUS "Found cblas at ${CBLAS_LIBRARIES}") + #ENDIF() ENDIF() #INCLUDE("cmake/ProtoBuf.cmake") @@ -65,7 +67,7 @@ ENDIF() FIND_PACKAGE(Glog) IF(GLOG_FOUND) - MESSAGE(STATUS "GLOG FOUND at ${GLOG_INCLUDE_DIR}") + #MESSAGE(STATUS "GLOG FOUND at ${GLOG_INCLUDE_DIR}") ADD_DEFINITIONS("-DUSE_GLOG") LIST(APPEND SINGA_LINKER_LIBS ${GLOG_LIBRARIES}) INCLUDE_DIRECTORIES(${GLOG_INCLUDE_DIR}) @@ -75,11 +77,14 @@ IF(USE_LMDB) FIND_PACKAGE(LMDB REQUIRED) INCLUDE_DIRECTORIES(SYSTEM ${LMDB_INCLUDE_DIR}) LIST(APPEND SINGA_LINKER_LIBS ${LMDB_LIBRARIES}) - MESSAGE(STATUS "FOUND lmdb at ${LMDB_INCLUDE_DIR}") + #MESSAGE(STATUS "FOUND lmdb at ${LMDB_INCLUDE_DIR}") ENDIF() IF(USE_CUDA) INCLUDE("cmake/Cuda.cmake") + SET(CNMEM_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include") + SET(CNMEM_LIBRARY "${CMAKE_BINARY_DIR}/lib/libcnmem.so") + LIST(APPEND SINGA_LINKER_LIBS ${CNMEM_LIBRARY}) ELSE() SET(USE_CUDNN FALSE) ENDIF() @@ -89,14 +94,14 @@ IF(USE_OPENCL) IF(NOT OpenCL_FOUND) MESSAGE(SEND_ERROR "OpenCL was requested, but not found.") ELSE() - MESSAGE(STATUS "Found OpenCL headers at ${OpenCL_INCLUDE_DIRS}") + #MESSAGE(STATUS "Found OpenCL headers at ${OpenCL_INCLUDE_DIRS}") INCLUDE_DIRECTORIES(SYSTEM ${OpenCL_INCLUDE_DIR}) LIST(APPEND SINGA_LINKER_LIBS ${OpenCL_LIBRARIES}) FIND_PACKAGE(ViennaCL REQUIRED) IF(NOT ViennaCL_FOUND) MESSAGE(SEND_ERROR "ViennaCL is required if OpenCL is enabled.") ELSE() - MESSAGE(STATUS "Found ViennaCL headers at ${ViennaCL_INCLUDE_DIR}") + #MESSAGE(STATUS "Found ViennaCL headers at ${ViennaCL_INCLUDE_DIR}") INCLUDE_DIRECTORIES(SYSTEM ${ViennaCL_INCLUDE_DIR}) LIST(APPEND SINGA_LINKER_LIBS ${ViennaCL_LIBRARIES}) ENDIF()
