Mercurial > hg > CbC > CbC_gcc
view libgomp/testsuite/libgomp.c-c++-common/ordered-4.c @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 84e7813d76e9 |
children |
line wrap: on
line source
extern #ifdef __cplusplus "C" #endif void abort (void); void foo (int i, char *j) { #pragma omp atomic j[i]++; #pragma omp ordered threads { int t; #pragma omp atomic read t = j[i]; if (t != 3) abort (); if (i > 1) { #pragma omp atomic read t = j[i - 1]; if (t == 2) abort (); } if (i < 127) { #pragma omp atomic read t = j[i + 1]; if (t == 4) abort (); } } #pragma omp atomic j[i]++; } int main () { int i; char j[128]; #pragma omp parallel { #pragma omp for for (i = 0; i < 128; i++) j[i] = 0; #pragma omp for ordered schedule(dynamic, 1) for (i = 0; i < 128; i++) { #pragma omp atomic j[i]++; #pragma omp ordered threads { int t; #pragma omp atomic read t = j[i]; if (t != 1) abort (); if (i > 1) { #pragma omp atomic read t = j[i - 1]; if (t == 0) abort (); } if (i < 127) { #pragma omp atomic read t = j[i + 1]; if (t == 2) abort (); } } #pragma omp atomic j[i]++; } #pragma omp for ordered schedule(static, 1) for (i = 0; i < 128; i++) foo (i, j); } return 0; }