00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include <omp.h>
00014 #include <stdio.h>
00015 #define N 50
00016 #define CHUNKSIZE 5
00017
00018 main () {
00019
00020 int i, chunk, tid;
00021 float a[N], b[N], c[N];
00022 char first_time;
00023
00024
00025 for (i=0; i < N; i++)
00026 a[i] = b[i] = i * 1.0;
00027 chunk = CHUNKSIZE;
00028 first_time = 'y';
00029
00030 #pragma omp parallel for \
00031 shared(a,b,c,chunk) \
00032 private(i,tid) \
00033 schedule(static,chunk) \
00034 firstprivate(first_time)
00035
00036 for (i=0; i < N; i++)
00037 {
00038 if (first_time == 'y')
00039 {
00040 tid = omp_get_thread_num();
00041 first_time = 'n';
00042 }
00043 c[i] = a[i] + b[i];
00044 printf("tid= %d i= %d c[i]= %f\n", tid, i, c[i]);
00045 }
00046
00047 return 0;
00048 }