Mercurial > hg > CbC > CbC_gcc
view libgomp/testsuite/libgomp.c/target-32.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
line wrap: on
line source
#include <stdlib.h> #include <unistd.h> int main () { int a = 0, b = 0, c = 0, d[7]; #pragma omp parallel #pragma omp single { #pragma omp task depend(out: d[0]) a = 2; #pragma omp target enter data nowait map(to: a,b,c) depend(in: d[0]) depend(out: d[1]) #pragma omp target nowait map(alloc: a) depend(in: d[1]) depend(out: d[2]) a++; #pragma omp target nowait map(alloc: b) depend(in: d[2]) depend(out: d[3]) { usleep (1000); #pragma omp atomic update b |= 4; } #pragma omp target nowait map(alloc: b) depend(in: d[2]) depend(out: d[4]) { usleep (5000); #pragma omp atomic update b |= 1; } #pragma omp target nowait map(alloc: c) depend(in: d[3], d[4]) depend(out: d[5]) { usleep (5000); #pragma omp atomic update c |= 8; } #pragma omp target nowait map(alloc: c) depend(in: d[3], d[4]) depend(out: d[6]) { usleep (1000); #pragma omp atomic update c |= 2; } #pragma omp target exit data map(always,from: a,b,c) depend(in: d[5], d[6]) } if (a != 3 || b != 5 || c != 10) abort (); return 0; }