CUDAプログラムを効率的にするには、グローバルメモリ読み取りなどの高価な操作のレイテンシを隠すのに十分なスレッドを起動する必要があることを理解しています。たとえば、スレッドがグローバルメモリから読み取る必要がある場合、他のスレッドは実行するようにスケジュールされ、読み取り操作がスレッドの実行とオーバーラップします。したがって、CUDAプログラムの全体的な実行時間は、グローバルメモリの読み取り時間を含まない、各スレッドの実行時間の合計にすぎません。ただし、データを共有メモリに入れて、スレッドに共有メモリから読み取らせることができれば、通常、CUDAプログラムをはるかに高速に実行できます。私の混乱は、メモリ読み取りの時間が隠されているので、プログラムのパフォーマンスに影響を与えないはずだということです。それでもプログラムのパフォーマンスに大きな影響を与える可能性があるのはなぜですか?