0

これは CUDA Global Memory へのフォローアップの質問です。それはどこですか? GSmith の回答を参照してください。これらの Q は、CC > 2.0 のケースに対処します。

Nvida カードの仕様を調べると、2GB の「メモリ」がリストされていますこれがこのカードの「グローバル」メモリであると信じるようになりました。つまり、これは「オフチップ」に常駐する GDDR3 メモリですが、カード上にあります。これは正しいでしょうか?

spec'd 'memory' がゼロのケースは見当たりません。存在しますか?つまり、オフチップ メモリのないカードを使用できますか? その中で、すべてのテクスチャ、ローカル、および定数メモリは、実際には固定およびマップされたホスト メモリに存在します。

2GB を超えるホスト メモリを固定して、グローバル メモリの使用量を増やすことはできますか? オフチップ グローバル メモリ (2GB) をすべて使用して、さらにグローバル固定メモリを追加 (1GB) できますか? それとも、このカードは最大 2GB のアドレス空間しか使用できないことを理解する必要がありますか? つまり、2 GB のメモリ、unPinned、Pinned、Mapped、または任意の組み合わせにしかアクセスできません。

デバイスがピン留めされたホスト メモリ (マップされていない) を使用している場合、dev からホストに Memcpy する必要がありますか? つまり、メモリは物理的にホスト側にあります。そして、それはデバイスによって使用されているため、両方がそれを見ることができます. すでにホストにあるのに、なぜホストにコピーする必要があるのですか。デフォルトで「マッピング」されているようです。(この二重アクセスを妨げているメカニズムは何ですか?)

共有メモリをグローバルメモリにマッピングするにはどうすればよいですか? (私はドキュメントでこれについての言及を見つけていません。) これは「マップされた」配置ですか、それともグローバルから共有にコピーして、もう一度戻す必要がありますか? (これにより、コピーの手順を省くことができますか?)

4

1 に答える 1

1

質問ごとに1つの質問をすることをお勧めします。

Nvidaカードの仕様を検索すると、2GBの「メモリ」が表示されます。これがこのカードの「グローバル」メモリであると私は信じるようになりました。つまり、これは「オフチップ」にあるがカード上にあるGDDR3メモリです。これは正しいでしょうか?

はい。

仕様'd'メモリ'がゼロの場合は見当たりません。存在しますか?つまり、オフチップメモリ​​のないカードを使用できますか?その中で、私のすべてのテクスチャ、ローカル、および一定のメモリは、実際にはピン留めおよびマップされたホストメモリに存在します。

NVIDIAがこのアイデアに最も近づいたのは、おそらくIon2チップセットでした。しかし、オンボードのオフチップメモリ​​がゼロのcuda対応のnvidiaディスクリートグラフィックスカードはありません。

2GBを超えるホストメモリを固定することで、グローバルメモリ使用量を拡張できますか?

2GBを超えるホストメモリを固定できます。ただし、これはグローバルメモリを拡張しません。ホストデバイスの転送速度の向上、コピーと計算の重複、GPUからのホストメモリのゼロコピーアクセスなど、さまざまなことが可能になりますが、これはグローバルメモリを使用する目的とは異なります。ゼロコピー技術は、おそらくグローバルメモリをホストメモリに拡張するのに最も近いものですが(概念的には)、GPUの観点からはゼロコピーは非常に低速です。

デバイスが固定されたホストメモリ(マップされていない)を使用している場合、開発者からホストにMemcpyする必要がありますか?

はい、データを前後にcudaMemcpyする必要があります。

つまり、memは物理的にホスト側にあります。そしてそれはデバイスによって使用されています

このコンセプトがどこから来ているのかわかりません。おそらくゼロコピーを参照していますが、ゼロコピーはグローバルメモリにあるデータにアクセスする場合に比べて比較的低速です。データサイズが小さい場合は慎重に使用する必要があり、カード上のグローバルメモリの有効サイズを大幅に増やすための簡単な方法ではありません。

共有メモリをグローバルメモリにマッピングするにはどうすればよいですか?

共有メモリは、グローバルメモリに自動的にマップされません。方法論は、共有メモリとグローバルメモリの間で必要なデータを相互にコピーすることです。

于 2012-11-07T17:42:47.747 に答える