1234567891011121314151617181920212223242526272829303132333435363738 |
- /* { dg-do run } */
- #include <omp.h>
- extern void abort (void);
- void
- subdomain (float *x, int istart, int ipoints)
- {
- int i;
- for (i = 0; i < ipoints; i++)
- x[istart + i] = 123.456;
- }
- void
- sub (float *x, int npoints)
- {
- int iam, nt, ipoints, istart;
- #pragma omp parallel default(shared) private(iam,nt,ipoints,istart)
- {
- iam = omp_get_thread_num ();
- nt = omp_get_num_threads ();
- ipoints = npoints / nt; /* size of partition */
- istart = iam * ipoints; /* starting array index */
- if (iam == nt - 1) /* last thread may do more */
- ipoints = npoints - istart;
- subdomain (x, istart, ipoints);
- }
- }
- int
- main ()
- {
- int i;
- float array[10000];
- sub (array, 10000);
- for (i = 0; i < 10000; i++)
- if (array[i] < 123.45 || array[i] > 123.46)
- abort ();
- return 0;
- }
|