diff options
author | Brad King <brad.king@kitware.com> | 2023-09-15 15:47:28 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2023-09-21 19:34:28 (GMT) |
commit | 8617c28221cac2bd89402178b25dcd47445a9349 (patch) | |
tree | 4570dd05f43aedb4d2f14c13a9c1d5e188654ad9 /Modules/CMakeCUDACompilerABI.cu | |
parent | 0db0fe7958346ace0f5f01496e071c365faf3eb9 (diff) | |
download | CMake-8617c28221cac2bd89402178b25dcd47445a9349.zip CMake-8617c28221cac2bd89402178b25dcd47445a9349.tar.gz CMake-8617c28221cac2bd89402178b25dcd47445a9349.tar.bz2 |
CUDA: Factor out helper for detecting native CUDA architectures
Prepare to use it for other languages.
Diffstat (limited to 'Modules/CMakeCUDACompilerABI.cu')
-rw-r--r-- | Modules/CMakeCUDACompilerABI.cu | 25 |
1 files changed, 2 insertions, 23 deletions
diff --git a/Modules/CMakeCUDACompilerABI.cu b/Modules/CMakeCUDACompilerABI.cu index 8463e86..b04d0ec 100644 --- a/Modules/CMakeCUDACompilerABI.cu +++ b/Modules/CMakeCUDACompilerABI.cu @@ -2,11 +2,8 @@ # error "A C or C++ compiler has been selected for CUDA" #endif -#include <cstdio> - -#include <cuda_runtime.h> - #include "CMakeCompilerABI.h" +#include "CMakeCompilerCUDAArch.h" int main(int argc, char* argv[]) { @@ -19,25 +16,7 @@ int main(int argc, char* argv[]) #endif static_cast<void>(argv); - int count = 0; - if (cudaGetDeviceCount(&count) != cudaSuccess || count == 0) { - std::fprintf(stderr, "No CUDA devices found.\n"); - return -1; - } - - int found = 0; - const char* sep = ""; - for (int device = 0; device < count; ++device) { - cudaDeviceProp prop; - if (cudaGetDeviceProperties(&prop, device) == cudaSuccess) { - std::printf("%s%d%d", sep, prop.major, prop.minor); - sep = ";"; - found = 1; - } - } - - if (!found) { - std::fprintf(stderr, "No CUDA architecture detected from any devices.\n"); + if (!cmakeCompilerCUDAArch()) { // Convince the compiler that the non-zero return value depends // on the info strings so they are not optimized out. return require ? -1 : 1; |