我做了一个检查矩阵效率的应用程序。我使用各种方法(例如更改循环、2/3 循环、openmp 等)。剩下一件事:我必须检查数据预取。
代码:
#define SIZE 5000
for(int i=0;i<SIZE;i++)
for(int j=0;j<SIZE;j++)
mul+=tab[i][j]
通常单独处理prefetch
数据(当我们在单行并递增时j
),但并非总是如此(例如tab[0][0]
从不prefeched
或当我们转到下一行时(loop i++ ,tab[i][0]
))。在我们计算它们之前,如何更改此代码以帮助proc
prefetch
来自tab[0][0], tab[1][0],tab[2][0],tab[3][0]
等的数据?