/* Include polybench common header. */ #include "polybench.h" /* Include benchmark-specific header. */ /* Default data type is double, default size is 4000. */ #include "syrk.h" /* Main computational kernel. The whole function will be timed, including the call and return. */ void kernel_syrk(int ni, int nj, DATA_TYPE alpha, DATA_TYPE beta, DATA_TYPE POLYBENCH_2D(C,NI,NI,ni,ni), DATA_TYPE POLYBENCH_2D(A,NI,NJ,ni,nj)) { int i, j, k; /* C := alpha*A*A' + beta*C */ #if 0 for (i = 0; i < _PB_NI; i++) for (j = 0; j < _PB_NI; j++) C[i][j] *= beta; #endif for (i = 0; i < _PB_NI; i++) for (j = 0; j < _PB_NI; j++) for (k = 0; k < _PB_NJ; k++) C[i][j] += alpha * A[i][k] * A[j][k]; }