CUDA编程 - 共享内存配置

时间:2012-04-16 20:49:03

标签: cuda shared-memory

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

1 个答案:

答案 0 :(得分:4)

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

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

使用占用计算器可以最好地说明“非常小的数量”,这是CUDA工具包附带的电子表格,也可以here。此电子表格允许您调查每个块和不同块大小的不同共享内存的影响。