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