Façon la plus simple de tester l'existence de cuda-GPU capable de cmake?

Nous avons certains soirs construire des machines qui ont le cuda bibliothèques installé, mais qui n'ont pas de cuda compatible GPU installé. Ces machines sont capables de construire compatible cuda programmes, mais ils ne sont pas capables de l'exécution de ces programmes.

Dans notre automatisé nightly build, nos cmake scripts utiliser la commande cmake

find_package(CUDA)

pour déterminer si le cuda logiciel est installé. Cela définit le cmake variable CUDA_FOUND sur les plates-formes qui ont cuda logiciel installé. C'est grand et il fonctionne parfaitement. Lorsque CUDA_FOUND est défini, il est OK pour construire compatible cuda programmes. Même lorsque la machine n'a pas de cuda compatible GPU.

Mais cuda-à l'aide de programmes de test naturellement échouer sur la non-GPU cuda machines, à l'origine de nos soirée tableaux de bord, look "sale". Donc, je veux cmake pour éviter l'exécution de ces tests sur ces machines. Mais j'ai encore envie de construire le cuda de logiciels sur ces machines.

Après l'obtention d'un positif CUDA_FOUND résultat, je voudrais tester la présence d'un GPU, puis définir une variable, par exemple CUDA_GPU_FOUND, pour en tenir compte.

Quelle est la façon la plus simple pour obtenir cmake pour tester la présence d'un cuda compatible gpu?

Ce besoin de travailler sur les trois plates-formes: Windows avec MSVC, Mac, et Linux. (C'est pourquoi nous utilisons cmake en premier lieu)

EDIT: Il ya un couple de bonne à la recherche de suggestions dans les réponses pour savoir comment écrire un programme pour tester la présence d'un GPU. Ce qui manque encore est le moyen d'accéder à CMake pour compiler et exécuter ce programme au moment de la configuration. Je soupçonne que le TRY_RUN commande CMake sera critique ici, mais malheureusement, la commande est près de sans-papiers, et je ne peux pas comprendre comment le faire fonctionner. Cette CMake une partie du problème pourrait être beaucoup plus une question difficile. Peut-être que j'aurais demandé à ce que les deux questions distinctes...

OriginalL'auteur Christopher Bruns | 2010-02-17