diff --git a/CMakeLists.txt b/CMakeLists.txt
index ab427c17f532e8f029e5bc0358eb55becf577cee..a7817943d5fc433ef77b2348ee1a14c36632e50f 100644 (file)
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-cmake_minimum_required(VERSION 2.8.7)
+cmake_minimum_required(VERSION 3.4.0)
if(POLICY CMP0046)
cmake_policy(SET CMP0046 NEW)
endif()
project(Caffe C CXX)
# ---[ Caffe version
-set(CAFFE_TARGET_VERSION "0.15.1")
-set(CAFFE_TARGET_SOVERSION "0.15")
+set(CAFFE_TARGET_VERSION "0.17.0")
+set(CAFFE_TARGET_SOVERSION "0.17")
add_definitions(-DCAFFE_VERSION=${CAFFE_TARGET_VERSION})
+# Skip `typedef __half half;`
+add_definitions(-DCUDA_NO_HALF=1)
+
# ---[ Using cmake scripts and modules
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules)
include(cmake/ConfigGen.cmake)
# ---[ Options
-caffe_option(CPU_ONLY "Build Caffe without CUDA support" OFF) # TODO: rename to USE_CUDA
-caffe_option(USE_CUDNN "Build Caffe with cuDNN library support" ON IF NOT CPU_ONLY)
+caffe_option(USE_CUDNN "Build Caffe with cuDNN library support" ON)
+
+# USE_NCCL: Build Caffe with NCCL Library support
+# Regular ON/OFF option doesn't work here because we need to recognize 3 states:
+# 1. User didn't set USE_NCCL option =>
+# 1.1 We *quietly* try to find it and use if found; do nothing otherwise.
+# 2. User explicitly set USE_NCCL=ON option =>
+# 1.1 We try to find it with *required* option, thus CMake fails if not found.
+# 3. User explicitly set USE_NCCL=OFF option => we do nothing.
+set(USE_NCCL "NONE" CACHE STRING "Link Caffe with NCCL Library for Multi-GPU support")
+if(USE_NCCL STREQUAL "NONE")
+ set(USE_NCCL_SET OFF)
+else()
+ set(USE_NCCL_SET ON)
+endif()
+
caffe_option(BUILD_SHARED_LIBS "Build shared libraries" ON)
caffe_option(BUILD_python "Build Python wrapper" ON)
set(python_version "2" CACHE STRING "Specify which Python version to use")
caffe_option(USE_OPENCV "Build with OpenCV support" ON)
caffe_option(USE_LEVELDB "Build with levelDB" ON)
caffe_option(USE_LMDB "Build with lmdb" ON)
-caffe_option(ALLOW_LMDB_NOLOCK "Allow MDB_NOLOCK when reading LMDB files (only if necessary)" OFF)
+caffe_option(TEST_FP16 "Build Caffe Tests with 16 bit mode included" OFF)
+caffe_option(NO_NVML "Build Caffe Tests without NVML (i.e. no CPU affinity)" OFF)
+
+if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^aarch")
+ # Tegra
+ set(NO_NVML ON)
+endif()
# ---[ Dependencies
include(cmake/Dependencies.cmake)
# ---[ Flags
if(UNIX OR APPLE)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -std=c++11")
+endif()
+
+# The flag USE_OPENCV is not getting set automatically. Set it explicitly.
+if (USE_OPENCV)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_OPENCV")
endif()
caffe_set_caffe_link()
message("-- Warning: forcing libstdc++ (controlled by USE_libstdcpp option in cmake)")
endif()
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG")
+
add_definitions(-DGTEST_USE_OWN_TR1_TUPLE)
# ---[ Warnings
# ---[ Includes
set(Caffe_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include)
set(THIRDPARTY_DIR ${PROJECT_SOURCE_DIR}/3rdparty)
-set(THIRDPARTY_DIR_DST ${CMAKE_BINARY_DIR}/3rdparty)
-include_directories(${Caffe_INCLUDE_DIR} ${PROJECT_BINARY_DIR} ${THIRDPARTY_DIR_DST})
+include_directories(${Caffe_INCLUDE_DIR} ${PROJECT_BINARY_DIR} ${THIRDPARTY_DIR})
include_directories(BEFORE src) # This is needed for gtest.
# ---[ Subdirectories
# ---[ Export configs generation
caffe_generate_export_configs()
-
-# ---[ CUB Memory Manager
-set(CUB_VERSION "1.5.2")
-execute_process(COMMAND ${THIRDPARTY_DIR}/getCUB.sh ${CUB_VERSION})