int main(int argc, char **argv) { int n = N; int m = M; double(*A)[N][M]; A = (double(*)[N][M])polybench_alloc_data((N) * (M), sizeof(double)); double(*s)[M]; s = (double(*)[M])polybench_alloc_data(M, sizeof(double)); double(*q)[N]; q = (double(*)[N])polybench_alloc_data(N, sizeof(double)); double(*p)[M]; p = (double(*)[M])polybench_alloc_data(M, sizeof(double)); double(*r)[N]; r = (double(*)[N])polybench_alloc_data(N, sizeof(double)); init_array(m, n, *A, *r, *p); polybench_timer_start(); kernel_bicg(m, n, *A, *s, *q, *p, *r); polybench_timer_stop(); polybench_timer_print(); if (argc > 42 && !strcmp(argv[0], "")) print_array(m, n, *s, *q); free((void *)A); free((void *)s); free((void *)q); free((void *)p); free((void *)r); return 0; }
int main(int argc, char** argv) { /* Retrieve problem size. */ int nx = NX; int ny = NY; /* Variable declaration/allocation. */ POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, NX, NY, nx, ny); POLYBENCH_1D_ARRAY_DECL(s, DATA_TYPE, NY, ny); POLYBENCH_1D_ARRAY_DECL(q, DATA_TYPE, NX, nx); POLYBENCH_1D_ARRAY_DECL(p, DATA_TYPE, NY, ny); POLYBENCH_1D_ARRAY_DECL(r, DATA_TYPE, NX, nx); /* Initialize array(s). */ init_array (nx, ny, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(r), POLYBENCH_ARRAY(p)); /* Start timer. */ polybench_start_instruments; /* Run kernel. */ kernel_bicg (nx, ny, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(s), POLYBENCH_ARRAY(q), POLYBENCH_ARRAY(p), POLYBENCH_ARRAY(r)); /* 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(s), POLYBENCH_ARRAY(q))); /* Be clean. */ POLYBENCH_FREE_ARRAY(A); POLYBENCH_FREE_ARRAY(s); POLYBENCH_FREE_ARRAY(q); POLYBENCH_FREE_ARRAY(p); POLYBENCH_FREE_ARRAY(r); return 0; }
int main(int argc, char** argv){ double runtime=0.0; struct timeval start, end; if(argc<3){ printf("\nERROR: Insufficient Arguments!\n\n"); exit(-1); } /* Retrieve problem size. */ int n = atoi(argv[1]); int m = atoi(argv[2]); dimcount=2; psgdim[0]=n; psgdim[1]=m; dim0=n; dim1=m; /* Variable declaration/allocation. */ double *A=(double*)malloc(n*m*sizeof(double)); double *s=(double*)malloc(m*sizeof(double)); double *q=(double*)malloc(n*sizeof(double)); double *p=(double*)malloc(m*sizeof(double)); double *r=(double*)malloc(n*sizeof(double)); psgProtect(A,(long long) &A[0],(long long) &A[(n*m)-1]); psgProtect(s,(long long) &s[0],(long long) &s[m-1]); psgProtect(q,(long long) &q[0],(long long) &q[n-1]); psgProtect(p,(long long) &p[0],(long long) &p[m-1]); psgProtect(r,(long long) &r[0],(long long) &r[n-1]); /* Initialize array(s). */ init_array (m,n,A,r,p); /* Run kernel. */ gettimeofday(&start, NULL); kernel_bicg (m,n,A,s,q,p,r); gettimeofday(&end, NULL); printf("Total time taken to execute the kernel: %lf microseconds\n", (double) ((end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec))/(double)1000000); runtime=(double) ((end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec))/(double)1000000; if(argc==4){ print_data_2d(n,m,A,argv[3],1); print_data_1d(n,q,argv[3],0); print_data_1d(m,p,argv[3],0); print_data_1d(n,r,argv[3],0); } if(argc>=5) writeOVRData(argv[4],runtime,0); if(argc>=6) writeFPRData(argv[5],detectCounter,0); if(detectCounter) printf("\nINFO: Soft error detected\n"); else printf("\nINFO: No Soft errors detected\n"); /* Be clean. */ free(A); free(s); free(q); free(p); free(r); #ifdef INST printFaultSitesData(); printFaultInjectionData(); #endif return 0; }