mirror of
				https://github.com/ml-explore/mlx.git
				synced 2025-10-31 16:13:14 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| # FindNCCL.cmake This module finds the NVIDIA NCCL library and its include
 | |
| # directories.
 | |
| 
 | |
| set(NCCL_ROOT_DIR
 | |
|     $ENV{NCCL_ROOT_DIR}
 | |
|     CACHE PATH "Folder contains NVIDIA NCCL")
 | |
| 
 | |
| find_path(
 | |
|   NCCL_INCLUDE_DIRS
 | |
|   NAMES nccl.h
 | |
|   HINTS ${NCCL_INCLUDE_DIR} ${NCCL_ROOT_DIR} ${NCCL_ROOT_DIR}/include
 | |
|         ${CUDA_TOOLKIT_ROOT_DIR}/include)
 | |
| 
 | |
| if($ENV{USE_STATIC_NCCL})
 | |
|   message(
 | |
|     STATUS "USE_STATIC_NCCL detected. Linking against static NCCL library")
 | |
|   set(NCCL_LIBNAME "libnccl_static.a")
 | |
| else()
 | |
|   set(NCCL_LIBNAME "nccl")
 | |
| endif()
 | |
| 
 | |
| find_library(
 | |
|   NCCL_LIBRARIES
 | |
|   NAMES ${NCCL_LIBNAME}
 | |
|   HINTS ${NCCL_LIB_DIR}
 | |
|         ${NCCL_ROOT_DIR}
 | |
|         ${NCCL_ROOT_DIR}/lib
 | |
|         ${NCCL_ROOT_DIR}/lib/x86_64-linux-gnu
 | |
|         ${NCCL_ROOT_DIR}/lib64
 | |
|         ${CUDA_TOOLKIT_ROOT_DIR}/lib
 | |
|         ${CUDA_TOOLKIT_ROOT_DIR}/lib64)
 | |
| 
 | |
| include(FindPackageHandleStandardArgs)
 | |
| find_package_handle_standard_args(NCCL DEFAULT_MSG NCCL_INCLUDE_DIRS
 | |
|                                   NCCL_LIBRARIES)
 | |
| 
 | |
| if(NCCL_FOUND)
 | |
|   set(NCCL_HEADER_FILE "${NCCL_INCLUDE_DIRS}/nccl.h")
 | |
|   message(
 | |
|     STATUS "Determining NCCL version from the header file: ${NCCL_HEADER_FILE}")
 | |
|   file(
 | |
|     STRINGS ${NCCL_HEADER_FILE} NCCL_MAJOR_VERSION_DEFINED
 | |
|     REGEX "^[ \t]*#define[ \t]+NCCL_MAJOR[ \t]+[0-9]+.*$"
 | |
|     LIMIT_COUNT 1)
 | |
|   if(NCCL_MAJOR_VERSION_DEFINED)
 | |
|     string(REGEX REPLACE "^[ \t]*#define[ \t]+NCCL_MAJOR[ \t]+" ""
 | |
|                          NCCL_MAJOR_VERSION ${NCCL_MAJOR_VERSION_DEFINED})
 | |
|     message(STATUS "NCCL_MAJOR_VERSION: ${NCCL_MAJOR_VERSION}")
 | |
|   endif()
 | |
|   message(
 | |
|     STATUS
 | |
|       "Found NCCL (include: ${NCCL_INCLUDE_DIRS}, library: ${NCCL_LIBRARIES})")
 | |
|   mark_as_advanced(NCCL_ROOT_DIR NCCL_INCLUDE_DIRS NCCL_LIBRARIES)
 | |
| endif()
 | 
