CUDAプログラミングで「L1とL2」の両方のキャッシュを使用する場合と「L2のみ」のキャッシュを使用する場合の違いを説明してください。時間の実行で何を期待する必要がありますか?いつより短いGPU時間を期待できますか?L1キャッシュとL2キャッシュの両方を有効にする場合、またはL2を有効にする場合はどうなりますか?ありがとう
質問する
2224 次
1 に答える
11
通常、L1 キャッシュと L2 キャッシュの両方を有効のままにします。メモリ アクセスを可能な限り結合するようにしてください。つまり、ワープ内のスレッドは、可能な限り同じ 128B セグメント内のデータにアクセスする必要があります (このトピックの詳細については、 CUDA プログラミング ガイドを参照してください)。
一部のプログラムは、この方法で最適化することができません。たとえば、それらのメモリ アクセスは完全にランダムです。このような場合、L1 キャッシュをバイパスすることが有益な場合があります。これにより、たとえば 4 バイトのみが必要な場合に 128B ライン全体をロードすることを回避できます (32B が最小であるため、32B をロードします)。明らかに効率が向上しています。128 バイトから 4 バイトが、32 バイトから 4 バイトに改善されています。
于 2012-04-16T21:50:03.453 に答える