Loop Fission
Loop Fission (splitting) or loop distribution:
improve memory locality by splitting out loops that refer to different independent arrays
for(i=1; i<n; i++){
a[i] = a[i] + b[i-1];
b[i] = c[i-1]*x + y;
c[i] = 1/b[i];
d[i] = sqrt(c[i]);
}
for(i=0; i<n-1; i++){
b[i+1] = c[i]*x + y;
c[i+1] = 1/b[i+1];
}
for(i=0; i<n-1; i++)
a[i+1] = a[i+1] + b[i];
for(i=0; i<n-1; i++)
d[i+1] = sqrt(c[i+1]);
i=n+1
-LNO:fission=[0,1,2] (default 1)
0 no fission
1 normal fission
3 fission tried before fussion
attempts to distribute inner loops
Previous slide
Next slide
Back to first slide
View graphic version