1

您能否解释一下在 CUDA 编程中使用“16 KB 共享内存 + 48K L1 缓存”或“48 KB 共享内存 + 16 KB L1 缓存”之间的区别?在时间执行中我应该期待什么?我什么时候可以期待更小的 GPU 时间?

4

1 回答 1

4

在 Fermi 和 Kepler nVIDIA GPU 上,每个 SM 都有一个 64KB 的内存块,可以配置为 16/48 或 48/16 共享内存/L1 缓存。您使用哪种模式取决于您的内核使用了多少共享内存。如果您的内核使用大量共享内存,那么您可能会发现将其配置为 48KB 共享内存可以提高占用率,从而获得更好的性能。

另一方面,如果您的内核根本不使用共享内存,或者每个线程只使用非常少量的内存,那么您可以将其配置为 48KB L1 缓存。

使用 CUDA 工具包中包含的电子表格可以最好地说明“非常少量”是多少,也可以在此处获得。此电子表格允许您调查每个块的不同共享内存和不同块大小的影响。

于 2012-04-16T21:55:52.080 回答