1
我在啓用GPU的機器上編寫代碼,但是我的代碼需要可移植到沒有GPU的計算機。所以我寫了2個函數,一個只使用CPU,一個使用CPU + GPU。確定一臺計算機在CUDA運行時是否具有GPU C
我是有條件的合規性的代碼,例如:
if (COMPUTER_HAS_GPU)
//Run CPU+GPU code
else
//Run CPU only code
是否有這樣的事?
我在啓用GPU的機器上編寫代碼,但是我的代碼需要可移植到沒有GPU的計算機。所以我寫了2個函數,一個只使用CPU,一個使用CPU + GPU。確定一臺計算機在CUDA運行時是否具有GPU C
我是有條件的合規性的代碼,例如:
if (COMPUTER_HAS_GPU)
//Run CPU+GPU code
else
//Run CPU only code
是否有這樣的事?
您可以使用cudaGetDeviceCount()
例如:
int devices = 0;
cudaError_t err = cudaGetDeviceCount(&devices);
if (devices > 0 && err == cudaSuccess)
{
// Run CPU+GPU code
}
else
{
// Run CPU only code
}
你可以嘗試使用cudaGetDeviceCount(*int);
功能,讓您有多少個CUDA設備你有,你可以檢查錯誤代碼。
int i;
cudaError_t e = cudaGetDeviceCount(&i);
if (e == cudaErrorNoDevice) {
// No CUDA device :-(
} else {
// CUDA device .o/
}
您的示例建議您不要在運行時執行此操作,而是在編譯時執行此操作。最簡單的方法是添加一個定義並讓用戶指定他們想要的。 – 2012-01-27 15:14:32
你說得對,我的例子確實建議運行時,但現在我改變它編譯時間。 – user1007692 2012-01-27 15:21:51
@ user10007692我假設您的意思是您的示例提供了編譯時間,但您已將其更改爲運行時。 – 2012-01-27 15:23:02