小编use*_*832的帖子

缓存高效矩阵转置程序?

所以转置矩阵的显而易见的方法是使用:

  for( int i = 0; i < n; i++ )

    for( int j = 0; j < n; j++ )

      destination[j+i*n] = source[i+j*n];
Run Code Online (Sandbox Code Playgroud)

但是我想要一些能利用局部性和缓存阻塞的东西.我正在查找它并且找不到可以执行此操作的代码,但我被告知它应该是对原始的非常简单的修改.有任何想法吗?

编辑:我有一个2000x2000矩阵,我想知道如何使用两个for循环更改代码,基本上将矩阵拆分为我单独转置的块,比如2x2块或40x40块,并查看哪个块大小最有效.

编辑2:矩阵以列主要顺序存储,即对于矩阵

a1 a2    
a3 a4
Run Code Online (Sandbox Code Playgroud)

存储为a1 a3 a2 a4.

algorithm caching matrix

29
推荐指数
4
解决办法
5万
查看次数

标签 统计

algorithm ×1

caching ×1

matrix ×1