From e136c11c7cc357481e3415b048ed6c2f378e6f33 Mon Sep 17 00:00:00 2001 From: Hamdi Sahloul Date: Thu, 16 Aug 2018 16:38:47 +0900 Subject: [PATCH] Avoid detecting dublicate CUDA archs --- cmake/checks/OpenCVDetectCudaArch.cu | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/cmake/checks/OpenCVDetectCudaArch.cu b/cmake/checks/OpenCVDetectCudaArch.cu index 9d7086cf24..70ca975530 100644 --- a/cmake/checks/OpenCVDetectCudaArch.cu +++ b/cmake/checks/OpenCVDetectCudaArch.cu @@ -1,14 +1,25 @@ -#include +#include +#include +#include + int main() { + std::ostringstream arch; + std::list archs; + int count = 0; - if (cudaSuccess != cudaGetDeviceCount(&count)){return -1;} - if (count == 0) {return -1;} + if (cudaSuccess != cudaGetDeviceCount(&count)){ return -1; } + if (count == 0) { return -1; } for (int device = 0; device < count; ++device) { cudaDeviceProp prop; - if (cudaSuccess != cudaGetDeviceProperties(&prop, device)){ continue;} - printf("%d.%d ", prop.major, prop.minor); + if (cudaSuccess != cudaGetDeviceProperties(&prop, device)){ continue; } + arch << prop.major << "." << prop.minor; + archs.push_back(arch.str()); + arch.str(""); } + archs.unique(); #Some devices might have the same arch + for (std::list::iterator it=archs.begin(); it!=archs.end(); ++it) + std::cout << *it << " "; return 0; }