6

プログラミングガイドとベストプラクティスガイドを調べたところ、グローバルメモリアクセスには400〜600サイクルかかると記載されていました。テクスチャキャッシュ、コンスタントキャッシュ、共有メモリなどの他のメモリタイプについてはあまり見かけませんでした。レジスタのメモリレイテンシは0です。

すべてのスレッドがコンスタントキャッシュで同じアドレスを使用する場合、コンスタントキャッシュはレジスタと同じだと思います。最悪の場合、私にはよくわかりません。

共有メモリは、バンクの競合がない限り、レジスタと同じですか?ある場合、レイテンシーはどのように展開しますか?

テクスチャキャッシュはどうですか?

4

2 に答える 2

7

(Kepler)Tesla K20の場合、レイテンシーは次のとおりです。

グローバルメモリ:440クロック
コンスタントメモリ
    L1:48クロック
    L2:120クロック
共有メモリ:48クロック
テクスチャメモリ
    L1:108クロック
    L2:240クロック

どうすればわかりますか?私は、マイクロベンチマークを介してGPUマイクロアーキテクチャの謎を解く著者によって記述されたマイクロベンチマークを実行しました。これらは、古いGTX280でも同様の結果を提供します。

これはLinuxクラスターで測定されました。ベンチマークを実行していたコンピューティングノードは、他のユーザーによって使用されたり、他のプロセスを実行したりしていませんでした。これは、8コアのXeonと64 GBのRAM、nvcc6.5.12のペアを備えたBULLXLinuxです。コンパイル用にに変更しsm_20ました。sm_35

PTX ISAにはオペランドコストの章もありますが、あまり役に立ちません。正確な数値を示すことなく、すでに期待していることを繰り返します。

于 2015-12-09T16:29:27.247 に答える
4

共有/一定/テクスチャメモリへの遅延は小さく、使用しているデバイスによって異なります。一般に、GPUはスループットアーキテクチャとして設計されていますが、これは、十分なスレッドを作成することにより、グローバルメモリを含むメモリへのレイテンシが隠されることを意味します。

ガイドがグローバルメモリへのレイテンシについて説明している理由は、レイテンシが他のメモリよりも桁違いに高いためです。つまり、最適化の対象となる主要なレイテンシです。

特にコンスタントキャッシュについておっしゃいました。ワープ内のすべてのスレッド(つまり、32スレッドのグループ)が同じアドレスにアクセスする場合、ペナルティはありません。つまり、値がキャッシュから読み取られ、すべてのスレッドに同時にブロードキャストされます。ただし、スレッドが異なるアドレスにアクセスする場合、キャッシュは一度に1つの値しか提供できないため、アクセスはシリアル化する必要があります。CUDAプロファイラーを使用している場合、これはシリアル化カウンターの下に表示されます。

共有メモリは、コンスタントキャッシュとは異なり、はるかに高い帯域幅を提供できます。銀行の競合とその影響の詳細と説明については、CUDA最適化の講演をご覧ください。

于 2010-11-04T16:40:37.480 に答える