我正在支持GPU的机器上编写代码,但我的代码需要可移植到没有GPU的计算机上。所以我写了两个函数,一个只使用CPU,一个使用CPU + GPU。
我是一个条件合规性代码,例如:
if (COMPUTER_HAS_GPU)
//Run CPU+GPU code
else
//Run CPU only code
有这样的东西吗?
答案 0 :(得分:5)
您可以使用cudaGetDeviceCount()
例如:
int devices = 0;
cudaError_t err = cudaGetDeviceCount(&devices);
if (devices > 0 && err == cudaSuccess)
{
// Run CPU+GPU code
}
else
{
// Run CPU only code
}
答案 1 :(得分:2)
您可以尝试使用cudaGetDeviceCount(*int);
功能,它可以为您提供多少cuda设备,您可以查看错误代码。
int i;
cudaError_t e = cudaGetDeviceCount(&i);
if (e == cudaErrorNoDevice) {
// No CUDA device :-(
} else {
// CUDA device .o/
}