はい、キャッシングモードでは、(L1キャッシュレベルから見て)単一の128バイトトランザクションが生成されます。非キャッシュモードでは、(L2キャッシュレベルから見て)4つの32バイトトランザクションが生成されます。あなたが説明する場合、キャッシュされたモードまたはキャッシュされていないモードに関係なく、完全に合体したアクセスの場合、4つの32バイトトランザクションは遅くなりません。(特定のGPU上の)メモリコントローラーは、どちらの場合でもワープの要求を満たすために同じトランザクションを生成する必要があります。メモリコントローラーは多数(最大6)の「パーティション」で構成されており、各パーティションには64ビット幅のパスがあるため、最終的には複数のメモリトランザクション(おそらく複数のパーティションにまたがる)を使用して、いずれかの要求(4x32バイトまたは1x128バイト)。パーティション間のトランザクションと編成の具体的な数はGPUごとに異なる場合があります(質問の一部ではありませんが、DDRポンプメモリを備えたGPUは、メモリトランザクションごとにパーティションごとに16バイトを返し、QDRポンプメモリを備えたGPUはメモリトランザクションごとにパーティションごとに32バイトを返します)。これもCUDA5に固有のものではありません。NVIDIAのいずれかを確認することをお勧めしますこの資料のウェビナー、特に「CUDA最適化:メモリ帯域幅制限カーネル」。ビデオを見たくない場合でも、スライドを簡単に確認すると、いわゆる「キャッシュ」アクセスと「非キャッシュ」アクセス(これはL1を指します)のさまざまな違いを思い出し、また、それぞれのケースを試すために必要なコンパイラスイッチ。
スライドを確認するもう1つの理由は、「キャッシュされていない」モードを試してみたい状況を思い出させるためです。特に、ワープからの分散(非合体)アクセスパターンがある場合、キャッシュされていないモードのアクセスは、128バイトと比較して単一スレッドの要求を満たすためにメモリから32バイトの量を要求するときの「無駄」が少ないため、改善される可能性があります量。ただし、最後の質問に答えて、それについて分析することはかなり困難です。おそらく、コードは順序付けられたアクセスパターンと無秩序なアクセスパターンが混在しているためです。キャッシュされていないモードはコンパイラスイッチを介してオンになるため、スライドに示されている提案は、単に「コードを両方の方法で試して」、どちらがより高速に実行されるかを確認することです。私の経験では、
編集:申し訳ありませんが、間違ったプレゼンテーションのリンクとタイトルがありました。スライド/ビデオのリンクとウェビナーのタイトルを修正しました。