|
1 | 1 | cmake_minimum_required (VERSION 3.21 FATAL_ERROR) |
2 | 2 |
|
3 | 3 | #------------------------------------------------------------------------------- |
4 | | -# Setup languages to use. Only enable CUDA if GPU's are in use. |
| 4 | +# Setup languages to use. Only enable HIP if GPU's are in use. |
5 | 5 | #------------------------------------------------------------------------------- |
6 | 6 | project (kronmult LANGUAGES CXX) |
7 | 7 |
|
8 | 8 | option (USE_GPU "Use HIP for gpu support" OFF) |
9 | | - set(GPU_ARCH "86" CACHE STRING "GPU architecture code for AMD/NVIDIA") |
| 9 | + set(GPU_ARCH "70" CACHE STRING "GPU architecture code for AMD/NVIDIA") |
10 | 10 | if (USE_GPU) |
11 | 11 | set(KRONMULT_PLATFORM_AMD 0) |
12 | 12 | set(KRONMULT_PLATFORM_NVCC 0) |
|
63 | 63 | # look for HIP cmake configs in different locations |
64 | 64 | list(APPEND CMAKE_MODULE_PATH "${HIP_PATH}/cmake" "${HIP_PATH}/lib/cmake" "${ROCM_PATH}") |
65 | 65 | list(APPEND CMAKE_PREFIX_PATH "${HIP_PATH}/cmake" "${HIP_PATH}/lib/cmake" "${ROCM_PATH}") |
66 | | - set(CMAKE_HIP_ARCHITECTURES OFF) # enable if using CMake 3.21 |
| 66 | + set(CMAKE_HIP_ARCHITECTURES OFF) |
67 | 67 | find_package(HIP REQUIRED 4.0) |
68 | 68 | if(KRONMULT_PLATFORM_AMD) |
69 | | - enable_language (HIP) # enable if using CMake 3.21 |
| 69 | + enable_language (HIP) |
70 | 70 | set_target_properties(hip-lang::device PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${HIP_PATH}/include) |
71 | 71 | endif() |
72 | 72 |
|
|
104 | 104 | # Sanitizer options |
105 | 105 | #------------------------------------------------------------------------------- |
106 | 106 | set (CMAKE_CXX_FLAGS_SANITIZED -fno-omit-frame-pointer) |
107 | | - set (CMAKE_CUDA_FLAGS_SANITIZED -fno-omit-frame-pointer) |
| 107 | + set (CMAKE_HIP_FLAGS_SANITIZED -fno-omit-frame-pointer) |
108 | 108 | set (CMAKE_EXE_LINKER_FLAGS_SANITIZED "") |
109 | 109 | set (CMAKE_SHARED_LINKER_FLAGS_SANITIZED "") |
110 | 110 |
|
|
115 | 115 |
|
116 | 116 | if (${SANITIZE_${upper_name}}) |
117 | 117 | set (CMAKE_CXX_FLAGS_SANITIZED "${CMAKE_CXX_FLAGS_SANITIZED} -fsanitize=${name}") |
118 | | - set (CMAKE_CUDA_FLAGS_SANITIZED "${CMAKE_CUDA_FLAGS_SANITIZED} -fsanitize=${name}") |
| 118 | + set (CMAKE_HIP_FLAGS_SANITIZED "${CMAKE_HIP_FLAGS_SANITIZED} -fsanitize=${name}") |
119 | 119 | set (CMAKE_EXE_LINKER_FLAGS_SANITIZED "${CMAKE_EXE_LINKER_FLAGS_SANITIZED} -fsanitize=${name}") |
120 | 120 | set (CMAKE_SHARED_LINKER_FLAGS_SANITIZED "${CMAKE_SHARED_LINKER_FLAGS_SANITIZED} -fsanitize=${name}") |
121 | 121 | endif () |
|
128 | 128 | register_sanitizer_option (undefined ON) |
129 | 129 |
|
130 | 130 | #------------------------------------------------------------------------------- |
131 | | -# Define a macro function to set a targets source files to the CUDA language. |
| 131 | +# Define a macro function to set a targets source files to the HIP language. |
132 | 132 | # |
133 | 133 | # Can't use $<$<COMPILE_LANGUAGE:LANG>:foo> generator expressions for |
134 | 134 | # target_compile_features |
135 | 135 | # |
136 | 136 | # Need to handle this with an explicit if statement. |
137 | 137 | #------------------------------------------------------------------------------- |
138 | | - macro (target_set_cuda target) |
| 138 | + macro (target_set_hip target) |
139 | 139 | if (USE_GPU) |
140 | 140 | get_target_property (SOURCES ${target} SOURCES) |
141 | | - set_source_files_properties (${SOURCES} PROPERTIES LANGUAGE HIP) # enable if using CMake 3.21 |
| 141 | + set_source_files_properties (${SOURCES} PROPERTIES LANGUAGE HIP) |
142 | 142 |
|
143 | 143 | if(KRONMULT_PLATFORM_NVCC) |
144 | 144 | target_compile_features (${target} PUBLIC cuda_std_14) |
145 | 145 | set_source_files_properties (${SOURCES} PROPERTIES LANGUAGE CUDA) |
146 | 146 | set_target_properties (${target} PROPERTIES CUDA_ARCHITECTURES ${GPU_ARCH}) |
147 | 147 | else() |
148 | 148 | set_source_files_properties (${SOURCES} PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1) |
149 | | - set_target_properties (${target} PROPERTIES HIP_ARCHITECTURES ${GPU_ARCH}) |
| 149 | + set_target_properties (${target} PROPERTIES HIP_ARCHITECTURES gfx${GPU_ARCH}) |
150 | 150 | set_target_properties (${target} PROPERTIES LINKER_LANGUAGE HIP) |
151 | 151 | #target_link_libraries(${target} PUBLIC hip-lang::device) |
152 | 152 | endif() |
|
168 | 168 | add_library (kron SHARED) |
169 | 169 |
|
170 | 170 | # Note can't use generator expressions on the source files since it interfers |
171 | | -# with setting the source property to target CUDA. |
| 171 | +# with setting the source property to target HIP. |
172 | 172 | target_sources (kron |
173 | 173 |
|
174 | 174 | PRIVATE |
|
201 | 201 | ) |
202 | 202 |
|
203 | 203 | target_compile_features (kron PUBLIC cxx_std_17) |
204 | | - target_set_cuda (kron) |
| 204 | + target_set_hip (kron) |
205 | 205 |
|
206 | 206 | target_compile_options (kron |
207 | 207 | PUBLIC |
208 | 208 | $<$<COMPILE_LANGUAGE:CXX>:-Wall -Wextra -Wpedantic> |
209 | 209 | $<$<BOOL:${KRONMULT_PLATFORM_NVCC}>:--compiler-options -fPIC --keep-device-functions> |
210 | | - $<$<BOOL:${KRONMULT_PLATFORM_AMD}>:--offload-arch=${GPU_ARCH}> |
| 210 | + $<$<BOOL:${KRONMULT_PLATFORM_AMD}>:--offload-arch=gfx${GPU_ARCH}> |
211 | 211 | ) |
212 | 212 |
|
213 | 213 | target_compile_definitions (kron |
|
233 | 233 | PRIVATE |
234 | 234 | ${source} |
235 | 235 | ) |
236 | | - target_set_cuda (${target}) |
| 236 | + target_set_hip (${target}) |
237 | 237 | target_link_libraries (${target} PUBLIC kron) |
238 | 238 |
|
239 | 239 | add_test (NAME ${target} |
|
0 commit comments