@@ -148,28 +148,71 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
148
148
set (CMAKE_CXX_STANDARD 17)
149
149
set (CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler -Wall -ldl" ) # -Xptxas -v
150
150
151
- # TODO: build for sm_72 & sm_87 on aarch64 platform (Jetson devices)
152
- if (NOT CMAKE_CUDA_ARCHITECTURES)
153
- set (CMAKE_CUDA_ARCHITECTURES 70-real 75-real) # V100, 2080
154
- if (${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER_EQUAL "11" )
155
- list (APPEND CMAKE_CUDA_ARCHITECTURES 80-real) # A100
156
- endif ()
157
- if (${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER_EQUAL "11.1" )
158
- list (APPEND CMAKE_CUDA_ARCHITECTURES 86-real) # 3090
159
- endif ()
160
- if (${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER_EQUAL "11.8" )
161
- list (APPEND CMAKE_CUDA_ARCHITECTURES 89-real) # 4090
162
- endif ()
163
- if (${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER_EQUAL "12.0" )
164
- list (APPEND CMAKE_CUDA_ARCHITECTURES 90a-real) # H100
165
- endif ()
166
- if (${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER_EQUAL "12.8" )
167
- list (APPEND CMAKE_CUDA_ARCHITECTURES 120a-real) # 5090
168
- endif ()
169
- if (MSVC )
170
- list (REMOVE_ITEM CMAKE_CUDA_ARCHITECTURES 80-real 90a-real)
151
+ if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" )
152
+ set (ARCH "x86_64" )
153
+ elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64" )
154
+ set (ARCH "x86_64" )
155
+ elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64" )
156
+ # cmake reports AMD64 on Windows, but we might be building for 32-bit.
157
+ if (CMAKE_SIZEOF_VOID_P EQUAL 8)
158
+ set (ARCH "x86_64" )
159
+ else ()
160
+ set (ARCH "x86" )
161
+ endif ()
162
+ elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86" )
163
+ set (ARCH "x86" )
164
+ elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "i386" )
165
+ set (ARCH "x86" )
166
+ elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "i686" )
167
+ set (ARCH "x86" )
168
+ elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" )
169
+ set (ARCH "aarch64" )
170
+ elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64" )
171
+ set (ARCH "aarch64" )
172
+ # Apple A12 Bionic chipset which is added in iPhone XS/XS Max/XR uses arm64e architecture.
173
+ elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64e" )
174
+ set (ARCH "aarch64" )
175
+ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^arm*" )
176
+ set (ARCH "arm" )
177
+ elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "mips" )
178
+ # Just to avoid the “unknown processor” error.
179
+ set (ARCH "generic" )
180
+ elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le" )
181
+ set (ARCH "ppc64le" )
182
+ else ()
183
+ message (FATAL_ERROR "Unknown processor:" ${CMAKE_SYSTEM_PROCESSOR} )
184
+ endif ()
185
+
186
+
187
+ if (ARCH STREQUAL "x86_64" )
188
+ if (NOT CMAKE_CUDA_ARCHITECTURES)
189
+ set (CMAKE_CUDA_ARCHITECTURES 70-real 75-real) # V100, 2080
190
+ if (${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER_EQUAL "11" )
191
+ list (APPEND CMAKE_CUDA_ARCHITECTURES 80-real) # A100
192
+ endif ()
193
+ if (${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER_EQUAL "11.1" )
194
+ list (APPEND CMAKE_CUDA_ARCHITECTURES 86-real) # 3090
195
+ endif ()
196
+ if (${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER_EQUAL "11.8" )
197
+ list (APPEND CMAKE_CUDA_ARCHITECTURES 89-real) # 4090
198
+ endif ()
199
+ if (${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER_EQUAL "12.0" )
200
+ list (APPEND CMAKE_CUDA_ARCHITECTURES 90a-real) # H100
201
+ endif ()
202
+ if (${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER_EQUAL "12.8" )
203
+ list (APPEND CMAKE_CUDA_ARCHITECTURES 120a-real) # 5090
204
+ endif ()
205
+ if (MSVC )
206
+ list (REMOVE_ITEM CMAKE_CUDA_ARCHITECTURES 80-real 90a-real)
207
+ endif ()
171
208
endif ()
172
- endif ()
209
+ elseif (ARCH STREQUAL "aarch64" )
210
+ if (NOT CMAKE_CUDA_ARCHITECTURES)
211
+ set (CMAKE_CUDA_ARCHITECTURES 72-real 87-real) # Jetson
212
+ endif ()
213
+ else ()
214
+ message (FATAL_ERROR "Unsupported Architecture:" ${ARCH} )
215
+ endif ()
173
216
174
217
message (STATUS "Building with CUDA archs: ${CMAKE_CUDA_ARCHITECTURES} " )
175
218
0 commit comments