今天心血来潮,想写个CPU版本的矩阵转置代码,过几天写GPU版本的。
按照我的想法,就是以下几种方式:
1> 整块矩阵转置,横读纵写或纵读横写
2> 将矩阵分成固定大小的block,block与block可以分成横读纵写或纵读横写,而block内部的数据也可以横读纵写或纵读横写。
经过试验:block横读,block内部纵读,能获得最好的平均性能。
代码如下(R=read,W=write,h=horizon,v=vertical,block前面的表示block的读写方法,后面表示内容的读写方法):
结果如下: