37 lines · c
1// RUN: %libomp-compile2// RUN: env OMP_NUM_THREADS=1 LIBOMP_USE_HIDDEN_HELPER_TASK=1 \3// RUN: LIBOMP_NUM_HIDDEN_HELPER_THREADS=8 %libomp-run4 5#include <stdio.h>6#include <stdlib.h>7#include <omp.h>8 9#define Nz 810#define DEVICE_ID 011 12int a[Nz];13 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 single22 {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 barrier30 }31 for (int k = 0; k < Nz; ++k) {32 printf("a[%d] = %d\n", k, a[k]);33 }34 }35 return 0;36}37