
рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ,
рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ ... рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдо рд╣реИ рдФрд░ рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдП рдмрд┐рдирд╛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдпрд╣ рдЕрдзреНрдпрдпрди рдХрд┐рдП рдХрд┐ рдпрд╣ рдпрд╛ рдЙрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдЬреНрдЮрд╛рди рдХреЗ рдмрд┐рдирд╛, рдЬрд┐рд╕ рдкрд░ рдЖрд╡реЗрджрди рдЪрд▓реЗрдЧрд╛ред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВ рдПрдХ рд▓реВрдк рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд▓реВрдк рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдореВрд▓ рд╡рд┐рдЪрд╛рд░
рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдЪрдХреНрд░ рдмреЗрд╣рдж рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ рдФрд░, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд╡рд┐рднрд┐рдиреНрди рдЪрдХреНрд░реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрд╡реЗрджрди рдХреЗ рдЧрд░реНрдо рдХрд╛рд░реНрдп рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпред рдкрд╣рд▓реЗ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдЪрдХреНрд░реЛрдВ рдХреЗ рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдереЗ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЙрдирдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХрд╛рдлреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрдХреНрд░ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЪрдХреНрд░ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рдХреЗ рдХреНрд░рдо рдХреЛ рдмрджрд▓рдирд╛ рд╣реИред рдпрджрд┐ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдХреЛрд░ рдХреЗ рд╕реНрддрд░ рдкрд░ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдХреНрд░рдо рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рддреЛ рд▓реВрдк рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХрд░рддреЗ рд╕рдордп, рдЕрдзрд┐рдХ рд╡реИрд╢реНрд╡рд┐рдХ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрдпрд╛рдиреЛрдВ рдХрд╛ рдХреНрд░рдорд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдореЗрдореЛрд░реА рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рд╕реБрдзрд╛рд░, рд╡реИрд╢реНрд╡реАрдХрд░рдг рдФрд░ рдСрдЯреЛ-рд╕рдорд╛рдирд╛рдВрддрд░рдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛, рдирд┐рд░реНрджреЗрд╢ рд╕рдорд╛рдирддрд╛ рдХреЛ рд╕реБрдзрд╛рд░рдирд╛, рдбреЗрдЯрд╛ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рд╢рд╛рдЦрд╛ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ред рдЖрджрд┐ рдЪреВрдВрдХрд┐ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░рдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдВрдХрд▓рдХ рдХреЗ рдкрд╛рд╕ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдорд╛рдиреА рддрдВрддреНрд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдпрд╛ рдЙрд╕ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдЕрдиреБрдХреВрд▓рди рдХреЛ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдкрд╛рд╢ рдЕрдиреБрдХреВрд▓рди рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг
рдЖрдЗрдП рд▓реЛрдХрдкреНрд░рд┐рдп рд▓реВрдк рд╡рд┐рддрд░рдг рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рд╡реНрдпреБрддреНрдХреНрд░рдо рд▓реВрдк рд╕рдВрд▓рдпрди рдЕрдиреБрдХреВрд▓рди рд╕реЗ рдирд┐рдХрдЯрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЕрдиреБрдХреВрд▓рди рдХреБрдЫ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдмрд┐рд▓реНрдХреБрд▓ рд╡реНрдпрд░реНрде рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЛрд░ рдХреЗ рдХреБрдЫ рдкреИрдЯрд░реНрди рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рдПрд░реЗ рдХреЛ рдкреЙрдЗрдВрдЯрд░ рд╡реЗрдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреЗрд░рдлрд╝ рдореИрдХреНрд░реЛ рдХреЗ рддрд╣рдд, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрдбрд╝реЗ рдЪрдХреНрд░ рдХреЛ рддреАрди рдЪрдХреНрд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрдХреНрд░ рд╕реЗ рдкрд░рд╕реНрдкрд░ рдЧрдгрдирд╛ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрддрд╛ рд╣реИред
#include <stdio.h> #include <stdlib.h> #define N 1000 int main() { int i,j,rep; int volatile nnn; float **a1,**a2,**a3; float **b1,**b2, **b3; double **c1, **c2, **c3; double sum1,sum2,sum3; nnn = 2000; // upper bound for repeat loop .... // memory allocation and initialization for(rep=0;rep<nnn;rep++) { #ifndef PERF for(j=1;j<N-1;j++) for(i=0;i<N;i++) { sum1 = sum1 + (a1[j][i]+a2[j][i]+a3[j][i]); sum2 = sum2 + (b1[j][i]+b2[j][i]+b3[j][i]); sum3 = sum3 + (c1[j][i]+c2[j][i]+c3[j][i]); sum1 = sum1 - (a1[j-1][i]+a2[j-1][i]+a3[j-1][i]); sum2 = sum2 - (b1[j-1][i]+b2[j-1][i]+b3[j-1][i]); sum3 = sum3 - (c1[j-1][i]+c2[j-1][i]+c3[j-1][i]); sum1 = sum1 - (a1[j+1][i]+a2[j+1][i]+a3[j+1][i]); sum2 = sum2 - (b1[j+1][i]+b2[j+1][i]+b3[j+1][i]); sum3 = sum3 - (c1[j+1][i]+c2[j+1][i]+c3[j+1][i]); } #else for(j=1;j<N-1;j++) for(i=0;i<N;i++) { sum1 = sum1 + (a1[j][i]+a2[j][i]+a3[j][i]); sum1 = sum1 - (a1[j-1][i]+a2[j-1][i]+a3[j-1][i]); sum1 = sum1 - (a1[j+1][i]+a2[j+1][i]+a3[j+1][i]); } for(j=1;j<N-1;j++) for(i=0;i<N;i++) { sum2 = sum2 + (b1[j][i]+b2[j][i]+b3[j][i]); sum2 = sum2 - (b1[j-1][i]+b2[j-1][i]+b3[j-1][i]); sum2 = sum2 - (b1[j+1][i]+b2[j+1][i]+b3[j+1][i]); } for(j=1;j<N-1;j++) for(i=0;i<N;i++) { sum3 = sum3 + (c1[j][i]+c2[j][i]+c3[j][i]); sum3 = sum3 - (c1[j-1][i]+c2[j-1][i]+c3[j-1][i]); sum3 = sum3 - (c1[j+1][i]+c2[j+1][i]+c3[j+1][i]); } #endif } printf("%lf %lf %lf \n",sum1,sum2,sum3); ... //deallocation }
рдореИрдВ тАУO1 рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЗрдВрдЯреЗрд▓ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рдХрдВрдкрд╛рдЗрд▓рд░ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ (icl тАУhelp) рдХрд╣рддрд╛ рд╣реИ:
/ O1 рдЕрдзрд┐рдХрддрдо рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдЫреЛрдЯреЗ рдЧрддрд┐ рд▓рд╛рдн рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЖрдХрд╛рд░ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде, рдХрдВрдкрд╛рдЗрд▓рд░ рд▓реВрдк рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдСрдЯреЛ-рд╡реЗрдХреНрдЯрд░рд╛рдЗрдЬреЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡рд╣ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкреНрд░рдпреЛрдЧ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
-DPERF рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдФрд░ рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рджреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдИ рдЬрд╛рдПрдВрдЧреАред
icl -O1 distr.c -Fedistr.exe
icl -O1 -DPERF distr.c -Fedistr2.exe
Windows Server 2008 R2 рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рдФрд░ Intel Xeon X5570 рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдореЗрд░реА рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдорд╢реАрди рдкрд░, рдкрд░рд┐рдгрд╛рдореА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╕рдордп рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
distr.exe: 38.8 рд╕реЗрдХрдВрдб
distr2.exe: 31.2 рд╕реЗрдХрдВрдб
рджреВрд╕рд░реЗ рдЪрдХреНрд░ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд╛рдлреА рдмреЗрд╣рддрд░ рд╣реИред рдЖрдЗрдП рдЗрдВрдЯреЗрд▓ VTune рдПрдореНрдкрд▓реАрдлрд╛рдпрд░ XE2013 рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рд╕рд╛рдорд╛рдиреНрдп рдЕрдиреНрд╡реЗрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рджреЗрдЦреЗрдВ рдФрд░ рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдорд╛рдорд▓рд╛ рд╣реИ?
рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЧрд╛рдЗрдб "рдЗрдВрдЯреЗрд▓ @ рдХреЛрд░ рдЯреАрдПрдо i7 рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рдЗрдВрдЯреЗрд▓ @ рдПрдХреНрд╕реЙрди рдЯреАрдПрдо 5500 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд╛рдЗрдб" рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЛрд░ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рддрд░реАрдХреЗ рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╡реАрдЯреАрдПрди рдПрдореНрдкрд▓реАрдлрд╛рдпрд░ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рдХреБрдЫ рдирд╛рдореЛрдВ рдХреЗ рдЕрд░реНрде рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рднреА рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдХреЛрдИ рдореБрдЭреЗ рд╕рд╣реА рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдореБрдЭреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдЪрд╛рд░ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЪрдХреНрд░ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдРрд╕рд╛ рдкреНрд░рднрд╛рд╡ рдХреНрдпреЛрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред
рд░рд┐рдкреЛрд░реНрдЯ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рджреЛрдиреЛрдВ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП INST_RETIRED.ANY рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИред рдпрд╛рдиреА рдХреЛрдИ рдЪрдорддреНрдХрд╛рд░ рдирд╣реАрдВ рдерд╛ (рдЬреИрд╕реЗ рд╡реИрд╢реНрд╡реАрдХрд░рдг) рдФрд░ рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд┐рдП рдЧрдП рдХрд╛рдо рдХреА рдорд╛рддреНрд░рд╛ рд▓рдЧрднрдЧ рдмрд░рд╛рдмрд░ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рд╕реАрдкреАрдЖрдИ рджрд░ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╣реБрдЖред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдХрд┐рд╕реА рдПрдХ рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рд░рд┐рдореЛрдЯ рдбреНрд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рд╕реЗрд╡рд┐рдд рдПрд▓рдПрд▓рд╕реА рд▓реЛрдб рдорд┐рд╕реЗрдЬ рдХреА рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЙрдкрд╕реНрдерд┐рддрд┐ред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЛрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдореЗрдореЛрд░реА рдХреА рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЛрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЬреБрдбрд╝реА рд╣реИ, рдЬреЛ рдЕрд╕рдорд╛рди рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ (NUMA) рдХреЗ рд╕рд╛рде рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╕реНрдерд┐рддрд┐ рд╡рд┐рднрд┐рдиреНрди рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЛрд░ рдореЗрдВ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкреНрд░рд╡рд╛рд╕рди рдХреЗ рдХрд╛рд░рдг рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рддрд╛рд░реЛрдВ рдХрд╛ рдЧрдарди рдЗрд╕рд▓рд┐рдП рд╣реБрдЖ рдХрд┐ рджреВрд╕рд░рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЛрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдо рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЪрд▓рд╛ рдЧрдпрд╛ред рдЖрдк рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдХреЛрд░ рд╕реЗ рдмрд╛рдБрдз рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрд╛рд░рдг рдЧреБрдард▓реА рдХреЗ рдмреАрдЪ рдпреЗ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рди рдХрд░реЗрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдпреЛрдЧ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд┐рдП рдЧрдП рдереЗред
рдореИрдВ рдорд╛рдирдХ рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╡реАрдереНрдпреВрди рдПрдореНрдкрд▓реАрдлрд╛рдпрд░ рдореЗрдВ рдиреЗрд╣реЗрд▓реНрдо рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЛ рд▓реЗ рдЬрд╛рдКрдВрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рджреЛ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рддреБрд▓рдирд╛ рдХрд░реВрдВрдЧрд╛ред рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдорд┐рд▓рд╛:

рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрджрд▓ рдЧрдИ рд╣реИ (MEM_INST_RETIRED.LOADS)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рджреЛрдиреЛрдВ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдХреЛрдбрд╛рдВрддрд░рдХ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░рдЬрд┐рд╕реНрдЯрд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрдЯреИрдХ рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдирд┐рд░рдВрддрд░ рд╡рд┐рдирд┐рдордп рд╣реЛрддрд╛ рд╣реИред рд╕рдВрднрд╡рддрдГ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд░рдВрддрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рд╕реНрдЯреИрдХ рдХреИрд╢ рдореЗрдВ рд╣реЛрдЧрд╛ред
рдпрджрд┐ рд╣рдо рдореЗрдореЛрд░реА рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдВрдЧрдарди рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЛрд░ рдореЗрдВ 32KB рдХрд╛ L1 рдбреЗрдЯрд╛ рдХреИрд╢ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рд╣рдо рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдпрд╛рдиреА рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рд╣рдореЗрдВ 27 рд╕реНрдерд╛рдиреЛрдВ a1 [j-1] [i], a1 [j] [i], a1 [j + 1] [i], a2 [j-1] [i], ... рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред c1 [j + 1] [i] рд▓реЗрдХрд┐рди рдЗрд╕ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ j рдХреЗ рдКрдкрд░ рдкрд┐рдЫрд▓реЗ рдЪрд▓рдирд╛ рдкрд░ рдХреИрд╢ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред A1 [j + 1] [:], a2 [j + 1] [:], a3 [j + 1] [:], b1 [j + 1] [:], ..., c3 [ j + 1] [:]ред рдлреНрд▓реЛрдЯ рдХрд╛ рдЖрдХрд╛рд░ 4 рдмрд╛рдЗрдЯреНрд╕ рд╣реИ, рдбрдмрд▓ рдХрд╛ рдЖрдХрд╛рд░ 8 рдмрд╛рдЗрдЯреНрд╕ рд╣реИред рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреА рдкрдВрдХреНрддрд┐ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ -1000 рд╣реИред рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 4000 * 3 + 4000 * 3 + 8000 * 3 = ~ 47KB рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╢рди рдореЗрдВ рдХреИрд╢ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░, рдПрд▓ 1 рдбреА рдХреИрд╢ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП ~ 12KB рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреЛрд╣рд░реА рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП ~ 24KB рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдкрд┐рдЫрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рдкрдврд╝реЗ рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реЗ L1D_CACHE_LD.I_STATE рдИрд╡реЗрдВрдЯ (рдХреИрд╢ рдорд┐рд╕) рдХреЗ рдЕрдиреБрдкрд╛рдд рдХреА рддреБрд▓рдирд╛ L1D_CACHE_LD.MESI (рдХреИрд╢ рд╣рд┐рдЯ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛) рдХреЗ рдЕрдиреБрдкрд╛рдд рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред "рдзреАрдореА" рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдпрд╣ рдЕрдиреБрдкрд╛рдд ~ 13.6% рд╣реИред "рддреЗрдЬ" рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ - ~ тАЛтАЛ7%ред рдирддреАрдЬрддрди, рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдХрдо рджреЗрд░реА рд╣реИред
рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреНрд░реАрдлрд╝реИрдЪ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рднреА рдЗрд╕ рдЧрдгрдирд╛ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░реАрдлреИрдЪ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИрдВ рдЬреЛ рдПрд▓ 1 рдФрд░ рдПрд▓ 2 рдХреИрд╢ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реЗ рдЪрдордХрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕рд░реНрд╡рд╢рдХреНрддрд┐рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдбреЗрдЯрд╛ рдзрд╛рд░рд╛рдУрдВ рдХреА рдПрдХ рдЕрд▓рдЧ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд░рдгреА рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдЬреИрд╕реЗ рдХрд┐ [j] [i], рдПрдХ рдРрд╕реА рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рд╣реИред рдПрдХ рд╕рд╛рде рд╕реЗрд╡рд╛ рдХрд┐рдП рдЧрдП рдереНрд░реЗрдбреНрд╕ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдмрд╛рдж, рдереНрд░реЗрдбреНрд╕ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреНрд░реАрдлреЗрдЯрд┐рдВрдЧ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреНрд░реАрдлрд╝реИрдЪрд┐рдВрдЧ рд╕рднреА рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдирдП рддрд░рд╣ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдмрдирд╛рдпрд╛ рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ L1D рдФрд░ L2 рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреНрд░реАрдлрд╝реИрдЪ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдирд╛рдУрдВ рдХреЛ рд░рдЦрд╛:

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджрд░реНрд╢рд╛рддрд╛ рд╣реИред "рдЕрдЪреНрдЫрд╛" рдорд╛рдорд▓реЗ рдореЗрдВ L1D рдкреНрд░реАрдлреИрдЪ рдбрд┐рд╡рд╛рдЗрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ (L1D_PREFETCH.REQUESTS) рдХреА рд╕рдВрдЦреНрдпрд╛ "рдзреАрдореА" рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрдЬреАрдм рд╣реИ, рдпрд╣ рдПрдХ рдорд╛рд░реНрдЬрд┐рди рдХреЗ рд╕рд╛рде рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реАрдлрд╝реЗрдЪрд░ рдбреЗрдЯрд╛ рдзрд╛рд░рд╛рдУрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХреА рдЕрдкрдиреА рдХреНрд╖рдорддрд╛ рдореЗрдВ рд╕реАрдорд┐рдд рд╣реИред L2 рдХреИрд╢ рдХреЗ рд▓рд┐рдП рдкреНрд░реАрдлрд╝реИрдЪрд┐рдВрдЧ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рджреЛ рджрд┐рд▓рдЪрд╕реНрдк рдШрдЯрдирд╛рдПрдВ рд╣реИрдВ: L2_DATA_RQSTS.DEMAND.MESI (L2 рдбреЗрдЯрд╛ рдбрд┐рдорд╛рдВрдб рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ) рдФрд░ L2_DATA_RQSTS.PREETCH.MESI (рд╕рднреА L2 рдбреЗрдЯрд╛ рдкреНрд░реАрдлрд╝реИрдХреНрдЯрд░)ред
рдпрд╛рдиреА рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдкреНрд░реАрдлрд╝рдЪ рдбрд┐рд╡рд╛рдЗрд╕ рджреНрд╡рд╛рд░рд╛ рдкрд░реЛрд╕рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╢реНрдЪрд░реНрдп рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рдлрд┐рд░ рд╕реЗ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рддрд╕реНрд╡реАрд░ рджреЗрдЦреА рдЧрдИ рд╣реИред "рдЕрдЪреНрдЫреЗ" рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░реАрдлрд╝реИрдЪ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛рдлреА рдЕрдзрд┐рдХ рд╕рдХреНрд░рд┐рдп рдЕрдиреБрд░реЛрдз рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ "рдЦрд░рд╛рдм" рдорд╛рдорд▓рд╛ рдЧреИрд░-рд╕реЗрд╡рд╛рд░рдд рдХреНрд╡реЗрд░реА рдкреНрд░реАрдлреИрдЪ рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рд╕реЗ рд▓рдЧрднрдЧ рджреЛрдЧреБрдирд╛ рд╣реИред
рдЪрдХреНрд░реЛрдВ рдХреЗ рд╡рд┐рднрд╛рдЬрди / рд╡рд┐рднрд╛рдЬрди рдЪрдХреНрд░реЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХреИрд╢ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЫреЛрдЯреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░ рдЧрдгрдирд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рд╢рд╛рдЦрд╛рдУрдВ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рддреЗрдЬреА рд╕реЗ рд╣реЛрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ рдХрд┐ рд╣рдо рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдЖрдХрд╛рд░, рдХрдВрдкреНрдпреВрдЯрд░ рдкреНрд░рдгрд╛рд▓реА рдЬрд┐рд╕ рдкрд░ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрджрд┐ рдЬрд╛рдирддреЗ рд╣реИрдВред
рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?
рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрдВрдЯреЗрд▓ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреНрдпрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддрд╛ рд╣реИред рд╣рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдкрд╛рдпрджрд╛рди рдкрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реЗ рдСрдЯреЛ-рд╡реИрд░рд┐рдлрд┐рдХреЗрд╢рди рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд▓реЗрдВрдЧреЗред (рдпрд╣рд╛рдБ рдореИрдВ рдПрдХ рдмрджрдмреВрджрд╛рд░ рд╕реНрдорд╛рдЗрд▓реА рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБред)
icl -O2 / Qvec- distr.c -Fedistr_comp.exe
рд╕рдордп distr_comp.exe
...
рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП CPU рд╕рдордп: 'distr_comp.exe'
рдЕрд╕рд▓реА 41.799 рд╕реЗрдХрдВрдб
рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рд╣реИ - тАУрдУ 1 рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рдХ -рдУ 2 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рд╡рд┐рдХрд▓реНрдк / Qopt_report рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдХрд▓рдХ рдиреЗ рд▓реВрдк рдХрд╛ рд╡рд┐рднрд╛рдЬрди рдХрд┐рдпрд╛ рд╣реИ:
рд▓реВрдк рд▓рд╛рдЗрди рдореЗрдВ 54 рдкрд░ рдЛрдг рд╡рд┐рддрд░рдг
рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг (рдбрдВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛) рдХреА рдорджрдж рд╕реЗ, рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рднрд╛рдЬрди рдХрд┐рддрдиреЗ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
for(j=1;j<N-1;j++) { for(i=0;i<N;i++) { sum3 = sum3 + (c1[j][i]+c2[j][i]+c3[j][i]); sum3 = sum3 - (c1[j-1][i]+c2[j-1][i]+c3[j-1][i]); sum3 = sum3 - (c1[j+1][i]+c2[j+1][i]+c3[j+1][i]); } for(i=0;i<N;i++) { sum1 = sum1 + (a1[j][i]+a2[j][i]+a3[j][i]); sum2 = sum2 + (b1[j][i]+b2[j][i]+b3[j][i]); sum1 = sum1 - (a1[j-1][i]+a2[j-1][i]+a3[j-1][i]); sum2 = sum2 - (b1[j-1][i]+b2[j-1][i]+b3[j-1][i]); sum1 = sum1 - (a1[j+1][i]+a2[j+1][i]+a3[j+1][i]); sum2 = sum2 - (b1[j+1][i]+b2[j+1][i]+b3[j+1][i]); } }
рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдореИрдВ "рдорди рд╕реЗ рд╢реЛрдХ" рдХрд╣рддрд╛ рд╣реВрдВред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдПрдХ рддрд░рдл, рд╕рдВрдХрд▓рдХ рдореЗрдВ рдПрдХ рд░рдЪрдирд╛рддреНрдордХ рдХреНрд╖рдорддрд╛ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдФрд░ рдПрдХ рд╕рдореВрд╣ рдореЗрдВ рдЖрд╢реНрд░рд┐рдд рдЧрдгрдирд╛ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдпрд╣ рдХреЗрд╡рд▓ рдЖрдВрддрд░рд┐рдХ рд▓реВрдк рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рддрдХ рд╕реАрдорд┐рдд рдерд╛, рдпрд╣ рдЙрд╕ рд▓реВрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреА рд╕реНрдерд╛рдиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд▓рд╛рднреЛрдВ рдХреЛ рд╢реВрдиреНрдп рдХрд░рддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдХреНрд░рдордгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реБрдИ, рдФрд░ рдЗрд╕ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рд╕реНрдерд╛рдиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣рд╛рд╕рд┐рд▓ рдирд╣реАрдВ рд╣реБрдЖред рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рджреВрд╕рд░рд╛ рдЪрдХреНрд░ рдмреЛрдЭрд┐рд▓ рд▓рдЧ рд░рд╣рд╛ рд╣реИред
рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рдВрдХрд▓рдХ рдХреЛ рдХрдбрд╝рд╡реА рдЧреЛрд▓реА рдХреЛ рдореАрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдСрдЯреЛрд╡реИрдХреНрдЯрд░рд╛рдЗрдЬреЗрд╢рди рдХреНрдпрд╛ рджреЗрдЧрд╛:
icl -O2 distr.c -Fedistr_compvec.exe
рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП CPU рд╕рдордп: 'distr_compvec.exe'
рд╡рд╛рд╕реНрддрд╡рд┐рдХ 24.020 рд╕реЗрдХрдВрдб
рдирд┐рд╖реНрдХрд░реНрд╖:
рдЗрд╕ рдЫреЛрдЯреЗ рд╕реЗ рдЕрдзреНрдпрдпрди рдореЗрдВ, рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЬрдЯрд┐рд▓ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЧрддрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░рдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛рдлреА рдмрдбрд╝реА рд╣реИред рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдХрд╛рд░рдХ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рдП рдЧрдП рдпреЛрдЧрджрд╛рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рдЗрди-рдкреНрд░реЛрд╕реЗрд╕рд░ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдорд╛рдкрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реЛред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдПрдХ рдЗрд╖реНрдЯрддрдо рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдХрд▓рдХ рдХреЗ рд╣реЗрдпреБрд░рд┐рд╕реНрдЯрд┐рдХ рддрдВрддреНрд░ рдХреЛ рдХреБрдЫ рдирд┐рдпрдорд┐рддрддрд╛рдУрдВ рдХрд╛ рдмрд╣реБрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕рдореЗрдВ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрдХреВрд▓рди рдХреА рд╡реИрдзрддрд╛ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдЕрдХреНрд╕рд░ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдХреЛрдИ рдЕрдВрджрд╛рдЬрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рд╕ рдбреЗрдЯрд╛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдФрд░ рдХрд┐рд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкрд░ рдЪрд▓реЗрдЧрд╛ред