マトリックス効率をチェックするアプリケーションを作成します。私はさまざまな方法を使用します (たとえば、変更ループ、2/3 ループ、openmp など)。1 つ残っているのは、データのプリフェッチを確認する必要があるということです。
コード:
#define SIZE 5000
for(int i=0;i<SIZE;i++)
for(int j=0;j<SIZE;j++)
mul+=tab[i][j]
通常prefetch
、データは単独で処理されますが (1 つの行にあり、 がインクリメントされる場合)、常にではありませj
ん (たとえば、次の行に移動する場合や、次の行に移動する場合 ( ))。などからのデータをカウントする前に、このコードを変更する方法を教えてください。tab[0][0]
prefeched
loop i++ ,tab[i][0]
proc
prefetch
tab[0][0], tab[1][0],tab[2][0],tab[3][0]