device : titan x
compute capblity: 5.2
一个wrap内的内存访问是被合并进行内存访问了:
而global memory的内存访问在compute capblity 5.2默认是先经过缓存L2 cache 然后当L2 cache不存在的时候才会进行全局访问,然后数据存放在l2 cache,然后将结果访问kernel
L2 cache:
以32bytes为单位进行tansactions传输
已分配好的数据便是按照32bytes进行编码分块划分好的。
如
0 32 64 96 128 160 192 224 256
0 1 2 3 4 5 6 7
这里有8块数据,
对齐的话如一个wrap内的线程每个需要4个bytes的数据,即这个wrap需要32 * 4bytes = 128bytes,如果是对齐的话,那么只需要4次l2 cache的访问即可
如果不是对齐的,如简单的偏移,那么就可能需要用到5次的l2 cache了。
l2每次是进行32bytes进行传输的,是按照已分配的数据进行固定分块传输的