Viewing file: ordered-2.c (1.32 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* Trivial test of ordered. */
/* { dg-require-effective-target sync_int_long } */
#include <omp.h> #include <string.h> #include <assert.h> #include "libgomp_g.h"
#define N 100 static int next; static int CHUNK, NTHR;
static void clean_data (void) { next = 0; }
static void set_data (long i) { int n = __sync_fetch_and_add (&next, 1); assert (n == i); }
#define TMPL_1(sched) \ static void f_##sched##_1 (void *dummy) \ { \ long s0, e0, i; \ if (GOMP_loop_ordered_##sched##_start (0, N, 1, CHUNK, &s0, &e0)) \ do \ { \ for (i = s0; i < e0; ++i) \ { \ GOMP_ordered_start (); \ set_data (i); \ GOMP_ordered_end (); \ } \ } \ while (GOMP_loop_ordered_##sched##_next (&s0, &e0)); \ GOMP_loop_end (); \ } \ static void t_##sched##_1 (void) \ { \ clean_data (); \ GOMP_parallel_start (f_##sched##_1, NULL, NTHR); \ f_##sched##_1 (NULL); \ GOMP_parallel_end (); \ }
TMPL_1(static) TMPL_1(dynamic) TMPL_1(guided)
static void test (void) { t_static_1 (); t_dynamic_1 (); t_guided_1 (); }
int main() { omp_set_dynamic (0);
NTHR = 4;
CHUNK = 1; test ();
CHUNK = 5; test ();
CHUNK = 7; test ();
CHUNK = 0; t_static_1 ();
return 0; }
|