2013-11-25 11 views
11

NVIDIA CUDA Toolkitのみを使用して、同じノードにCUDA対応デバイスを持たずにCUDAプログラムをコンパイルすることはできますか?cudaデバイスを使用せずにcudaプログラムをコンパイルすることはできますか?

+6

はい。 'nvcc'コンパイラドライバはデバイスの物理的な存在に関係しないので、CUDA対応GPUなしでコンパイルすることができます。同じ理論的根拠にしたがって、ノードが異なるアーキテクチャーのGPUをホストしているときに、アーキテクチャのCUDAコードをコンパイルすることができます。もちろん、どちらの場合でも、コードを正常に実行することはできません。 CUDA対応デバイスをお持ちでない場合は、gpuocelotを試すことができます(ただし、私はこれに関する経験はありません)。 – JackOLantern

+0

@RobertCrovella説明をありがとう。コメントを完全な答えに変換しました。私が何か不足している場合、それを編集したり、コメントを追加してください。 – JackOLantern

答えて

13

あなたの質問に対する答えはYESです。

nvccコンパイラドライバはデバイスの物理的な存在に関係しないため、CUDA対応GPUなしでもCUDAコードをコンパイルできます。しかし、Robert Crovellaによると、CUDAドライバライブラリlibcuda.so(Windowsの場合はcuda.lib)にNVIDIAドライバが付属しており、CUDAツールキットインストーラには付属していないことに注意してください。これは、ドライバAPIを必要とするコード(エントリポイントの先頭にcuが付いているコード、CUDA Cプログラミングガイドの付録Hを参照)は、NVIDIA GPUが存在しない状態で「最近の」ドライバを強制的にインストールし、 --helpコマンドラインスイッチを使用します。

同じ理由で、ノードが別のアーキテクチャのGPUをホストしている場合、アーキテクチャのCUDAコードをコンパイルできます。たとえば、GT 210(コンピューティング機能1.2)をホストしているマシンでGeForce GT 540M(コンピューティング機能2.1)のコードをコンパイルできます。

もちろん、両方の場合(アーキテクチャの異なるGPUまたはGPUはありません)、コードを正常に実行することはできません。

CUDAの初期のバージョンでは、エミュレーションモダリティでコードをコンパイルしてCPUでコンパイルしたコードを実行することはできましたが、デバイスエミュレーションは廃止されて以来使用されています。 CUDA対応デバイスをお持ちではなく、CUDAコードを実行したい場合は、gpuocelotを試すことができます(ただし、私はこれに関する経験はありません)。

関連する問題