Skip to content

Commit 74481e7

Browse files
authored
Merge pull request ERGO-Code#2240 from ERGO-Code/cuda-test
Added optional FindCUDAConf for running on GPU cluster
2 parents 37adc63 + 2ce1e88 commit 74481e7

File tree

3 files changed

+52
-16
lines changed

3 files changed

+52
-16
lines changed

CMakeLists.txt

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -114,13 +114,17 @@ set(DEBUG_MEMORY "Off" CACHE STRING "Sanitizers")
114114
# emscripten
115115
option(EMSCRIPTEN_HTML "Emscripten HTML output" OFF)
116116

117-
# option(CUPDLP_GPU "Build pdlp with CPU" ON)
118-
# message(STATUS "Build pdlp with CPU: ${CUPDLP_CPU}")
119117

120118
option(CUPDLP_GPU "Build pdlp with GPU" OFF)
121-
122119
message(STATUS "Build pdlp with GPU: ${CUPDLP_GPU}")
123120

121+
option(CUPDLP_FIND_CUDA "Build pdlp with GPU" OFF)
122+
message(STATUS "Use FindCUDAConf: ${CUPDLP_FIND_CUDA}")
123+
124+
if(CUPDLP_GPU AND CMAKE_VERSION VERSION_LESS "3.25.0")
125+
message("CUPDLP FindCUDAConf requires CMake version minumum 3.24. Please use a higher version of CMake.")
126+
endif()
127+
124128
# if (NOT LINUX)
125129
# set (CUPDLP_GPU OFF)
126130
# message(STATUS "CUPLDP with Nvidia is only supported on Linux at the moment. Using CPU version.")
@@ -132,20 +136,21 @@ if (CUPDLP_GPU)
132136
endif()
133137

134138
set (CUPDLP_CPU OFF)
139+
message(NOTICE "Set build cuPDLP with CUDA")
135140

136-
# With FindCUDAConf.cmake
137-
# default cuda_home on linux
138-
# set(CUDA_HOME "/usr/local/cuda" CACHE STRING "Cuda path to install")
139-
# message(NOTICE "Set build cuPDLP with CUDA")
140-
# list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR})
141-
# include(FindCUDAConf.cmake)
142-
143-
# With deleted FindCUDAConf.cmake
144-
find_package(CUDAToolkit REQUIRED)
145-
set(CUDA_LIBRARY-NOTFOUND, OFF)
146-
set(CUDA_LIBRARY CUDA::cudart CUDA::cublas CUDA::cusparse)
141+
if (CUPDLP_FIND_CUDA)
142+
# With FindCUDAConf.cmake
143+
# Need to have the CUDA_HOME environment variable set.
144+
include(FindCUDAConf)
145+
else()
146+
# Without FindCUDAConf.cmake
147+
enable_language(CUDA)
148+
find_package(CUDAToolkit REQUIRED)
149+
150+
set(CUDA_LIBRARY-NOTFOUND, OFF)
151+
set(CUDA_LIBRARY CUDA::cudart CUDA::cublas CUDA::cusparse)
152+
endif()
147153

148-
message(NOTICE "Set build cuPDLP with CUDA")
149154
else()
150155
set (CUPDLP_CPU ON)
151156
set(CUDA_LIBRARY-NOTFOUND true)

cmake/FindCUDAConf.cmake

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
set(CUDA_LIBRARY-NOTFOUND, OFF)
2+
message(NOTICE "Finding CUDA environment")
3+
message(NOTICE " - CUDA Home detected at $ENV{CUDA_HOME}")
4+
set(CMAKE_CUDA_ARCHITECTURES "all")
5+
set(CMAKE_CUDA_PATH "$ENV{CUDA_HOME}")
6+
set(CMAKE_CUDA_COMPILER "${CMAKE_CUDA_PATH}/bin/nvcc")
7+
8+
enable_language(CUDA)
9+
10+
find_library(CUDA_LIBRARY_ART
11+
NAMES cudart
12+
HINTS "${CMAKE_CUDA_PATH}/lib64/"
13+
REQUIRED
14+
)
15+
find_library(CUDA_LIBRARY_SPS
16+
NAMES cusparse
17+
HINTS "${CMAKE_CUDA_PATH}/lib64/"
18+
REQUIRED
19+
)
20+
find_library(CUDA_LIBRARY_BLS
21+
NAMES cublas
22+
HINTS "${CMAKE_CUDA_PATH}/lib64/"
23+
REQUIRED
24+
)
25+
if (${CUDA_LIBRARY-NOTFOUND})
26+
message(WARNING " - CUDA Libraries not detected at $ENV{CUDA_HOME}")
27+
else ()
28+
message(NOTICE " - CUDA Libraries detected at $ENV{CUDA_HOME}")
29+
set(CUDA_LIBRARY ${CUDA_LIBRARY_ART} ${CUDA_LIBRARY_SPS} ${CUDA_LIBRARY_BLS})
30+
message(NOTICE " - :${CUDA_LIBRARY}")
31+
endif ()

src/pdlp/cupdlp/cuda/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ add_library(cudalin SHARED
88
)
99
set_target_properties(cudalin PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
1010

11-
set_target_properties(cudalin PROPERTIES CUDA_ARCHITECTURES native)
11+
# set_target_properties(cudalin PROPERTIES CUDA_ARCHITECTURES native)
1212

1313
target_include_directories(cudalin PUBLIC "${CMAKE_CUDA_PATH}/include")
1414

0 commit comments

Comments
 (0)