@@ -148,28 +148,71 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
148148set (CMAKE_CXX_STANDARD 17)
149149set (CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler -Wall -ldl" ) # -Xptxas -v
150150
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 ()
171208 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 ()
173216
174217message (STATUS "Building with CUDA archs: ${CMAKE_CUDA_ARCHITECTURES} " )
175218
0 commit comments