summaryrefslogtreecommitdiffstats
path: root/Modules/CMakeCUDACompilerABI.cu
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-09-15 15:47:28 (GMT)
committerBrad King <brad.king@kitware.com>2023-09-21 19:34:28 (GMT)
commit8617c28221cac2bd89402178b25dcd47445a9349 (patch)
tree4570dd05f43aedb4d2f14c13a9c1d5e188654ad9 /Modules/CMakeCUDACompilerABI.cu
parent0db0fe7958346ace0f5f01496e071c365faf3eb9 (diff)
downloadCMake-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.cu25
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;