У нас есть ночные машины для сборки, в которых установлены cuda libraries, но у которых нет графического процессора с поддержкой Cuda. Эти машины способны создавать cuda-совместимые программы, но они не могут запускать эти программы.
В нашем автоматизированном процессе ночной сборки наши скрипты cmake используют команду cmake
find_package(CUDA)
чтобы определить, установлено ли программное обеспечение cuda. Это устанавливает переменную cmake CUDA_FOUND
на платформах, на которых установлено программное обеспечение cuda. Это здорово и прекрасно работает. Если параметр CUDA_FOUND
установлен, все в порядке, чтобы создавать программы с поддержкой cuda. Даже когда машина не имеет графического процессора с поддержкой cuda.
Но тестовые программы, использующие cuda, естественно терпят неудачу на машинах cuda, отличных от GPU, что приводит к тому, что наши ночные панели выглядят "грязными". Поэтому я хочу, чтобы cmake не выполнял эти тесты на таких машинах. Но я все еще хочу создать программное обеспечение cuda на этих машинах.
После получения положительного результата CUDA_FOUND
я хотел бы проверить наличие фактического графического процессора, а затем установить переменную, скажем CUDA_GPU_FOUND
, чтобы отразить это.
Каков самый простой способ получить cmake для проверки наличия gpu-совместимого cuda?
Это должно работать на трех платформах: Windows с MSVC, Mac и Linux. (Вот почему мы используем cmake в первую очередь)
РЕДАКТИРОВАТЬ: В ответах есть несколько хороших предложений по написанию программы для проверки наличия графического процессора. То, что все еще отсутствует, является средством получения CMake для компиляции и запуска этой программы во время настройки. Я подозреваю, что команда TRY_RUN
в CMake будет здесь критической, но, к сожалению, эта команда почти недокументирована, и я не могу понять, как сделать он работает. Эта проблема CMake может быть гораздо более сложным вопросом. Возможно, я должен был задать это как два отдельных вопроса...