--- /dev/null
+# cmake/FindNCCL.cmake
+
+# NVIDIA does not distribute CMake files with NCCl, therefore use this file to find it instead.
+
+find_path(NCCL_INCLUDE_DIR
+ NAMES nccl.h
+ HINTS ${NCCL_ROOT} $ENV{NCCL_ROOT} $ENV{CUDA_HOME} /usr/local/cuda
+ PATH_SUFFIXES include
+)
+
+find_library(NCCL_LIBRARY
+ NAMES nccl
+ HINTS ${NCCL_ROOT} $ENV{NCCL_ROOT} $ENV{CUDA_HOME} /usr/local/cuda
+ PATH_SUFFIXES lib lib64
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(NCCL
+ DEFAULT_MSG
+ NCCL_LIBRARY NCCL_INCLUDE_DIR
+)
+
+if(NCCL_FOUND)
+ set(NCCL_LIBRARIES ${NCCL_LIBRARY})
+ set(NCCL_INCLUDE_DIRS ${NCCL_INCLUDE_DIR})
+
+ if(NOT TARGET NCCL::NCCL)
+ add_library(NCCL::NCCL UNKNOWN IMPORTED)
+ set_target_properties(NCCL::NCCL PROPERTIES
+ IMPORTED_LOCATION "${NCCL_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${NCCL_INCLUDE_DIR}"
+ )
+ endif()
+endif()
+
+mark_as_advanced(NCCL_INCLUDE_DIR NCCL_LIBRARY)