1 // RUN: %libomp-compile 2 // RUN: env OMP_NUM_THREADS=1 LIBOMP_USE_HIDDEN_HELPER_TASK=1 \ 3 // RUN: LIBOMP_NUM_HIDDEN_HELPER_THREADS=8 %libomp-run 4 5 #include <stdio.h> 6 #include <stdlib.h> 7 #include <omp.h> 8 9 #define Nz 8 10 #define DEVICE_ID 0 11 12 int a[Nz]; 13 main(void)14int main(void) { 15 for (int n = 0; n < 10; ++n) { 16 for (int k = 0; k < Nz; ++k) { 17 a[k] = -1; 18 } 19 #pragma omp parallel shared(a) 20 { 21 #pragma omp single 22 { 23 #pragma omp target teams distribute parallel for nowait device(DEVICE_ID) \ 24 map(tofrom : a[0 : 8]) 25 for (int i = 0; i < Nz; ++i) { 26 a[i] = i; 27 } 28 } 29 #pragma omp barrier 30 } 31 for (int k = 0; k < Nz; ++k) { 32 printf("a[%d] = %d\n", k, a[k]); 33 } 34 } 35 return 0; 36 } 37