Dear sir,
Is it possible that pluto can ignore applying tiling even after providing the necessary flags? I attempted tiling some benchmarks from polybench-3.2-3AC (
https://github.com/rbaghdadi/polybench-3.2-3AC) with custom tile sizes by using the tile.sizes file but it appears that pluto is ignoring applying tiling.
I have attached the code here from the gemver benchmark in polybench-3.2-3AC.
Flags used- --tile --nodiamond-tile --parallel --nofuse --nounrolljam
Original code before tiling:
#pragma scop
for (i = 0; i < _PB_N; i++)
for (j = 0; j < _PB_N; j++)
{
temp4 = u2[i] * v2[j];
temp3 = u1[i] * v1[j];
temp1 = temp3 + temp4;
temp8 = A[i][j] + temp1;
A[i][j] = temp8;
}
for (i = 0; i < _PB_N; i++)
for (j = 0; j < _PB_N; j++)
{
temp2 = A[j][i] * y[j];
temp6 = beta * temp2;
temp9 = x[i] + temp6;
x[i] = temp9;
}
for (i = 0; i < _PB_N; i++)
{
temp10 = x[i] + z[i];
x[i] = temp10;
}
for (i = 0; i < _PB_N; i++)
for (j = 0; j < _PB_N; j++)
{
temp5 = A[i][j] * x[j];
temp7 = alpha * temp5;
temp11 = w[i] + temp7;
w[i] = temp11;
}
#pragma endscop
Modified code obtained after applying a tile size of 16, 64:
int t1, t2, t3, t4, t5;
int lb, ub, lbp, ubp, lb2, ub2;
register int lbv, ubv;
if (_PB_N >= 1) {
for (t2=0;t2<=_PB_N-1;t2++) {
for (t4=0;t4<=_PB_N-1;t4++) {
temp3 = u1[t2] * v1[t4];;
temp4 = u2[t2] * v2[t4];;
temp1 = temp3 + temp4;;
temp8 = A[t2][t4] + temp1;;
A[t2][t4] = temp8;;
}
}
for (t2=0;t2<=_PB_N-1;t2++) {
for (t4=0;t4<=_PB_N-1;t4++) {
temp2 = A[t4][t2] * y[t4];;
temp6 = beta * temp2;;
temp9 = x[t2] + temp6;;
x[t2] = temp9;;
}
}
for (t2=0;t2<=_PB_N-1;t2++) {
temp10 = x[t2] + z[t2];;
x[t2] = temp10;;
}
for (t2=0;t2<=_PB_N-1;t2++) {
for (t4=0;t4<=_PB_N-1;t4++) {
temp5 = A[t2][t4] * x[t4];;
temp7 = alpha * temp5;;
temp11 = w[t2] + temp7;;
w[t2] = temp11;;
}
}
}
I have attached the photos of the detailed description generated by pluto for the same. Could you please let me know what is happening here.
Regards,
Dibyajyoti Acharya