//how many cycles does it take with pin #include #include __declspec(target(gfx)) double var = 0.0; __declspec(target(gfx)) void compute_array_update(double *src, int size) { for(int i = 0; i < size; i++) { var += src[i] / 10000; } } void run_exeperiment_pin(double *vector1, int size) { int do_offload = 1; for(int i = 0; i < size; i++) { vector1[i] = (double) (i % 256) / 512; } #pragma offload target(gfx) if(do_offload) \ in(size) \ inout(var) \ pin(vector1 : length(size)) #pragma parallel_loop for(int i = 0; i < 1; i++) { compute_array_update(vector1, size); } } int main(int argc, char ** argv) { if(argc != 2) { printf("error: insufficient arguments\n"); exit(-1); } int size = atoi(argv[1]); double *vector1; if((vector1 = (double*) malloc(size * sizeof(double))) == NULL) { printf("error at allocating vector1\n"); exit(-1); } run_exeperiment_pin(vector1, size); printf("Variable: %lf\n", var); free(vector1); return 0; }