Enable building with shared NCCL. (#4447)
* Add `BUILD_WITH_SHARED_NCCL` to CMake.
This commit is contained in:
parent
ade3f30237
commit
8da4907e89
@ -25,8 +25,12 @@ set(NVTX_HEADER_DIR "" CACHE PATH "Path to the stand-alone nvtx header")
|
|||||||
## CUDA
|
## CUDA
|
||||||
option(USE_CUDA "Build with GPU acceleration" OFF)
|
option(USE_CUDA "Build with GPU acceleration" OFF)
|
||||||
option(USE_NCCL "Build with NCCL to enable multi-GPU support." OFF)
|
option(USE_NCCL "Build with NCCL to enable multi-GPU support." OFF)
|
||||||
|
option(BUILD_WITH_SHARED_NCCL "Build with shared NCCL library." OFF)
|
||||||
set(GPU_COMPUTE_VER "" CACHE STRING
|
set(GPU_COMPUTE_VER "" CACHE STRING
|
||||||
"Semicolon separated list of compute versions to be built against, e.g. '35;61'")
|
"Semicolon separated list of compute versions to be built against, e.g. '35;61'")
|
||||||
|
if (BUILD_WITH_SHARED_NCCL AND (NOT USE_NCCL))
|
||||||
|
message(SEND_ERROR "Build XGBoost with -DUSE_NCCL=ON to enable BUILD_WITH_SHARED_NCCL.")
|
||||||
|
endif (BUILD_WITH_SHARED_NCCL AND (NOT USE_NCCL))
|
||||||
## Sanitizers
|
## Sanitizers
|
||||||
option(USE_SANITIZER "Use santizer flags" OFF)
|
option(USE_SANITIZER "Use santizer flags" OFF)
|
||||||
option(SANITIZER_PATH "Path to sanitizes.")
|
option(SANITIZER_PATH "Path to sanitizes.")
|
||||||
|
|||||||
@ -32,8 +32,18 @@
|
|||||||
#
|
#
|
||||||
# This module assumes that the user has already called find_package(CUDA)
|
# This module assumes that the user has already called find_package(CUDA)
|
||||||
|
|
||||||
|
if (NCCL_LIBRARY)
|
||||||
|
# Don't cache NCCL_LIBRARY to enable switching between static and shared.
|
||||||
|
unset(NCCL_LIBRARY CACHE)
|
||||||
|
endif()
|
||||||
|
|
||||||
set(NCCL_LIB_NAME nccl_static)
|
if (BUILD_WITH_SHARED_NCCL)
|
||||||
|
# libnccl.so
|
||||||
|
set(NCCL_LIB_NAME nccl)
|
||||||
|
else ()
|
||||||
|
# libnccl_static.a
|
||||||
|
set(NCCL_LIB_NAME nccl_static)
|
||||||
|
endif (BUILD_WITH_SHARED_NCCL)
|
||||||
|
|
||||||
find_path(NCCL_INCLUDE_DIR
|
find_path(NCCL_INCLUDE_DIR
|
||||||
NAMES nccl.h
|
NAMES nccl.h
|
||||||
@ -43,6 +53,8 @@ find_library(NCCL_LIBRARY
|
|||||||
NAMES ${NCCL_LIB_NAME}
|
NAMES ${NCCL_LIB_NAME}
|
||||||
PATHS $ENV{NCCL_ROOT}/lib/ ${NCCL_ROOT}/lib)
|
PATHS $ENV{NCCL_ROOT}/lib/ ${NCCL_ROOT}/lib)
|
||||||
|
|
||||||
|
message(STATUS "Using nccl library: ${NCCL_LIBRARY}")
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
find_package_handle_standard_args(Nccl DEFAULT_MSG
|
find_package_handle_standard_args(Nccl DEFAULT_MSG
|
||||||
NCCL_INCLUDE_DIR NCCL_LIBRARY)
|
NCCL_INCLUDE_DIR NCCL_LIBRARY)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user