【CUDA学习】全局存储器

全局存储器,即普通的显存,整个网格中的任意线程都能读写全局存储器的任意位置。 性能

存取延时为400-600 clock cycles  很是容易成为性能瓶颈。 线程

访问显存时,读取和存储必须对齐,宽度为4Byte。若是没有正确的对齐,读写将被编译器拆分为屡次操做,下降访存性能。 blog

多个half-warp的读写操做若是可以知足合并访问,则屡次访存操做会被合并成一次完成。 图片

合并访问的条件,GT200放宽了合并访问的条件。 编译器

支持对8 bit、16 bit、32 bit、64 bit数据字的合并访问 相应传输32Byte 64Byte 128Byte,大于128Byte,分两次传输。 it

在一次合并传输的数据中,不要求线程编号和访问的数据字编号相同。 编译

当访问128Byte数据时,若是地址没有对齐到128Byte时,在GT200会产生两次合并访存。根据每一个区域的大小,分为两次合并访存,如图所示32Byte和96Byte。 效率

PS:图片来源于网上 硬件

关于访存合并以及访存冲突,关键就是要理解,GPU是以half-warp进行访存时,即16个线程一块儿访问存储器,到这16个线程的访问的地址在同一块区域(指硬件上能够一块儿传送宽 im

度)时,而且没有冲突产生时,则这块区域的数据能够被线程同时,提高了访存的效率.

相关文章
相关标签/搜索