6

パフォーマンスガイドラインの章のCUDAプログラミングガイド4.0セクション5.3.2.1の次のステートメントについて混乱しています。

Global memory resides in device memory and device memory is accessed
via 32-, 64-, or 128-byte memory transactions. 

These memory transactions must be naturally aligned:Only the 32-, 64- , 
128- byte segments of device memory 
that are aligned to their size (i.e. whose first address is a 
multiple of their size) can be read or written by memory 
transactions.

1)デバイスメモリについての私の理解は、スレッドによるデバイスメモリへのアクセスはキャッシュされないということでした。したがって、スレッドがメモリの場所a[i]にアクセスする場合、スレッドはフェッチするだけa[i]で、周りの値はフェッチしませんa[i]。したがって、最初のステートメントはこれと矛盾しているようです。それとも、ここで「メモリトランザクション」というフレーズの使用法を誤解しているのでしょうか。

2)2番目の文はあまり明確ではないようです。誰かがこれを説明できますか?

4

1 に答える 1

7
  1. メモリトランザクションはワープごとに実行されます。したがって、32バイトのトランザクションは8ビットタイプのワープサイズの読み取りであり、64バイトのトランザクションは16ビットタイプのワープサイズの読み取りであり、128バイトのトランザクションは32ビットタイプのワープサイズの読み取りです。
  2. これは、すべての読み取りを自然な単語サイズの境界に揃える必要があることを意味します。ワープが1バイトのオフセットで128バイトのトランザクションを読み取ることはできません。詳細については、この回答を参照してください。
于 2012-08-10T20:03:14.007 に答える