Stencil BenchmarkSets

候选benchmark PloyBench cell_cuda radinia FDTD

1
2
3
4
5
6
7
8
9
for (i=1; i<imax-1; i++)
for (j=1; j<jmax-1; j++)
for (k=1; k<kmax-1; k++)
{
s0 =  a0[i][j][k]*p[i+1][j][k]+ a1[i][j][k]*p[i][j+1][k]+ a2[i][j][k]*p[i][j][k+1]+ b0[i][j][k]*(p[i+1][j+1][k] - p[i+1][j-1][k]- p[i-1][j+1][k] + p[i-1][j-1][k])+ b1[i][j][k]*(p[i][j+1][k+1] - p[i][j+1][k-1]- p[i][j-1][k+1] + p[i][j-1][k-1])+ b2[i][j][k]*(p[i+1][j][k+1] - p[i+1][j][k-1]- p[i-1][j][k+1] + p[i-1][j][k-1])+ c0[i][j][k]*p[i-1][j][k]+ c1[i][j][k]*p[i][j-1][k]+ c2[i][j][k]*p[i][j][k-1]+ wrk1[i][j][k];
ss = (s0*a3[i][j][k]-p[i][j][k])*bnd[i][j][k];     //(ss = delta P)
wrk2[i][j][k]=p[i][j][k]+omega*ss;    //(over-relaxation)
gosa += ss*ss;                        //(residual, measure of convergence)
}
  • 3D Possion 19-point: test
1
2
3
4
5
a1[k][j][i]=c0*(b[k][j][i]+
              c1*(a0[k][j][i+1]+a0[k][j][i-1]+a0[k][j+1][i]+a0[k][j-1][i]+a0[k][j][i+1]+a0[k][j][i-1])+a0[k][j][i]+a0[k][j][i])+
              a0[k+1][j+1][i]+a0[k+1][j-1][i]+a0[k-1][j+1][i]+a0[k-1][j-1][i]+
              a0[k+1][j][i+1]+a0[k+1][j][i-1]+a0[k-1][j][i+1]+a0[k-1][j][i-1]
              a0[k][j+1][i+1]+a0[k][j+1][i-1]+a0[k][j-1][i+1]+a0[k][j-1][i-1]);
  • 3D heat:test
1
2
3
4
a(t, i, j, k) =  0.125 * (a(t-1, i+1, j, k) - 2.0 * a(t-1, i, j, k) + a(t-1, i-1, j, k))
         c + 0.125 * (a(t-1, i, j+1, k) - 2.0 * a(t-1, i, j, k) + a(t-1, i, j-1, k))
         + 0.125 * (a(t-1, i, j, k+1) - 2.0 * a(t-1, i, j, k) + a(t-1, i, j, k-1))
         + a(t-1, i, j, k);
  • Wave equation:test
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* It's order-4, 3D 15 point stencil, to match up with Matteo Frigo's
 * hand-optimized wave equation 
 */
float c0 = coef[0], c1 = coef[1], c2 = coef[2], c3 = coef[3], c4 = coef[4];
float div = c0 * pa(t, i, j, k) +
                c1 * ((pa(t, i, j, k+1) + pa(t, i, j, k-1))
                    + (pa(t, i, j+1, k) + pa(t, i, j-1, k))
                    + (pa(t, i+1, j, k) + pa(t, i-1, j, k)))
              + c2 * ((pa(t, i, j, k+2) + pa(t, i, j, k-2))
                    + (pa(t, i, j+2, k) + pa(t, i, j-2, k))
                    + (pa(t, i+2, j, k) + pa(t, i-2, j, k)))
              + c3 * ((pa(t, i, j, k+3) + pa(t, i, j, k-3))
                    + (pa(t, i, j+3, k) + pa(t, i, j-3, k))
                    + (pa(t, i+3, j, k) + pa(t, i-3, j, k)))
              + c4 * ((pa(t, i, j, k+4) + pa(t, i, j, k-4))
                    + (pa(t, i, j+4, k) + pa(t, i, j-4, k))
                    + (pa(t, i+4, j, k) + pa(t, i-4, j, k)));
pa(t+1, i, j, k) = 2 * pa(t, i, j, k) - pa(t+1, i, j, k) + vsq[i * Nxy + j * Nx + k] * div;