ループ タイルの最適化に従って、キャッシュ ミスを最小限に抑えることができる人がいるかどうか疑問に思っています。私は 4 つの 4000x4000 浮動小数点行列の乗算に取り組んでいます。
マシンには、L1 128kb、L2 1Mb、および L3 8Mb の値を持つ 3 つのレベルのキャッシュがあります。
4 つのネストされたループがあり、完全にネストされていません。
for(int i=0; i<NN; i++) {
for (int j=0; j<NN; j++) {
if (i != j){
thirdlayer = 0;
for (int k=0; k<NN; k++) {
fourthlayer = 0;
for (int l=0; l<NN; l++) {
fourthlayer = fourthlayer + V[j*NN+l]*V[NN+l]*J[k*NN+l];
}
thirdlayer = thirdlayer + V[k]*V[i*NN+k]*fourthlayer;
}
if(pi_cod[j] != 0)
Transitions[i*NN +j] = sqrt(pi_cod[i]*pi_cod[1]/(pi_cod[0]*pi_cod[j]))*Q[i*NN +j]*thirdlayer/Padt;
}
}
}