Memory 如果每条数据占用128位或更多,在内存中对它们进行分组有什么好处吗?

Memory 如果每条数据占用128位或更多,在内存中对它们进行分组有什么好处吗?,memory,cuda,coalescing,Memory,Cuda,Coalescing,我在CUDA编程指南中读到,CUDA设备中的全局内存是通过32、64或128位的事务访问的。知道了这一点,比如说,在内存中有一组紧靠在一起的float4(128位)有什么好处吗?据我所知,无论float4是在内存中分布还是按顺序分布,事务数都是相同的。还是将所有访问合并到一个巨大的事务中?合并是指将来自扭曲中各个线程的内存请求合并到单个内存事务中 单个内存事务通常是一个128字节的缓存线,因此它将由八个128位的缓存线组成(例如,float4) 因此,是的,让多个线程请求相邻的128位数量是有好

我在CUDA编程指南中读到,CUDA设备中的全局内存是通过32、64或128位的事务访问的。知道了这一点,比如说,在内存中有一组紧靠在一起的float4(128位)有什么好处吗?据我所知,无论float4是在内存中分布还是按顺序分布,事务数都是相同的。还是将所有访问合并到一个巨大的事务中?

合并是指将来自扭曲中各个线程的内存请求合并到单个内存事务中

单个内存事务通常是一个128字节的缓存线,因此它将由八个128位的缓存线组成(例如,
float4


因此,是的,让多个线程请求相邻的128位数量是有好处的,因为它们仍然可以合并为单个(128字节)缓存线内存请求。

合并是指将来自扭曲中各个线程的内存请求合并为单个内存事务

单个内存事务通常是一个128字节的缓存线,因此它将由八个128位的缓存线组成(例如,
float4


因此,是的,让多个线程请求相邻的128位数量是有好处的,因为它们仍然可以合并为单个(128字节)缓存线对内存的请求。

Oh。误读了。谢谢谢天谢地,如果我有一个8浮点数4的结构,那就没关系了,对吧?除非合并只发生在线程之间,否则合并只发生在线程之间。warp中的所有线程执行的指令序列基本相同。一条特定的指令将在扭曲过程中同时生成读取请求。读取请求的结果,当跨经线收集时,是可以合并的。误读了。谢谢谢天谢地,如果我有一个8浮点数4的结构,那就没关系了,对吧?除非合并只发生在线程之间,否则合并只发生在线程之间。warp中的所有线程执行的指令序列基本相同。一条特定的指令将在扭曲过程中同时生成读取请求。该读取请求的结果,当跨warp收集时,就是可以合并的结果。