2012-01-27 7 views
1

GPU対応マシンでコードを書いていますが、GPUなしのコンピュータにコードを移植する必要があります。だから私はCPUとCPU + GPUを使用するものの2つの関数を書いた。CUDA Cでランタイム中にコンピュータにGPUが搭載されているかどうかを確認する

私は、たとえば、条件付きのコンプライアンスコードのためだ:

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

はこのようなものはありますか?

int devices = 0; 

cudaError_t err = cudaGetDeviceCount(&devices); 

if (devices > 0 && err == cudaSuccess) 
{ 
    // Run CPU+GPU code 
} 
else 
{ 
    // Run CPU only code 
} 
+2

あなたの例では、これは実行時にコンパイル時には行いたくないことを示唆しています。最も簡単なのは、定義を追加してユーザーが望むものを指定できるようにすることです。 –

+0

あなたが正しいです、私の例はランタイムを示唆しましたが、今はコンパイル時に変更しました。 – user1007692

+1

@ user10007692私は、あなたのサンプルがコンパイル時の提案を意味していたと仮定しますが、それをランタイムに変更しました。 –

答えて

4

次の例のようcudaGetDeviceCount()

使用することができます。

int i; 

cudaError_t e = cudaGetDeviceCount(&i); 

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

あなたが持っているどのように多くのCUDAデバイスあなたを与えるcudaGetDeviceCount(*int);機能を、使用しようとすることができ、あなたは、エラーコードを確認することができます。