未验证 提交 4227343f 编写于 作者: J Juncheng 提交者: GitHub

Add cmake option USE_SYSTEM_NCCL (#5897)

* Add cmake option USE_SYSTEM_NCCL

nccl target

* rm mark_as_advanced
上级 8eee89d7
include (ExternalProject)
option(NCCL_STATIC "" ON)
if(OF_CUDA_LINK_DYNAMIC_LIBRARY)
set(NCCL_STATIC OFF)
set(NCCL_STATIC OFF)
endif()
set(NCCL_INSTALL_DIR ${THIRD_PARTY_DIR}/nccl)
set(NCCL_INCLUDE_DIR ${NCCL_INSTALL_DIR}/include)
set(NCCL_LIBRARY_DIR ${NCCL_INSTALL_DIR}/lib)
set(NCCL_URL https://github.com/NVIDIA/nccl/archive/refs/tags/v2.9.8-1.tar.gz)
use_mirror(VARIABLE NCCL_URL URL ${NCCL_URL})
option(USE_SYSTEM_NCCL "" OFF)
set(NCCL_ROOT_DIR "" CACHE PATH "Folder contains NVIDIA NCCL")
if(WIN32)
set(NCCL_LIBRARY_NAMES libnccl_static.lib)
set(NCCL_LIBRARY_NAME libnccl_static.lib)
else()
if(NCCL_STATIC)
set(NCCL_LIBRARY_NAMES libnccl_static.a)
set(NCCL_LIBRARY_NAME libnccl_static.a)
else()
set(NCCL_LIBRARY_NAMES libnccl.so)
set(NCCL_LIBRARY_NAME libnccl.so)
endif()
endif()
foreach(LIBRARY_NAME ${NCCL_LIBRARY_NAMES})
list(APPEND NCCL_LIBRARIES ${NCCL_LIBRARY_DIR}/${LIBRARY_NAME})
endforeach()
if(THIRD_PARTY)
include(ProcessorCount)
ProcessorCount(PROC_NUM)
ExternalProject_Add(nccl
PREFIX nccl
URL ${NCCL_URL}
URL_MD5 9894dffc51d9d276f01286094ac220ac
UPDATE_COMMAND ""
CONFIGURE_COMMAND ""
BUILD_IN_SOURCE 1
BUILD_COMMAND make -j${PROC_NUM} src.build CUDA_HOME=${CUDA_TOOLKIT_ROOT_DIR}
INSTALL_COMMAND make src.install PREFIX=${NCCL_INSTALL_DIR}
BUILD_BYPRODUCTS ${NCCL_LIBRARIES}
)
endif(THIRD_PARTY)
if(USE_SYSTEM_NCCL)
include(FindPackageHandleStandardArgs)
find_path(NCCL_INCLUDE_DIR nccl.h
HINTS ${NCCL_ROOT_DIR} ${CUDA_TOOLKIT_ROOT_DIR}
PATH_SUFFIXES cuda/include include)
unset(NCCL_LIBRARY CACHE)
find_library(NCCL_LIBRARY ${NCCL_LIBRARY_NAME}
HINTS ${NCCL_ROOT_DIR} ${CUDA_TOOLKIT_ROOT_DIR}
PATH_SUFFIXES lib lib64 cuda/lib cuda/lib64 lib/x64)
find_package_handle_standard_args(
NCCL DEFAULT_MSG NCCL_INCLUDE_DIR NCCL_LIBRARY)
set(NCCL_LIBRARIES ${NCCL_LIBRARY})
add_custom_target(nccl)
else()
include (ExternalProject)
set(NCCL_INSTALL_DIR ${THIRD_PARTY_DIR}/nccl)
set(NCCL_INCLUDE_DIR ${NCCL_INSTALL_DIR}/include)
set(NCCL_LIBRARY_DIR ${NCCL_INSTALL_DIR}/lib)
set(NCCL_URL https://github.com/NVIDIA/nccl/archive/refs/tags/v2.9.8-1.tar.gz)
use_mirror(VARIABLE NCCL_URL URL ${NCCL_URL})
list(APPEND NCCL_LIBRARIES ${NCCL_LIBRARY_DIR}/${NCCL_LIBRARY_NAME})
if(THIRD_PARTY)
include(ProcessorCount)
ProcessorCount(PROC_NUM)
ExternalProject_Add(nccl
PREFIX nccl
URL ${NCCL_URL}
URL_MD5 9894dffc51d9d276f01286094ac220ac
UPDATE_COMMAND ""
CONFIGURE_COMMAND ""
BUILD_IN_SOURCE 1
BUILD_COMMAND make -j${PROC_NUM} src.build CUDA_HOME=${CUDA_TOOLKIT_ROOT_DIR}
INSTALL_COMMAND make src.install PREFIX=${NCCL_INSTALL_DIR}
BUILD_BYPRODUCTS ${NCCL_LIBRARIES}
)
endif(THIRD_PARTY)
endif()
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册