diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c7cfe1a2a78..74374ab66b1b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,6 +36,7 @@ Format: Auto | Common | All | LIST(ARCH_AND_PTX ...) option(USE_NCCL "Use NVidia NCCL with CUDA" OFF) option(USE_OPENCV "Build with OpenCV support" ON) option(USE_OPENMP "Build with Openmp support" ON) +option(USE_FATBIN_COMPRESSION "Compress nvcc fatbin output" ON) cmake_dependent_option(USE_CUDNN "Build with cudnn support" ON "USE_CUDA" OFF) # one could set CUDNN_ROOT for search path cmake_dependent_option(USE_NVTX "Build with nvtx support if found" ON "USE_CUDA" OFF) cmake_dependent_option(USE_SSE "Build with x86 SSE instruction support" ON "NOT ARM" OFF) @@ -669,8 +670,12 @@ endif() add_subdirectory("3rdparty/mshadow") set(MXNET_INSTALL_TARGETS mxnet) +if(USE_CUDA AND USE_FATBIN_COMPRESSION) + string(APPEND CMAKE_CUDA_FLAGS " --fatbin-options --compress-all") + message("-- CUDA: Adding NVCC options: --fatbin-options --compress-all") +endif() if(UNIX) - string(APPEND CMAKE_CUDA_FLAGS "${CUDA_ARCH_FLAGS_SPACES}") + string(APPEND CMAKE_CUDA_FLAGS " ${CUDA_ARCH_FLAGS_SPACES}") # Create dummy file since we want an empty shared library before linking set(DUMMY_SOURCE ${CMAKE_BINARY_DIR}/dummy.c) file(WRITE ${DUMMY_SOURCE} "") @@ -717,7 +722,7 @@ elseif(MSVC) COMMAND gen_warp $ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/ DEPENDS $) else(USE_SPLIT_ARCH_DLL) string(REPLACE ";" " " NVCC_FLAGS_ARCH "${NVCC_FLAGS_ARCH}") - set(CMAKE_CUDA_FLAGS "${CUDA_ARCH_FLAGS_SPACES}") + string(APPEND CMAKE_CUDA_FLAGS " ${CUDA_ARCH_FLAGS_SPACES}") add_library(mxnet SHARED ${SOURCE}) target_link_libraries(mxnet PUBLIC mshadow) target_compile_options(