float accum_ref (int k) { int i; float tmp = 0.0; for (i = 0; i < N; i++) tmp += Pfun (i, k); return tmp; }
float accum(int k) { float tmp = 0.0; #pragma omp target update to(Q) #pragma omp target #pragma omp parallel for reduction(+:tmp) for(int i=0; i < N; i++) tmp += Pfun(i,k); return tmp; }
float accum (int k) { int i; float tmp = 0.0; #pragma omp target map(tofrom:tmp) #pragma omp parallel for reduction(+:tmp) for (i = 0; i < N; i++) tmp += Pfun (i, k); return tmp; }
float accum_ref () { int i, k; float tmp = 0.0; for (i = 0; i < N; i++) { float tmp1 = 0.0; for (k = 0; k < M; k++) tmp1 += Pfun(i,k); tmp += tmp1; } return tmp; }
float accum () { int i, k; float tmp = 0.0; #pragma omp target #pragma omp parallel for reduction(+:tmp) for (i = 0; i < N; i++) { float tmp1 = 0.0; #pragma omp simd reduction(+:tmp1) for (k = 0; k < M; k++) tmp1 += Pfun(i,k); tmp += tmp1; } return tmp; }
void callback(int (*Pfun)()){ Pfun(); }