直观上来看,矩阵转置和卷积等操作不同,不存在数据共享(卷积窗口在输入数据上滑动的时候,相邻数据存在共享),因为仅仅是将数据换个位置存储而已。
但是NVIDIA在https://github.com/NVIDIA-developer-blog/code-samples.git实现了一种基于共享内存的转置算法,在某些场景实现了两倍以上的加速,示意如下图(从做到右依次是:输入,共享内存,输出):

其原理是,GPU访问连续连续的显存的时候,速度很快。而跨越式(stride)的方式访问,速度则很慢。如果没有中间的共享内存,输出或者输入,必有一方是跨越式访问的。
本文介绍了一种基于共享内存的矩阵转置算法,该算法利用GPU连续访问显存的优势,相较于传统方法实现了两倍以上的加速效果。通过使用共享内存作为中间缓存,避免了输入或输出数据的跨越式访问,从而大大提高了数据处理效率。
1574

被折叠的 条评论
为什么被折叠?



