对于(开普勒)特斯拉K20,延迟如下:
全局存储器:440个时钟
恒定存储器
L1:48个时钟
L2:120个时钟
共享存储器:48个时钟
纹理存储器
L1:108个时钟
L2:240个时钟
我怎么知道?我通过Microbenchmarking运行了揭秘GPU微体系结构的作者所描述的微基准测试.它们为旧版GTX 280提供了类似的结果.
这是在Linux集群上测量的,我运行基准测试的计算节点没有被任何其他用户使用或运行任何其他进程.它是BULLX linux,带有一对8核Xeon和64 GB RAM,nvcc 6.5.12.我改变了sm_20对sm_35编制.
PTX ISA中还有一个操作数成本章节,虽然它不是很有帮助,它只是重申你已经期望的内容,而没有给出精确的数字.
共享/常量/纹理内存的延迟很小,并且取决于您拥有的设备。一般来说,虽然 GPU 被设计为吞吐量架构,但这意味着通过创建足够的线程,可以隐藏内存(包括全局内存)的延迟。
指南谈论全局内存延迟的原因是,该延迟比其他内存高几个数量级,这意味着它是优化时需要考虑的主要延迟。
您特别提到了常量缓存。您说得非常正确,如果 warp 中的所有线程(即 32 个线程组)访问相同的地址,则不会有任何惩罚,即从缓存中读取该值并同时广播到所有线程。但是,如果线程访问不同的地址,则访问必须串行,因为缓存一次只能提供一个值。如果您使用 CUDA Profiler,那么这将显示在序列化计数器下。
与恒定缓存不同,共享内存可以提供更高的带宽。查看CUDA 优化演讲,了解更多详细信息以及库冲突及其影响的解释。
| 归档时间: |
|
| 查看次数: |
5039 次 |
| 最近记录: |