Posted to tcl by patthoyts at Fri Mar 16 13:57:35 GMT 2007view raw
- #define _CRT_SECURE_NO_DEPRECATE
- #include <omp.h>
- #include <stdio.h>
- static void
- subdomain(int iam, float *x, int istart, int ipoints)
- {
- int i;
- for (i = 0; i < ipoints; i++)
- x[istart+i] = (float)(48 + iam);
- }
- static 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;
- printf("tid %d of %d from %d for %d\n", iam, nt, istart, ipoints);
- subdomain(iam, x, istart, ipoints);
- }
- }
- int
- main(void)
- {
- float array[10000];
- FILE *fp = NULL;
- sub(array, 10000);
- fp = fopen("z.dat", "w");
- if (fp) {
- fwrite(array, sizeof(float), 10000, fp);
- fclose(fp);
- }
- return 0;
- }