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 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; }