Homework 10: Due March 22, 2007 Use the program I gave you to write your own barrier routine in homework 6 to time new barrier routines that you will write. Time them exactly as was done in homework 6. The following are the barrier routines you are supposed to write: 1. subroutine barrier1(p, comm) ! write a barrier routine using mpi_bcast, as was done for hw6. 2. subroutine barrier2(p, rank, comm) ! write a barrier routine using mpi_sendrecv or mpi_sendrecv_replace ! this will count 5 points. 3. subroutine barrier3(p, comm) ! write a barrier routine using mpi_alltoall ! this will count 5 points 4. subroutine barrier4(p, rank, comm) ! write a barrier routine using mpi_isend~Rs and mpi_irecv~Rs. ! this will count 5 points 5. subroutine barrier5(p, rank, comm) ! write a barrier routine using processor 0 as a central manager, i.e. ! all nonzero processors send a message to processor 0 when they reach ! the barrier and then processor 0 sends a message to all other processors ! when all processors have reached the barrier. ! this will count 5 points A single program will compare the timings of the 5 barriers above with mpi_barrier using bmpirun with 4, 8, and 16 processors. Each run will give 1 timing trial for each barrier. Make two runs for 4 processors, two runs for 8 processors, and two runs with 16 processors. The timing portion will be worth 5 points.