0

ある CUDA ブロックから別の CUDA ブロックに 256 バイトのデータ ブロックを最速で転送するにはどうすればよいですか? また、グローバル メモリよりも高速に転送する方法はありますか?

4

1 に答える 1

0

理論的には、計算能力 >= 2.0 のデバイスでは、グローバル メモリ トランザクションが L1 および L2 キャッシュを使用するため、グローバル メモリを使用するブロック間の転送は非常に高速になる可能性があります。

ただし、ブロック間でメモリを安全に転送する唯一の方法は、それらのブロックを個別のカーネル呼び出しで起動することです。次に、キャッシュが呼び出しの間にフラッシュされるため、先ほど説明した理論上の利点が失われます。

特定のカーネル呼び出し内で、ブロックがどの順序で起動されるかを知ることはできません。

個別のカーネル呼び出しによって起動されたブロック間でデータを転送することは、CUDA の一般的なパラダイムであり、実行する計算作業が十分にある場合、グローバル メモリ トランザクションのレイテンシを完全に隠すことができます。

于 2012-08-26T18:33:56.887 に答える