I have a personal work to complete in C programming language

profilekittu_unadu
Project-Description.pdf

1

Project Description

Write an MPI program that uses a Monte Carlo method to estimate π. Suppose we toss darts

randomly at a square dartboard, whose bullseye is at the origin, and whose sides are 2 feet in

length. Suppose also that there’s a circle inscribed in the square dartboard. The radius of the

circle is 1 foot, and its area is π square feet. If the points that are hit by the darts are

uniformly distributed (and we always hit the square), then the number of darts that hit inside

the circle should approximately satisfy the equation

number in circle

total number of tosses =

𝜋

4 ,

since the ratio of the area of the circle to the area of the square is π/4.

We can use this formula to estimate the value of π with a random number generator:

number_in_circle = 0;

for (toss = 0; toss < number_of_tosses; toss++) {

x = random double between -1 and 1;

y = random double between -1 and 1;

distance_squared = x*x + y*y;

if (distance_squared <= 1) number_in_circle++;

}

pi_estimate = 4*number_in_circle/((double) number_of_tosses);

This is called a “Monte Carlo” method, since it uses randomness (the dart tosses).

Specifically, the MPI program can be implemented in the following way.

(1) Process 0 should read in the total number of tosses and broadcast it to the other processes.

(2) Use MPI_Reduce to find the global sum of the local variable number_in_circle, and have

process 0 print the result.

(3) You may want to use long long ints for the number of hits in the circle and the number

of tosses, since both may have to be very large to get a reasonable estimate of π.