カーネルのスレッドが読み取りまたは書き込みを行うホスト メモリ内に大きなint
配列があり、GPU グローバル メモリ内に保持できないとします。配列の要素へのアクセスが結合されると、PCI-Express レーンの理論上の帯域幅に近づく、ホスト メモリとの間のバースト読み取り/書き込みが期待できます。しかし、読み取りまたは書き込みが完全に散発的である (合体していない) 場合、帯域幅は理論上の最大帯域幅と比較してどのくらいになるでしょうか?
hereの下の図に基づいて、すべての書き込みトランザクションに対して 128 ビット長のパケットが必要です。ただし、32 ビット アドレッシング (UVA には 64 ビット マシンが必要であることを考慮) とデータ サイズとして 4 バイトを想定しています。これらの仮定が正しい場合、最大帯域幅の約 4 分の 1 を書き込みに、7 分の 1 を読み取りに期待できます。私は正しいですか?これらの仮定は正しいですか?
編集
uint
配列を使用して上記の質問のテストを設計および実行しました。私が得た帯域幅は、約 6.6 GB/s の帯域幅を持つ PCI-Express リンクでの大量の散発的な読み取りと大量の散発的な書き込みの両方で約 480 MB/s であり、13 から 14 倍の速度低下を示しました。どのように説明できますか?