microsoft/onnxruntime-extensions
Publicmirrored fromhttps://github.com/microsoft/onnxruntime-extensionsAvailable
cmake/ext_cuda.cmake
71lines · modecode
| 1 | # Copyright (c) Microsoft Corporation. All rights reserved. |
| 2 | # Licensed under the MIT License. |
| 3 | |
| 4 | enable_language(CUDA) |
| 5 | |
| 6 | set(CMAKE_CUDA_RUNTIME_LIBRARY Shared) |
| 7 | set(CMAKE_CUDA_STANDARD 17) |
| 8 | |
| 9 | |
| 10 | if(NOT CMAKE_CUDA_ARCHITECTURES) |
| 11 | if(CMAKE_LIBRARY_ARCHITECTURE STREQUAL "aarch64-linux-gnu") |
| 12 | # Support for Jetson/Tegra ARM devices |
| 13 | set(CMAKE_CUDA_FLAGS |
| 14 | "${CMAKE_CUDA_FLAGS} -gencode=arch=compute_53,code=sm_53") # TX1, Nano |
| 15 | set(CMAKE_CUDA_FLAGS |
| 16 | "${CMAKE_CUDA_FLAGS} -gencode=arch=compute_62,code=sm_62") # TX2 |
| 17 | set(CMAKE_CUDA_FLAGS |
| 18 | "${CMAKE_CUDA_FLAGS} -gencode=arch=compute_72,code=sm_72") # AGX Xavier, |
| 19 | # NX Xavier |
| 20 | if(CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 11) |
| 21 | set(CMAKE_CUDA_FLAGS |
| 22 | "${CMAKE_CUDA_FLAGS} -gencode=arch=compute_87,code=sm_87") # AGX Orin, |
| 23 | # NX Orin |
| 24 | endif() |
| 25 | else() |
| 26 | # the following compute capabilities are removed in CUDA 11 Toolkit |
| 27 | if(CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 11) |
| 28 | set(CMAKE_CUDA_FLAGS |
| 29 | "${CMAKE_CUDA_FLAGS} -gencode=arch=compute_30,code=sm_30") # K series |
| 30 | endif() |
| 31 | if(CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 12) |
| 32 | # 37, 50 still work in CUDA 11 but are marked deprecated and will be |
| 33 | # removed in future CUDA version. |
| 34 | set(CMAKE_CUDA_FLAGS |
| 35 | "${CMAKE_CUDA_FLAGS} -gencode=arch=compute_37,code=sm_37") # K80 |
| 36 | set(CMAKE_CUDA_FLAGS |
| 37 | "${CMAKE_CUDA_FLAGS} -gencode=arch=compute_50,code=sm_50") # M series |
| 38 | endif() |
| 39 | set(CMAKE_CUDA_FLAGS |
| 40 | "${CMAKE_CUDA_FLAGS} -gencode=arch=compute_52,code=sm_52") # M60 |
| 41 | set(CMAKE_CUDA_FLAGS |
| 42 | "${CMAKE_CUDA_FLAGS} -gencode=arch=compute_60,code=sm_60") # P series |
| 43 | set(CMAKE_CUDA_FLAGS |
| 44 | "${CMAKE_CUDA_FLAGS} -gencode=arch=compute_70,code=sm_70") # V series |
| 45 | set(CMAKE_CUDA_FLAGS |
| 46 | "${CMAKE_CUDA_FLAGS} -gencode=arch=compute_75,code=sm_75") # T series |
| 47 | if(CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 11) |
| 48 | set(CMAKE_CUDA_FLAGS |
| 49 | "${CMAKE_CUDA_FLAGS} -gencode=arch=compute_80,code=sm_80") # A series |
| 50 | endif() |
| 51 | if(CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 12) |
| 52 | set(CMAKE_CUDA_FLAGS |
| 53 | "${CMAKE_CUDA_FLAGS} -gencode=arch=compute_90,code=sm_90") # H series |
| 54 | endif() |
| 55 | endif() |
| 56 | endif() |
| 57 | set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --expt-relaxed-constexpr") |
| 58 | if(CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 11) |
| 59 | set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --Werror default-stream-launch") |
| 60 | endif() |
| 61 | |
| 62 | if(NOT WIN32) |
| 63 | list(APPEND CUDA_NVCC_FLAGS --compiler-options -fPIC) |
| 64 | endif() |
| 65 | |
| 66 | # Options passed to cudafe |
| 67 | set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcudafe \"--diag_suppress=bad_friend_decl\"") |
| 68 | set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcudafe \"--diag_suppress=unsigned_compare_with_zero\"") |
| 69 | set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcudafe \"--diag_suppress=expr_has_no_effect\"") |
| 70 | |
| 71 | add_compile_definitions(USE_CUDA) |
| 72 | |