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; }