Skip to content

Commit 68fb0ba

Browse files
committed
Change CMake to use NCCL on Windows
(cherry picked from commit 6c90394444d9b1628b59570e0bbdb3c7b6a89ce1) (cherry picked from commit 23e1600c7dcf6c87f2e2a9f1d7d96ee849e8ec9c) (cherry picked from commit 530aac6efb31aad61a021953238e050c34922d14)
1 parent 073bb2c commit 68fb0ba

1 file changed

Lines changed: 55 additions & 17 deletions

File tree

‎ggml/cmake/FindNCCL.cmake‎

Lines changed: 55 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,33 +4,71 @@
44

55
find_path(NCCL_INCLUDE_DIR
66
NAMES nccl.h
7-
HINTS ${NCCL_ROOT} $ENV{NCCL_ROOT} $ENV{CUDA_HOME} /usr/local/cuda
7+
HINTS ${NCCL_ROOT} $ENV{NCCL_ROOT} $ENV{CUDA_HOME} /usr/local/cuda $ENV{CUDA_PATH}
88
PATH_SUFFIXES include
99
)
1010

11-
find_library(NCCL_LIBRARY
12-
NAMES nccl
13-
HINTS ${NCCL_ROOT} $ENV{NCCL_ROOT} $ENV{CUDA_HOME} /usr/local/cuda
14-
PATH_SUFFIXES lib lib64
15-
)
11+
if(WIN32)
12+
find_library(NCCL_STATIC_LIBRARY
13+
NAMES nccl_static
14+
HINTS ${NCCL_ROOT} $ENV{NCCL_ROOT} $ENV{CUDA_PATH} $ENV{CUDA_HOME}
15+
PATH_SUFFIXES lib lib/x64
16+
)
17+
18+
find_library(NCCL_DEVICE_LIBRARY
19+
NAMES nccl_device
20+
HINTS ${NCCL_ROOT} $ENV{NCCL_ROOT} $ENV{CUDA_PATH} $ENV{CUDA_HOME}
21+
PATH_SUFFIXES lib lib/x64
22+
)
23+
else()
24+
find_library(NCCL_LIBRARY
25+
NAMES nccl
26+
HINTS ${NCCL_ROOT} $ENV{NCCL_ROOT} $ENV{CUDA_HOME} /usr/local/cuda
27+
PATH_SUFFIXES lib lib64
28+
)
29+
endif()
1630

1731
include(FindPackageHandleStandardArgs)
18-
find_package_handle_standard_args(NCCL
19-
DEFAULT_MSG
20-
NCCL_LIBRARY NCCL_INCLUDE_DIR
21-
)
32+
33+
if(WIN32)
34+
find_package_handle_standard_args(NCCL
35+
DEFAULT_MSG
36+
NCCL_STATIC_LIBRARY NCCL_DEVICE_LIBRARY NCCL_INCLUDE_DIR
37+
)
38+
else()
39+
find_package_handle_standard_args(NCCL
40+
DEFAULT_MSG
41+
NCCL_LIBRARY NCCL_INCLUDE_DIR
42+
)
43+
endif()
2244

2345
if(NCCL_FOUND)
24-
set(NCCL_LIBRARIES ${NCCL_LIBRARY})
46+
if(WIN32)
47+
set(NCCL_LIBRARIES ${NCCL_STATIC_LIBRARY} ${NCCL_DEVICE_LIBRARY})
48+
else()
49+
set(NCCL_LIBRARIES ${NCCL_LIBRARY})
50+
endif()
2551
set(NCCL_INCLUDE_DIRS ${NCCL_INCLUDE_DIR})
2652

2753
if(NOT TARGET NCCL::NCCL)
28-
add_library(NCCL::NCCL UNKNOWN IMPORTED)
29-
set_target_properties(NCCL::NCCL PROPERTIES
30-
IMPORTED_LOCATION "${NCCL_LIBRARY}"
31-
INTERFACE_INCLUDE_DIRECTORIES "${NCCL_INCLUDE_DIR}"
32-
)
54+
if(WIN32)
55+
add_library(NCCL::NCCL INTERFACE IMPORTED)
56+
set_target_properties(NCCL::NCCL PROPERTIES
57+
INTERFACE_INCLUDE_DIRECTORIES "${NCCL_INCLUDE_DIR}"
58+
INTERFACE_LINK_LIBRARIES "${NCCL_STATIC_LIBRARY};${NCCL_DEVICE_LIBRARY}"
59+
)
60+
else()
61+
add_library(NCCL::NCCL UNKNOWN IMPORTED)
62+
set_target_properties(NCCL::NCCL PROPERTIES
63+
IMPORTED_LOCATION "${NCCL_LIBRARY}"
64+
INTERFACE_INCLUDE_DIRECTORIES "${NCCL_INCLUDE_DIR}"
65+
)
66+
endif()
3367
endif()
3468
endif()
3569

36-
mark_as_advanced(NCCL_INCLUDE_DIR NCCL_LIBRARY)
70+
if(WIN32)
71+
mark_as_advanced(NCCL_INCLUDE_DIR NCCL_STATIC_LIBRARY NCCL_DEVICE_LIBRARY)
72+
else()
73+
mark_as_advanced(NCCL_INCLUDE_DIR NCCL_LIBRARY)
74+
endif()

0 commit comments

Comments
 (0)