Posted to tcl by patthoyts at Fri Mar 16 13:57:35 GMT 2007view pretty
#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; }