Определите, есть ли у компьютера графический процессор во время выполнения в CUDA C - PullRequest
2 голосов
/ 27 января 2012

Я пишу код на компьютере с графическим процессором, но мой код должен быть переносимым на компьютеры без графического процессора. Итак, я написал 2 функции, одна из которых использует только процессор, а другая использует процессор + графический процессор.

Я за условный код соответствия, например:

if (COMPUTER_HAS_GPU)
    //Run CPU+GPU code  
else  
    //Run CPU only code

Есть что-нибудь подобное?

Ответы [ 2 ]

5 голосов
/ 27 января 2012

Вы можете использовать cudaGetDeviceCount()

Например:

int devices = 0; 

cudaError_t err = cudaGetDeviceCount(&devices); 

if (devices > 0 && err == cudaSuccess) 
{ 
    // Run CPU+GPU code
} 
else
{ 
    // Run CPU only code
} 
2 голосов
/ 27 января 2012

Вы можете попытаться использовать функцию cudaGetDeviceCount(*int);, которая дает вам сколько у вас устройств cuda, и вы можете проверить код ошибки.

int i;

cudaError_t e = cudaGetDeviceCount(&i);

if (e == cudaErrorNoDevice) {
 // No CUDA device :-(
} else {
 // CUDA device .o/
} 
...