#include #include #include #include int Nthreads; int myid[100]; int N; double sum[100]; pthread_t tid[200]; double h; void *mycpi(void *arg) { int myrank; // int i, j; int i; double x; myrank = *(int *)arg; h = 1.0 / (double) N; sum[myrank] = 0.0; for (i = N/Nthreads*myrank+1; i <= N/Nthreads*(myrank+1); i ++) { x = h * ((double)i - 0.5); sum[myrank] += 4.0 / (1.0 + x*x); } return(NULL); } int main(int argc, char *argv[]) { // int done = 0, numprocs, i, rc; int i; double PI25DT = 3.141592653589793238462643; // double mypi, pi, h, x, a; double mypi, h; /* if (argc != 2) { printf("Usage: a.out N\n"); exit(0); } */ if (argc > 2) { N = atoi(argv[2]); Nthreads = atoi(argv[1]); } else if (argc > 1) { N = 1000; Nthreads = atoi(argv[1]); } else {N=1000; Nthreads = 1;} for (i=0; i