mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-20 21:14:14 +08:00
Merge branch 'master' into cmake
This commit is contained in:
@ -53,15 +53,13 @@ include(cmake/Dependencies.cmake)
|
||||
if(BUILD_SHARED_LIBS)
|
||||
if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0.0)
|
||||
message(STATUS "GCC ${CMAKE_CXX_COMPILER_VERSION}: Adding gcc and gcc_s libs to link line")
|
||||
set(Caffe2_LINK Caffe2_CPU Caffe_PROTO Caffe2_PROTO gcc_s gcc)
|
||||
else()
|
||||
set(Caffe2_LINK Caffe2_CPU Caffe_PROTO Caffe2_PROTO)
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS gcc_s gcc)
|
||||
endif()
|
||||
else()
|
||||
if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0)
|
||||
set(Caffe2_LINK -Wl,--whole-archive Caffe2_CPU Caffe_PROTO Caffe2_PROTO gcc_s gcc -Wl,--no-whole-archive)
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS -Wl,--whole-archive gcc_s gcc)
|
||||
else()
|
||||
set(Caffe2_LINK -Wl,--whole-archive Caffe2_CPU Caffe_PROTO Caffe2_PROTO -Wl,--no-whole-archive)
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS -Wl,--whole-archive)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -11,14 +11,12 @@ set(Caffe2_GPU_SRCS)
|
||||
set(Caffe2_CPU_TEST_SRCS)
|
||||
set(Caffe2_GPU_TEST_SRCS)
|
||||
|
||||
# ---[ Protobuf
|
||||
set(Caffe2_LINK_LIBS Caffe_PROTO)
|
||||
|
||||
# Compile protobufs.
|
||||
add_subdirectory(proto)
|
||||
include_directories(BEFORE ${CMAKE_BINARY_DIR})
|
||||
list(APPEND Caffe2_LINK_LIBS Caffe2_PROTO)
|
||||
# Get all source directories.
|
||||
# TODO(bwasti): GLOB is not considered best practice.
|
||||
file(GLOB Caffe2_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/*)
|
||||
|
||||
# Exclude all excluded directories.
|
||||
exclude(Caffe2_DIRS "${Caffe2_DIRS}" ${Caffe2_DIR_EXCLUDES})
|
||||
|
||||
# ---[ Add respective subdirectories
|
||||
# Note: the folders that are being commented out have not been properly
|
||||
@ -54,28 +52,47 @@ foreach(tmp ${Caffe2_GPU_SRCS})
|
||||
message(STATUS " " ${tmp})
|
||||
endforeach()
|
||||
|
||||
exclude(Caffe2_CPU_SRCS "${Caffe2_CPU_SRCS}" ${Caffe2_FILE_EXCLUDES})
|
||||
exclude(Caffe2_CPU_SRCS "${Caffe2_CPU_SRCS}" ${Caffe2_GPU_SRCS})
|
||||
exclude(Caffe2_CPU_SRCS "${Caffe2_CPU_SRCS}" ${Caffe2_CPU_TEST_SRCS})
|
||||
exclude(Caffe2_CPU_SRCS "${Caffe2_CPU_SRCS}" ${Caffe2_GPU_TEST_SRCS})
|
||||
if (NOT USE_LEVELDB)
|
||||
exclude(Caffe2_CPU_SRCS "${Caffe2_CPU_SRCS}" ${Caffe2_LEVELDB_SRCS})
|
||||
endif()
|
||||
if (NOT USE_LMDB)
|
||||
exclude(Caffe2_CPU_SRCS "${Caffe2_CPU_SRCS}" ${Caffe2_LMDB_SRCS})
|
||||
endif()
|
||||
|
||||
# ---[ List of libraries to link with
|
||||
set(Caffe2_MAIN_LIBS Caffe_PROTO)
|
||||
|
||||
# Compile protobufs.
|
||||
add_subdirectory(proto)
|
||||
include_directories(BEFORE ${CMAKE_BINARY_DIR})
|
||||
list(APPEND Caffe2_MAIN_LIBS Caffe2_PROTO)
|
||||
|
||||
|
||||
# Compile exposed libraries.
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fPIC")
|
||||
add_library(Caffe2_CPU ${Caffe2_CPU_SRCS})
|
||||
target_link_libraries(Caffe2_CPU ${Caffe2_LINK_LIBS} ${Caffe2_LINKER_LIBS})
|
||||
target_link_libraries(Caffe2_CPU ${Caffe2_MAIN_LIBS} ${Caffe2_DEPENDENCY_LIBS})
|
||||
install(TARGETS Caffe2_CPU DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
|
||||
list(APPEND Caffe2_LINK_LIBS Caffe2_CPU)
|
||||
list(APPEND Caffe2_MAIN_LIBS Caffe2_CPU)
|
||||
|
||||
# ---[ CUDA library
|
||||
if(HAVE_CUDA)
|
||||
CUDA_ADD_LIBRARY(Caffe2_GPU ${Caffe2_GPU_SRCS})
|
||||
target_link_libraries(Caffe2_GPU ${Caffe2_LINK_LIBS} ${Caffe2_LINKER_LIBS})
|
||||
target_link_libraries(Caffe2_GPU ${Caffe2_MAIN_LIBS} ${Caffe2_DEPENDENCY_LIBS})
|
||||
install(TARGETS Caffe2_GPU DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
|
||||
link_directories(${CMAKE_INSTALL_PREFIX}/lib)
|
||||
list(APPEND Caffe2_LINK_LIBS Caffe2_GPU)
|
||||
list(APPEND Caffe2_LINK Caffe2_GPU)
|
||||
list(APPEND Caffe2_MAIN_LIBS Caffe2_GPU)
|
||||
endif()
|
||||
|
||||
# Compile test binaries.
|
||||
foreach(test_src ${Caffe2_CPU_TEST_SRCS})
|
||||
get_filename_component(test_name ${test_src} NAME_WE)
|
||||
add_executable(${test_name} "${test_src}")
|
||||
target_link_libraries(${test_name} ${Caffe2_LINK} gtest_main)
|
||||
target_link_libraries(${test_name} ${Caffe2_MAIN_LIBS} ${Caffe2_DEPENDENCY_LIBS} gtest_main)
|
||||
if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.0)
|
||||
target_compile_features(${test_name} PRIVATE cxx_range_for)
|
||||
endif()
|
||||
@ -151,7 +168,7 @@ endif()
|
||||
foreach(binary_src ${Caffe2_CPU_BINARY_SRCS})
|
||||
get_filename_component(bin_name ${binary_src} NAME_WE)
|
||||
add_executable(${bin_name} ${binary_src})
|
||||
target_link_libraries(${bin_name} ${Caffe2_LINK} benchmark ${Caffe2_LINKER_LIBS})
|
||||
target_link_libraries(${bin_name} ${Caffe2_MAIN_LIBS} benchmark ${Caffe2_DEPENDENCY_LIBS})
|
||||
install(TARGETS ${bin_name} DESTINATION ${CMAKE_INSTALL_PREFIX}/binaries)
|
||||
endforeach()
|
||||
|
||||
@ -159,7 +176,7 @@ if(HAVE_CUDA)
|
||||
foreach(binary_src ${Caffe2_GPU_BINARY_SRCS})
|
||||
get_filename_component(bin_name ${binary_src} NAME_WE)
|
||||
add_executable(${bin_name} ${binary_src})
|
||||
target_link_libraries(${bin_name} ${Caffe2_LINK} cnmem benchmark ${Caffe2_LINKER_LIBS})
|
||||
target_link_libraries(${bin_name} ${Caffe2_MAIN_LIBS} cnmem benchmark ${Caffe2_DEPENDENCY_LIBS})
|
||||
install(TARGETS ${bin_name} DESTINATION ${CMAKE_INSTALL_PREFIX}/binaries)
|
||||
endforeach()
|
||||
endif()
|
||||
|
@ -11,12 +11,12 @@ prepend(Caffe2_PYTHON_GPU_SRC ${CMAKE_CURRENT_SOURCE_DIR} ${Caffe2_PYTHON_GPU_SR
|
||||
|
||||
add_library(caffe2_pybind11_state SHARED ${Caffe2_PYTHON_CPU_SRC})
|
||||
set_target_properties(caffe2_pybind11_state PROPERTIES PREFIX "")
|
||||
target_link_libraries(caffe2_pybind11_state ${Caffe2_LINK})
|
||||
target_link_libraries(caffe2_pybind11_state ${Caffe2_MAIN_LIBS} ${Caffe2_DEPENDENCY_LIBS})
|
||||
install(TARGETS caffe2_pybind11_state DESTINATION ${CMAKE_INSTALL_PREFIX}/caffe2/python)
|
||||
|
||||
if(HAVE_CUDA)
|
||||
add_library(caffe2_pybind11_state_gpu SHARED ${Caffe2_PYTHON_GPU_SRC})
|
||||
set_target_properties(caffe2_pybind11_state_gpu PROPERTIES PREFIX "")
|
||||
target_link_libraries(caffe2_pybind11_state_gpu ${Caffe2_LINK})
|
||||
target_link_libraries(caffe2_pybind11_state_gpu ${Caffe2_MAIN_LIBS} ${Caffe2_DEPENDENCY_LIBS})
|
||||
install(TARGETS caffe2_pybind11_state_gpu DESTINATION ${CMAKE_INSTALL_PREFIX}/caffe2/python)
|
||||
endif()
|
||||
|
@ -172,7 +172,7 @@ if (${CUDA_VERSION} LESS 8.0)
|
||||
list(APPEND CUDA_NVCC_FLAGS "-D__STRICT_ANSI__")
|
||||
endif()
|
||||
include_directories(SYSTEM ${CUDA_INCLUDE_DIRS})
|
||||
list(APPEND Caffe2_LINKER_LIBS ${CUDA_CUDART_LIBRARY}
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS ${CUDA_CUDART_LIBRARY}
|
||||
${CUDA_curand_LIBRARY} ${CUDA_CUBLAS_LIBRARIES})
|
||||
|
||||
# find libcuda.so and lbnvrtc.so
|
||||
@ -193,13 +193,13 @@ message(STATUS "Added CUDA NVCC flags for: ${NVCC_FLAGS_EXTRA_readable}")
|
||||
|
||||
if(CUDA_CUDA_LIB)
|
||||
message(STATUS "Found libcuda: ${CUDA_CUDA_LIB}")
|
||||
list(APPEND Caffe2_LINKER_LIBS ${CUDA_CUDA_LIB})
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS ${CUDA_CUDA_LIB})
|
||||
else()
|
||||
message(FATAL_ERROR "Cannot find libcuda.so. Please file an issue on https://github.com/caffe2/caffe2 with your build output.")
|
||||
endif()
|
||||
if(CUDA_NVRTC_LIB)
|
||||
message(STATUS "Found libnvrtc: ${CUDA_NVRTC_LIB}")
|
||||
list(APPEND Caffe2_LINKER_LIBS ${CUDA_NVRTC_LIB})
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS ${CUDA_NVRTC_LIB})
|
||||
else()
|
||||
message(FATAL_ERROR "Cannot find libnvrtc.so. Please file an issue on https://github.com/caffe2/caffe2 with your build output.")
|
||||
endif()
|
||||
|
@ -1,12 +1,12 @@
|
||||
# This list is required for static linking and exported to Caffe2Config.cmake
|
||||
set(Caffe2_LINKER_LIBS "")
|
||||
set(Caffe2_DEPENDENCY_LIBS "")
|
||||
|
||||
# ---[ Custom Protobuf
|
||||
include("cmake/ProtoBuf.cmake")
|
||||
|
||||
# ---[ Threads
|
||||
find_package(Threads REQUIRED)
|
||||
list(APPEND Caffe2_LINKER_LIBS ${CMAKE_THREAD_LIBS_INIT})
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS ${CMAKE_THREAD_LIBS_INIT})
|
||||
|
||||
# ---[ BLAS
|
||||
set(BLAS "Eigen" CACHE STRING "Selected BLAS library")
|
||||
@ -19,18 +19,18 @@ if(BLAS STREQUAL "Eigen")
|
||||
elseif(BLAS STREQUAL "ATLAS")
|
||||
find_package(Atlas REQUIRED)
|
||||
include_directories(SYSTEM ${ATLAS_INCLUDE_DIRS})
|
||||
list(APPEND Caffe2_LINKER_LIBS ${ATLAS_LIBRARIES})
|
||||
list(APPEND Caffe2_LINKER_LIBS cblas)
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS ${ATLAS_LIBRARIES})
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS cblas)
|
||||
elseif(BLAS STREQUAL "OpenBLAS")
|
||||
find_package(OpenBLAS REQUIRED)
|
||||
include_directories(SYSTEM ${OpenBLAS_INCLUDE_DIR})
|
||||
list(APPEND Caffe2_LINKER_LIBS ${OpenBLAS_LIB})
|
||||
list(APPEND Caffe2_LINKER_LIBS cblas)
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS ${OpenBLAS_LIB})
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS cblas)
|
||||
elseif(BLAS STREQUAL "MKL")
|
||||
find_package(MKL REQUIRED)
|
||||
include_directories(SYSTEM ${MKL_INCLUDE_DIR})
|
||||
list(APPEND Caffe2_LINKER_LIBS ${MKL_LIBRARIES})
|
||||
list(APPEND Caffe2_LINKER_LIBS cblas)
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS ${MKL_LIBRARIES})
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS cblas)
|
||||
add_definitions(-DCAFFE2_USE_MKL)
|
||||
else()
|
||||
message(FATAL_ERROR "Unrecognized blas option:" ${BLAS})
|
||||
@ -42,7 +42,7 @@ if (USE_GLOG)
|
||||
if (GLOG_FOUND)
|
||||
add_definitions(-DCAFFE2_USE_GOOGLE_GLOG)
|
||||
include_directories(SYSTEM ${GLOG_INCLUDE_DIRS})
|
||||
list(APPEND Caffe2_LINKER_LIBS ${GLOG_LIBRARIES})
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS ${GLOG_LIBRARIES})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@ -52,7 +52,7 @@ if (USE_GFLAGS)
|
||||
if (GFLAGS_FOUND)
|
||||
add_definitions(-DCAFFE2_USE_GFLAGS)
|
||||
include_directories(SYSTEM ${GFLAGS_INCLUDE_DIRS})
|
||||
list(APPEND Caffe2_LINKER_LIBS ${GFLAGS_LIBRARIES})
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS ${GFLAGS_LIBRARIES})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@ -68,21 +68,21 @@ include_directories(SYSTEM ${CMAKE_SOURCE_DIR}/third_party/benchmark/include)
|
||||
if(USE_LMDB)
|
||||
find_package(LMDB REQUIRED)
|
||||
include_directories(SYSTEM ${LMDB_INCLUDE_DIR})
|
||||
list(APPEND Caffe2_LINKER_LIBS ${LMDB_LIBRARIES})
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS ${LMDB_LIBRARIES})
|
||||
endif()
|
||||
|
||||
# ---[ LevelDB
|
||||
if(USE_LEVELDB)
|
||||
find_package(LevelDB REQUIRED)
|
||||
include_directories(SYSTEM ${LevelDB_INCLUDE})
|
||||
list(APPEND Caffe2_LINKER_LIBS ${LevelDB_LIBRARIES})
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS ${LevelDB_LIBRARIES})
|
||||
endif()
|
||||
|
||||
# ---[ Snappy
|
||||
if(USE_LEVELDB)
|
||||
find_package(Snappy REQUIRED)
|
||||
include_directories(SYSTEM ${Snappy_INCLUDE_DIR})
|
||||
list(APPEND Caffe2_LINKER_LIBS ${Snappy_LIBRARIES})
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS ${Snappy_LIBRARIES})
|
||||
endif()
|
||||
|
||||
# ---[ OpenCV
|
||||
@ -94,7 +94,7 @@ if(USE_OPENCV)
|
||||
find_package(OpenCV QUIET COMPONENTS core highgui imgproc)
|
||||
endif()
|
||||
include_directories(SYSTEM ${OpenCV_INCLUDE_DIRS})
|
||||
list(APPEND Caffe2_LINKER_LIBS ${OpenCV_LIBS})
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS ${OpenCV_LIBS})
|
||||
message(STATUS "OpenCV found (${OpenCV_CONFIG_PATH})")
|
||||
endif()
|
||||
|
||||
@ -107,7 +107,7 @@ find_package(PythonLibs 2.7)
|
||||
find_package(NumPy REQUIRED)
|
||||
|
||||
include_directories(SYSTEM ${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIR})
|
||||
list(APPEND Caffe2_LINKER_LIBS ${PYTHON_LIBRARIES})
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS ${PYTHON_LIBRARIES})
|
||||
|
||||
# ---[ pybind11
|
||||
include_directories(SYSTEM ${CMAKE_SOURCE_DIR}/third_party/pybind11/include)
|
||||
@ -117,7 +117,7 @@ if(USE_MPI)
|
||||
find_package(MPI)
|
||||
if(MPI_CXX_FOUND)
|
||||
include_directories(SYSTEM ${MPI_CXX_INCLUDE_PATH})
|
||||
list(APPEND Caffe2_LINKER_LIBS ${MPI_CXX_LIBRARIES})
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS ${MPI_CXX_LIBRARIES})
|
||||
set(CMAKE_EXE_LINKER_FLAGS ${MPI_CXX_LINK_FLAGS})
|
||||
endif()
|
||||
endif()
|
||||
@ -141,7 +141,7 @@ if(HAVE_CUDA)
|
||||
find_package(CuDNN REQUIRED)
|
||||
if(CUDNN_FOUND)
|
||||
include_directories(SYSTEM ${CUDNN_INCLUDE_DIRS})
|
||||
list(APPEND Caffe2_LINKER_LIBS ${CUDNN_LIBRARIES})
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS ${CUDNN_LIBRARIES})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@ -150,7 +150,7 @@ if(HAVE_CUDA)
|
||||
include("cmake/External/nccl.cmake")
|
||||
include_directories(SYSTEM ${NCCL_INCLUDE_DIRS})
|
||||
message(STATUS "NCCL: ${NCCL_LIBRARIES}")
|
||||
list(APPEND Caffe2_LINKER_LIBS ${NCCL_LIBRARIES})
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS ${NCCL_LIBRARIES})
|
||||
endif()
|
||||
|
||||
# ---[ CUB
|
||||
@ -164,5 +164,5 @@ if(HAVE_CUDA)
|
||||
include_directories(SYSTEM ${CMAKE_SOURCE_DIR}/third_party/cnmem/include)
|
||||
# message(STATUS "cnmem: ${CMAKE_SOURCE_DIR}/third_party/cnmem/libcnmem.so")
|
||||
# message(STATUS "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
list(APPEND Caffe2_LINKER_LIBS "${CMAKE_CURRENT_BINARY_DIR}/third_party/cnmem/libcnmem.so")
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS "${CMAKE_CURRENT_BINARY_DIR}/third_party/cnmem/libcnmem.so")
|
||||
endif()
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
find_package( Protobuf REQUIRED )
|
||||
include_directories(SYSTEM ${PROTOBUF_INCLUDE_DIR})
|
||||
list(APPEND Caffe2_LINKER_LIBS ${PROTOBUF_LIBRARIES})
|
||||
list(APPEND Caffe2_DEPENDENCY_LIBS ${PROTOBUF_LIBRARIES})
|
||||
|
||||
# place where to generate protobuf sources
|
||||
set(proto_gen_folder "${PROJECT_BINARY_DIR}/include/caffe/proto")
|
||||
|
Reference in New Issue
Block a user