キューの仮想アーキテクチャと実際のアーキテクチャの違い、およびさまざまな構成がプログラムのパフォーマンスにどのように影響するかを理解しようとしています。キューの仮想アーキテクチャと実際のアーキテクチャの違い
-gencode arch=compute_20,code=sm_20
-gencode arch=compute_20,code=sm_21
-gencode arch=compute_21,code=sm_21
...
以下の説明は、NVCCマニュアルに与えられた、
GPUのコンパイルは、中間表現を介して行われるPTX ([...])、 ためのアセンブリとして考えることができます仮想GPUアーキテクチャ実際のグラフィックス プロセッサとは対照的に、そのような仮想GPUは、それがアプリケーションに提供する能力のセットまたは機能によって完全に定義される。特に、 PTXプログラムは常にテキスト形式で表現されるため、仮想GPUアーキテクチャは (主に)汎用命令セットを提供し、バイナリ命令エンコーディングは問題になりません。 したがって、nvccコンパイルコマンドは常に、仮想中間アーキテクチャを指定するための計算 アーキテクチャと、実際に実行するプロセッサを指定する実際のGPUアーキテクチャ の2つのアーキテクチャを使用します。そのようなnvccコマンドが有効であるためには、 実際のアーキテクチャは、仮想 アーキテクチャの実装(いくらかか別のもの)でなければなりません。これについては後でさらに説明する。 選択した仮想アーキテクチャーは、アプリケーションに必要なGPU機能の詳細です。最小の仮想アーキテクチャーを使用すると、2番目のnvccステージの実際のアーキテクチャーの範囲が最も広くなります。逆に、アプリケーションによって使用されない機能を提供する仮想 アーキテクチャを指定すると、2番目のnvccステージで指定できる可能性のあるGPUセット が不必要に制限されます。
しかし、パフォーマンスがさまざまな設定によってどのように影響を受けるか(物理的なGPUデバイスの選択にのみ影響するかもしれません)特に、この文は私にとって最も混乱して:
特に、仮想GPUアーキテクチャは (主に)一般的な命令セット、およびバイナリ命令エンコーディングを提供 PTXプログラムが常に表現されているため、非問題ですテキスト形式。