Information regarding pluto

19 views
Skip to first unread message

DIBYAJYOTI ACHARYA B.TECH

unread,
Sep 11, 2025, 10:04:13 AMSep 11
to Pluto development
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

Screenshot from 2025-09-11 19-29-51.png
Screenshot from 2025-09-11 19-30-53.png
Screenshot from 2025-09-11 19-27-33.png

DIBYAJYOTI ACHARYA B.TECH

unread,
Sep 11, 2025, 10:10:46 AMSep 11
to Pluto development
It's not even applying the default tile size of 32, 32.

I am currently using pluto-v12.

Is this a build problem which is specific to my system?

Regards,
Dibyajyoti Acharya

Uday Kumar Reddy Bondhugula

unread,
Sep 11, 2025, 11:00:46 AMSep 11
to DIBYAJYOTI ACHARYA B.TECH, Pluto development

Pluto won't consider this nest tilable because of the local variables you have. These variables create false dependences (WAR and WAW) on the surrounding loops. To make this tilable/parallelizable, you'll have to inline the expressions, which will eliminate the temporaries/scalars. Tiling will then happen.

-Uday

DISCLAIMER: This message contains confidential information and is intended only for the individual named. If you are not the named addressee you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately by e-mail if you have received this e-mail by mistake and delete this e-mail from your system.

Silicon Institute of Technology

--
You received this message because you are subscribed to the Google Groups "Pluto development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pluto-developm...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/pluto-development/abb9d5e9-f1db-47cf-945b-8e8c6a60deffn%40googlegroups.com.
Message has been deleted

DIBYAJYOTI ACHARYA B.TECH

unread,
Sep 12, 2025, 2:02:04 AMSep 12
to Pluto development

Thank you sir for clarifying.

-Dibyajyoti

Uday Bondhugula

unread,
Sep 12, 2025, 2:04:48 AMSep 12
to Pluto development

In addition, there is another easy way to cleanly work around local variables. You can put them in a function and call it from the loop body as shown in this example: https://github.com/bondhugula/pluto/blob/ede53d306860357b378f3e158e4c286a40a989fc/examples/lbm/fpc/d2q9/fpc_d2q9.c#L130
Reply all
Reply to author
Forward
0 new messages