int main(int argc, char** argv) { fid = fopen("memory.txt", "w+t"); /* Retrieve problem size. */ int tmax = TMAX; int nx = NX; int ny = NY; /* Variable declaration/allocation. */ POLYBENCH_2D_ARRAY_DECL(ex,DATA_TYPE,NX,NY,nx,ny); POLYBENCH_2D_ARRAY_DECL(ey,DATA_TYPE,NX,NY,nx,ny); POLYBENCH_2D_ARRAY_DECL(hz,DATA_TYPE,NX,NY,nx,ny); POLYBENCH_1D_ARRAY_DECL(_fict_,DATA_TYPE,TMAX,tmax); /* Initialize array(s). */ init_array (tmax, nx, ny, POLYBENCH_ARRAY(ex), POLYBENCH_ARRAY(ey), POLYBENCH_ARRAY(hz), POLYBENCH_ARRAY(_fict_)); /* Start timer. */ polybench_start_instruments; /* Run kernel. */ kernel_fdtd_2d (tmax, nx, ny, POLYBENCH_ARRAY(ex), POLYBENCH_ARRAY(ey), POLYBENCH_ARRAY(hz), POLYBENCH_ARRAY(_fict_)); /* 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. */ print_array(nx, ny, POLYBENCH_ARRAY(ex), POLYBENCH_ARRAY(ey), POLYBENCH_ARRAY(hz)); /* Be clean. */ POLYBENCH_FREE_ARRAY(ex); POLYBENCH_FREE_ARRAY(ey); POLYBENCH_FREE_ARRAY(hz); POLYBENCH_FREE_ARRAY(_fict_); return 0; }
int main(int argc, char** argv) { int tmax = TMAX; int nx = NX; int ny = NY; Arr2D<double> ex{nx, ny}, ey{nx, ny}, hz{nx, ny}; Arr1D<double> _fict_{tmax}; init_array(tmax, nx, ny, &ex, &ey, &hz, &_fict_); { util::block_timer t{"FDTD-2D"}; kernel_fdtd_2d(tmax, nx, ny, &ex, &ey, &hz, &_fict_); } if (argc > 42) print_array(nx, ny, &ex, &ey, &hz); return 0; }
int main(int argc, char** argv) { int tmax = TMAX; int nx = NX; int ny = NY; double(*ex)[NX][NY]; ex = (double(*)[NX][NY])polybench_alloc_data((NX) * (NY), sizeof(double)); double(*ey)[NX][NY]; ey = (double(*)[NX][NY])polybench_alloc_data((NX) * (NY), sizeof(double)); double(*hz)[NX][NY]; hz = (double(*)[NX][NY])polybench_alloc_data((NX) * (NY), sizeof(double)); double(*_fict_)[TMAX]; _fict_ = (double(*)[TMAX])polybench_alloc_data(TMAX, sizeof(double)); init_array(tmax, nx, ny, *ex, *ey, *hz, *_fict_); polybench_timer_start(); kernel_fdtd_2d(tmax, nx, ny, *ex, *ey, *hz, *_fict_); polybench_timer_stop(); polybench_timer_print(); if (argc > 42 && !strcmp(argv[0], "")) print_array(nx, ny, *ex, *ey, *hz) free((void*)ex); free((void*)ey); free((void*)hz); free((void*)_fict_); return 0; }
int main(int argc, char** argv) { /* Prepare ctuning vars */ long ct_repeat=0; long ct_repeat_max=1; int ct_return=0; /* Retrieve problem size. */ int tmax = TMAX; int nx = NX; int ny = NY; #ifdef OPENME openme_init(NULL,NULL,NULL,0); openme_callback("PROGRAM_START", NULL); #endif /* Variable declaration/allocation. */ POLYBENCH_2D_ARRAY_DECL(ex,DATA_TYPE,NX,NY,nx,ny); POLYBENCH_2D_ARRAY_DECL(ey,DATA_TYPE,NX,NY,nx,ny); POLYBENCH_2D_ARRAY_DECL(hz,DATA_TYPE,NX,NY,nx,ny); POLYBENCH_1D_ARRAY_DECL(_fict_,DATA_TYPE,TMAX,tmax); /* Initialize array(s). */ init_array (tmax, nx, ny, POLYBENCH_ARRAY(ex), POLYBENCH_ARRAY(ey), POLYBENCH_ARRAY(hz), POLYBENCH_ARRAY(_fict_)); /* Start timer. */ polybench_start_instruments; /* Run kernel. */ if (getenv("CT_REPEAT_MAIN")!=NULL) ct_repeat_max=atol(getenv("CT_REPEAT_MAIN")); #ifdef OPENME openme_callback("KERNEL_START", NULL); #endif for (ct_repeat=0; ct_repeat<ct_repeat_max; ct_repeat++) kernel_fdtd_2d (tmax, nx, ny, POLYBENCH_ARRAY(ex), POLYBENCH_ARRAY(ey), POLYBENCH_ARRAY(hz), POLYBENCH_ARRAY(_fict_)); #ifdef OPENME openme_callback("KERNEL_END", NULL); #endif /* 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(nx, ny, POLYBENCH_ARRAY(ex), POLYBENCH_ARRAY(ey), POLYBENCH_ARRAY(hz))); /* Be clean. */ POLYBENCH_FREE_ARRAY(ex); POLYBENCH_FREE_ARRAY(ey); POLYBENCH_FREE_ARRAY(hz); POLYBENCH_FREE_ARRAY(_fict_); #ifdef OPENME openme_callback("PROGRAM_END", NULL); #endif return 0; }
int main(int argc, char** argv) { #pragma hmpp fdtd2d acquire /* Retrieve problem size. */ int tmax = TMAX; int nx = NX; int ny = NY; /* Variable declaration/allocation. */ POLYBENCH_2D_ARRAY_DECL(ex,DATA_TYPE,NX,NY,nx,ny); POLYBENCH_2D_ARRAY_DECL(ey,DATA_TYPE,NX,NY,nx,ny); POLYBENCH_2D_ARRAY_DECL(hz,DATA_TYPE,NX,NY,nx,ny); POLYBENCH_1D_ARRAY_DECL(_fict_,DATA_TYPE,TMAX,tmax); #pragma hmpp fdtd2d allocate, & #pragma hmpp & args[ex].size={nx,ny}, args[ex].hostdata="ex", & #pragma hmpp & args[ey].size={nx,ny}, args[ey].hostdata="ey", & #pragma hmpp & args[hz].size={nx,ny}, args[hz].hostdata="hz", & #pragma hmpp & args[_fict_].size={tmax}, args[_fict_].hostdata="_fict_" /* Initialize array(s). */ init_array (tmax, nx, ny, POLYBENCH_ARRAY(ex), POLYBENCH_ARRAY(ey), POLYBENCH_ARRAY(hz), POLYBENCH_ARRAY(_fict_)); /* Start timer. */ polybench_start_instruments; /* Run kernel. */ kernel_fdtd_2d (tmax, nx, ny, POLYBENCH_ARRAY(ex), POLYBENCH_ARRAY(ey), POLYBENCH_ARRAY(hz), POLYBENCH_ARRAY(_fict_)); #pragma hmpp fdtd2d advancedload, args[ex;ey;hz;_fict_] /* Stop and print timer. */ polybench_stop_instruments; polybench_print_instruments; #pragma hmpp fdtd2d delegatedstore, args[ex;ey;hz] /* Prevent dead-code elimination. All live-out data must be printed by the function call in argument. */ polybench_prevent_dce(print_array(nx, ny, POLYBENCH_ARRAY(ex), POLYBENCH_ARRAY(ey), POLYBENCH_ARRAY(hz))); /* Be clean. */ POLYBENCH_FREE_ARRAY(ex); POLYBENCH_FREE_ARRAY(ey); POLYBENCH_FREE_ARRAY(hz); POLYBENCH_FREE_ARRAY(_fict_); #pragma hmpp fdtd2d release return 0; }