Mercurial > hg > CbC > CbC_gcc
comparison libgomp/testsuite/libgomp.c/omp_workshare4.c @ 0:a06113de4d67
first commit
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2009 14:47:48 +0900 |
parents | |
children | 04ced10e8804 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
1 /****************************************************************************** | |
2 * OpenMP Example - Combined Parallel Loop Work-sharing - C/C++ Version | |
3 * FILE: omp_workshare4.c | |
4 * DESCRIPTION: | |
5 * This is a corrected version of the omp_workshare3.c example. Corrections | |
6 * include removing all statements between the parallel for construct and | |
7 * the actual for loop, and introducing logic to preserve the ability to | |
8 * query a thread's id and print it from inside the for loop. | |
9 * SOURCE: Blaise Barney 5/99 | |
10 * LAST REVISED: 03/03/2002 | |
11 ******************************************************************************/ | |
12 | |
13 #include <omp.h> | |
14 #include <stdio.h> | |
15 #define N 50 | |
16 #define CHUNKSIZE 5 | |
17 | |
18 main () { | |
19 | |
20 int i, chunk, tid; | |
21 float a[N], b[N], c[N]; | |
22 char first_time; | |
23 | |
24 /* Some initializations */ | |
25 for (i=0; i < N; i++) | |
26 a[i] = b[i] = i * 1.0; | |
27 chunk = CHUNKSIZE; | |
28 first_time = 'y'; | |
29 | |
30 #pragma omp parallel for \ | |
31 shared(a,b,c,chunk) \ | |
32 private(i,tid) \ | |
33 schedule(static,chunk) \ | |
34 firstprivate(first_time) | |
35 | |
36 for (i=0; i < N; i++) | |
37 { | |
38 if (first_time == 'y') | |
39 { | |
40 tid = omp_get_thread_num(); | |
41 first_time = 'n'; | |
42 } | |
43 c[i] = a[i] + b[i]; | |
44 printf("tid= %d i= %d c[i]= %f\n", tid, i, c[i]); | |
45 } | |
46 | |
47 return 0; | |
48 } |