int main(int argc, char** argv) { /* Retrieve problem size. */ int n = N; int tsteps = TSTEPS; /* Variable declaration/allocation. */ POLYBENCH_3D_ARRAY_DECL(A, DATA_TYPE, N, N, N, n, n, n); POLYBENCH_3D_ARRAY_DECL(B, DATA_TYPE, N, N, N, n, n, n); /* Initialize array(s). */ init_array (n, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B)); /* Start timer. */ polybench_start_instruments; /* Run kernel. */ kernel_heat_3d (tsteps, n, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B)); /* Stop and print timer. */ polybench_stop_instruments; polybench_print_instruments; /* Prevent dead-code elimination. All live-out data must be printed by the function call in argument. */ polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(A))); /* Be clean. */ POLYBENCH_FREE_ARRAY(A); return 0; }
int main(int argc, char** argv) { /* Retrieve problem size. */ int ni = NI; int nj = NJ; int nk = NK; /* Variable declaration/allocation. */ POLYBENCH_3D_ARRAY_DECL(A, DATA_TYPE, NI, NJ, NK, ni, nj, nk); POLYBENCH_3D_ARRAY_DECL(B, DATA_TYPE, NI, NJ, NK, ni, nj, nk); /* Initialize array(s). */ init_array (ni, nj, nk, POLYBENCH_ARRAY(A)); /* Start timer. */ polybench_start_instruments; /* Run kernel. */ kernel_conv2d (ni, nj, nk, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B)); /* Stop and print timer. */ polybench_stop_instruments; polybench_print_instruments; /* Prevent dead-code elimination. All live-out data must be printed by the function call in argument. */ polybench_prevent_dce(print_array(ni, nj, nk, POLYBENCH_ARRAY(B))); /* Be clean. */ POLYBENCH_FREE_ARRAY(A); POLYBENCH_FREE_ARRAY(B); return 0; }
int main(int argc, char *argv[]) { int ni = NI; int nj = NJ; int nk = NK; POLYBENCH_3D_ARRAY_DECL(A,DATA_TYPE,NI,NJ,NK,ni,nj,nk); POLYBENCH_3D_ARRAY_DECL(B,DATA_TYPE,NI,NJ,NK,ni,nj,nk); POLYBENCH_3D_ARRAY_DECL(B_outputFromGpu,DATA_TYPE,NI,NJ,NK,ni,nj,nk); init(ni, nj, nk, POLYBENCH_ARRAY(A)); read_cl_file(); cl_initialization(); cl_mem_init(POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B)); cl_load_prog(); cl_launch_kernel(ni, nj, nk); errcode = clEnqueueReadBuffer(clCommandQue, b_mem_obj, CL_TRUE, 0, NI * NJ * NK * sizeof(DATA_TYPE), POLYBENCH_ARRAY(B_outputFromGpu), 0, NULL, NULL); if(errcode != CL_SUCCESS) printf("Error in reading GPU mem\n"); #ifdef RUN_ON_CPU /* Start timer. */ polybench_start_instruments; conv3D(ni, nj, nk, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B)); /* Stop and print timer. */ printf("CPU Time in seconds:\n"); polybench_stop_instruments; polybench_print_instruments; compareResults(ni, nj, nk, POLYBENCH_ARRAY(B), POLYBENCH_ARRAY(B_outputFromGpu)); #else //prevent dead code elimination polybench_prevent_dce(print_array(ni, nj, nk, POLYBENCH_ARRAY(B_outputFromGpu))); #endif //RUN_ON_CPU cl_clean_up(); POLYBENCH_FREE_ARRAY(A); POLYBENCH_FREE_ARRAY(B); POLYBENCH_FREE_ARRAY(B_outputFromGpu); return 0; }
int main(int argc, char** argv) { /* Retrieve problem size. */ int niter = NITER; int maxgrid = MAXGRID; int length = LENGTH; /* Variable declaration/allocation. */ POLYBENCH_2D_ARRAY_DECL(sum_tang, DATA_TYPE, MAXGRID, MAXGRID, maxgrid, maxgrid); POLYBENCH_2D_ARRAY_DECL(mean, DATA_TYPE, MAXGRID, MAXGRID, maxgrid, maxgrid); POLYBENCH_2D_ARRAY_DECL(path, DATA_TYPE, MAXGRID, MAXGRID, maxgrid, maxgrid); POLYBENCH_3D_ARRAY_DECL(diff, DATA_TYPE, MAXGRID, MAXGRID, LENGTH, maxgrid, maxgrid, length); POLYBENCH_3D_ARRAY_DECL(sum_diff, DATA_TYPE, MAXGRID, MAXGRID, LENGTH, maxgrid, maxgrid, length); /* Initialize array(s). */ init_array (maxgrid, POLYBENCH_ARRAY(sum_tang), POLYBENCH_ARRAY(mean), POLYBENCH_ARRAY(path)); /* Start timer. */ polybench_start_instruments; /* Run kernel. */ kernel_reg_detect (niter, maxgrid, length, POLYBENCH_ARRAY(sum_tang), POLYBENCH_ARRAY(mean), POLYBENCH_ARRAY(path), POLYBENCH_ARRAY(diff), POLYBENCH_ARRAY(sum_diff)); /* Stop and print timer. */ polybench_stop_instruments; polybench_print_instruments; /* Prevent dead-code elimination. All live-out data must be printed by the function call in argument. */ polybench_prevent_dce(print_array(maxgrid, POLYBENCH_ARRAY(path))); /* Be clean. */ POLYBENCH_FREE_ARRAY(sum_tang); POLYBENCH_FREE_ARRAY(mean); POLYBENCH_FREE_ARRAY(path); POLYBENCH_FREE_ARRAY(diff); POLYBENCH_FREE_ARRAY(sum_diff); return 0; }
int main(int argc, char** argv) { #pragma hmpp conv3d acquire /* Retrieve problem size. */ int ni = NI; int nj = NJ; int nk = NK; /* Variable declaration/allocation. */ POLYBENCH_3D_ARRAY_DECL(A, DATA_TYPE, NI, NJ, NK, ni, nj, nk); POLYBENCH_3D_ARRAY_DECL(B, DATA_TYPE, NI, NJ, NK, ni, nj, nk); #pragma hmpp conv3d allocate, & #pragma hmpp & args[A].size={ni,nj,nk}, args[A].hostdata="A", & #pragma hmpp & args[B].size={ni,nj,nk}, args[B].hostdata="B" /* Initialize array(s). */ init_array (ni, nj, nk, POLYBENCH_ARRAY(A)); #pragma hmpp conv3d advancedload, args[A] /* Start timer. */ polybench_start_instruments; /* Run kernel. */ #pragma hmpp conv3d callsite kernel_conv2d (ni, nj, nk, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B)); /* Stop and print timer. */ polybench_stop_instruments; polybench_print_instruments; #pragma hmpp conv3d delegatedstore, args[B] /* Prevent dead-code elimination. All live-out data must be printed by the function call in argument. */ polybench_prevent_dce(print_array(ni, nj, nk, POLYBENCH_ARRAY(B))); /* Be clean. */ POLYBENCH_FREE_ARRAY(A); POLYBENCH_FREE_ARRAY(B); #pragma hmpp conv3d release return 0; }
int main(int argc, char** argv) { /* Retrieve problem size. */ LENGTH = atoi(argv[1]); TSTEPS = atoi(argv[2]); int length = LENGTH; int tsteps = TSTEPS; /* Variable declaration/allocation. */ DATA_TYPE out; POLYBENCH_3D_ARRAY_DECL(sum_c,DATA_TYPE,LENGTH,LENGTH,LENGTH,length,length,length); POLYBENCH_2D_ARRAY_DECL(c,DATA_TYPE,LENGTH,LENGTH,length,length); POLYBENCH_2D_ARRAY_DECL(W,DATA_TYPE,LENGTH,LENGTH,length,length); /* Initialize array(s). */ init_array (length, POLYBENCH_ARRAY(c), POLYBENCH_ARRAY(W)); /* Start timer. */ polybench_start_instruments; /* Run kernel. */ kernel_dynprog (tsteps, length, POLYBENCH_ARRAY(c), POLYBENCH_ARRAY(W), POLYBENCH_ARRAY(sum_c), &out); /* Stop and print timer. */ polybench_stop_instruments; polybench_print_instruments; /* Prevent dead-code elimination. All live-out data must be printed by the function call in argument. */ polybench_prevent_dce(print_array(out)); /* Be clean. */ POLYBENCH_FREE_ARRAY(sum_c); POLYBENCH_FREE_ARRAY(c); POLYBENCH_FREE_ARRAY(W); return 0; }
int main(int argc, char** argv) { /* Retrieve problem size. */ int nr = NR; int nq = NQ; int np = NP; /* Variable declaration/allocation. */ POLYBENCH_3D_ARRAY_DECL(A,DATA_TYPE,NR,NQ,NP,nr,nq,np); POLYBENCH_1D_ARRAY_DECL(sum,DATA_TYPE,NP,np); POLYBENCH_2D_ARRAY_DECL(C4,DATA_TYPE,NP,NP,np,np); /* Initialize array(s). */ init_array (nr, nq, np, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(C4)); /* Start timer. */ polybench_start_instruments; /* Run kernel. */ kernel_doitgen (nr, nq, np, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(C4), POLYBENCH_ARRAY(sum)); /* Stop and print timer. */ polybench_stop_instruments; polybench_print_instruments; /* Prevent dead-code elimination. All live-out data must be printed by the function call in argument. */ polybench_prevent_dce(print_array(nr, nq, np, POLYBENCH_ARRAY(A))); /* Be clean. */ POLYBENCH_FREE_ARRAY(A); POLYBENCH_FREE_ARRAY(sum); POLYBENCH_FREE_ARRAY(C4); return 0; }
int main(int argc, char** argv) { #pragma hmpp regdetect acquire /* Retrieve problem size. */ int niter = NITER; int maxgrid = MAXGRID; int length = LENGTH; /* Variable declaration/allocation. */ POLYBENCH_2D_ARRAY_DECL(sum_tang, DATA_TYPE, MAXGRID, MAXGRID, maxgrid, maxgrid); POLYBENCH_2D_ARRAY_DECL(mean, DATA_TYPE, MAXGRID, MAXGRID, maxgrid, maxgrid); POLYBENCH_2D_ARRAY_DECL(path, DATA_TYPE, MAXGRID, MAXGRID, maxgrid, maxgrid); POLYBENCH_3D_ARRAY_DECL(diff, DATA_TYPE, MAXGRID, MAXGRID, LENGTH, maxgrid, maxgrid, length); POLYBENCH_3D_ARRAY_DECL(sum_diff, DATA_TYPE, MAXGRID, MAXGRID, LENGTH, maxgrid, maxgrid, length); #pragma hmpp regdetect allocate, & #pragma hmpp & args[sum_tang].size={maxgrid,maxgrid}, args[sum_tang].hostdata="sum_tang", & #pragma hmpp & args[mean].size={maxgrid,maxgrid}, args[mean].hostdata="mean", & #pragma hmpp & args[path].size={maxgrid,maxgrid}, args[path].hostdata="path", & #pragma hmpp & args[diff].size={maxgrid,maxgrid,length}, args[diff].hostdata="diff", & #pragma hmpp & args[sum_diff].size={maxgrid,maxgrid,length}, args[sum_diff].hostdata="sum_diff" /* Initialize array(s). */ init_array (maxgrid, POLYBENCH_ARRAY(sum_tang), POLYBENCH_ARRAY(mean), POLYBENCH_ARRAY(path)); #pragma hmpp regdetect advancedload, args[sum_tang;mean;path] /* Start timer. */ polybench_start_instruments; /* Run kernel. */ #pragma hmpp regdetect callsite kernel_reg_detect (niter, maxgrid, length, POLYBENCH_ARRAY(sum_tang), POLYBENCH_ARRAY(mean), POLYBENCH_ARRAY(path), POLYBENCH_ARRAY(diff), POLYBENCH_ARRAY(sum_diff)); /* Stop and print timer. */ polybench_stop_instruments; polybench_print_instruments; #pragma hmpp regdetect delegatedstore, args[path] /* Prevent dead-code elimination. All live-out data must be printed by the function call in argument. */ polybench_prevent_dce(print_array(maxgrid, POLYBENCH_ARRAY(path))); /* Be clean. */ POLYBENCH_FREE_ARRAY(sum_tang); POLYBENCH_FREE_ARRAY(mean); POLYBENCH_FREE_ARRAY(path); POLYBENCH_FREE_ARRAY(diff); POLYBENCH_FREE_ARRAY(sum_diff); #pragma hmpp regdetect release return 0; }