2012-03-19 12 views
1

Nvidia CUDAドライバは正確に何をしていますか? CUDAを使用するという観点から。 ドライバは実行コンフィギュレーション(#threads、#blocks)... でカーネルコードを渡します。nVIDIA CUDAドライバは正確に何をしていますか?

運転手が利用可能なSMの数を認識しているはずのポストを見ました。 それは不要ですか? GPUにカーネルが渡されると、GPUスケジューラは作業を利用可能なSMに広げる必要があります。

答えて

7

GPUは完全自律型デバイスではありません。lotさらに 最も簡単なことを行う。私はそれを理解するように、ドライバは、少なくとも含ま:

  • JITコンパイラ/オプティマイザ(PTXアセンブリコード実行時にドライバによってコンパイルすることができ、必要であれば、ドライバは、デバイスの実行アーキテクチャに一致するようにコードを再コンパイルし、
  • デバイスメモリ管理)可能
  • ホストメモリ管理(DMA転送バッファ、固定及びマッピングされたホスト・メモリ、統一アドレッシングモデル)
  • コンテキストおよびランタイムサポート(SOコード/ヒープ/スタック/ printfのバッファメモリ管理)動的シンボル管理、ストリームなど
  • カーネル「グリッド・レベル」スケジューラ(それをサポートするアーキテクチャ上で管理する複数の同時カーネルを含みます)
  • 計算おそらく裸を表し(DirectXとOpenGLのリソース共有するための)モード管理
  • ディスプレイドライバの相互運用

いくつかのユーザランドデバイスコードをGPU上に取得し、ホスト側のAPIを介して実行するために必要な最小値。

+0

ありがとう、すばらしい答え! –

+0

あなたが気にしないならもうちょっと質問してください。その "統一されたアドレシングモデル"は仮想メモリのようなものです。 CUDAカーネルで使用されているその仮想メモリアドレスは、実際の物理GPUメモリアドレス(グローバル、ローカル、共有など)に変換されます。これは純粋にドライバーレベルで行われますか?私は、GPU HWがこの仮想のものについて何も知る必要はないが、ドライバは統一されたアドレスを実際の物理アドレス(グローバル、ローカル、...)に変換する必要があると思う。私は正しく理解していますか?ありがとう! –

+0

ユニファイドアドレッシングの意味は、CUDA 4.0以降のスキームで、複数のGPUやネットワークインタフェースなどの特定のデバイスを、ホストとの共通のアドレス空間にマップします。これはすべてドライバによって行われます。フェルミカードは、ハードウェア機能に仮想アドレスの内部マッピングを行うためのTLBを持っているようです。ドライバをインストールする場所をプログラムする必要がありますが、それ以外の場合はアドレス変換をデバイスで行う必要があります。 – talonmies

関連する問題