0% found this document useful (0 votes)
71 views8 pages

HW 2

The document compares the performance of three different versions of MPI communication. It runs tests using different matrix sizes and reports the maximum time for each version. Generally, the send_recv_replace version was the fastest.

Uploaded by

Peter Finzell
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
71 views8 pages

HW 2

The document compares the performance of three different versions of MPI communication. It runs tests using different matrix sizes and reports the maximum time for each version. Generally, the send_recv_replace version was the fastest.

Uploaded by

Peter Finzell
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

CompS 525 HW 2

Peter Finzell
Source code
use mpi
implicit none
integer, parameter :: dp=mpi_double_precision, comm = mpi_comm_world
integer :: i, j, ierror, p, rank, status(mpi_status_size), left, right
integer, parameter :: n = 250
double precision :: A(n,n), t1, t2, time, max_time
call mpi_init(ierror)
call mpi_comm_size(comm, p, ierror)
call mpi_comm_rank(comm, rank, ierror)
if (rank == 0) then
print*,'The value of n used was n = ', n
endif
! initialize A
A(1:n,1:n)=0.d0
! move A to the right for until rank is greater than p-1
if (rank == 0) then
left=mpi_proc_null
else
left=rank-1
endif
if (rank == p-1) then
right=mpi_proc_null
else
right=rank+1
endif
do i = 1, n
!
do j = 1,n
A(j,i) = rank + i + j!
!
end do
end do
call mpi_barrier(comm,ierror)

t1 = mpi_wtime()
! Time Version 1
call MPI_SsEND(A,1,dp,right,0,comm,ierror)
call MPI_RECV(A,1,dp,left,0,comm,mpi_status_ignore,ierror)
t2=mpi_wtime()
time = t2 - t1
call mpi_reduce(time, max_time, 1, dp, mpi_max, 0, comm, ierror)
if (rank == 0) then
print*,' maximum time = ', max_time,' seconds'
print*,' Time Version 1 '
endif
call mpi_barrier(comm,ierror)
t1 = mpi_wtime()
! Time Version 2
call MPI_SEND(A,1,dp,right,0,comm,ierror)
call MPI_RECV(A,1,dp,left,0,comm,mpi_status_ignore,ierror)
t2=mpi_wtime()
time = t2 - t1
call mpi_reduce(time, max_time, 1, dp, mpi_max, 0, comm, ierror)
if (rank == 0) then
print*,' maximum time = ', max_time,' seconds'
print*,' Time Version 2 '
endif
call mpi_barrier(comm,ierror)
t1 = mpi_wtime()
! Time Version 3
call MPI_SENDRECV_replace(A,1,dp,right,0,left,0,comm,mpi_status_ignore,ierror)
t2=mpi_wtime()
time = t2 - t1
call mpi_reduce(time, max_time, 1, dp, mpi_max, 0, comm, ierror)
if (rank == 0) then
print*,' maximum time = ', max_time,' seconds'
print*,' Time Version 3 '
endif
call mpi_finalize(ierror)
end

Results
n=10
Script4
The value of n used was n =

10

Time Version 1
!
maximum time = 2.942085266113281E-004 seconds
!
maximum time = 2.839565277099609E-004 seconds
!
maximum time = 3.027915954589844E-004 seconds
Time Version 2
!
maximum time = 2.288818359375000E-005 seconds
!
maximum time = 1.692771911621094E-005 seconds
!
maximum time = 1.502037048339844E-005 seconds
Time Version 3
!
maximum time = 1.502037048339844E-005 seconds
!
maximum time = 1.597404479980469E-005 seconds
!
maximum time = 1.597404479980469E-005 seconds
Script8
Time Version 1
!
maximum time = 4.260540008544922E-004 seconds
!
maximum time = 3.941059112548828E-004 seconds
!
maximum time = 4.160404205322266E-004 seconds
Time Version 2
!
maximum time = 3.004074096679688E-005 seconds
!
maximum time = 2.789497375488281E-005 seconds
!
maximum time = 3.194808959960938E-005 seconds
Time Version 3
!
maximum time = 2.980232238769531E-005 seconds
!
maximum time = 2.789497375488281E-005 seconds
!
maximum time = 2.694129943847656E-005 seconds

Script16
Time Version 1
!
maximum time = 9.260177612304688E-004 seconds
!
maximum time = 8.828639984130859E-004 seconds
!
maximum time = 8.728504180908203E-004 seconds
Time Version 2
!
maximum time = 4.005432128906250E-005 seconds
!
maximum time = 3.194808959960938E-005 seconds
!
maximum time = 3.504753112792969E-005 seconds
Time Version 3
!
maximum time = 3.600120544433594E-005 seconds
!
maximum time = 3.004074096679688E-005 seconds
!
maximum time = 3.504753112792969E-005 seconds
Script32
Time Version 1
!
maximum time = 1.834869384765625E-003 second
!
maximum time = 1.841068267822266E-003 seconds
!
maximum time = 1.913070678710938E-003 seconds
Time Version 2
!
maximum time = 4.005432128906250E-005 seconds
!
maximum time = 3.910064697265625E-005 seconds
!
maximum time = 4.291534423828125E-005 seconds
Time Version 3
!
maximum time = 5.292892456054688E-005 seconds
!
maximum time = 3.409385681152344E-005 seconds
!
maximum time = 3.695487976074219E-005 seconds

n=250
Script4
The value of n used was n =

250

Time Version 1
!
maximum time = 3.559589385986328E-004 seconds
!
maximum time = 3.209114074707031E-004 seconds
!
maximum time = 3.590583801269531E-004 seconds
Time Version 2
!
maximum time = 2.789497375488281E-005 seconds
!
maximum time = 1.597404479980469E-005 seconds
!
maximum time = 1.978874206542969E-005 seconds
Time Version 3
!
maximum time = 1.716613769531250E-005 seconds
!
maximum time = 1.597404479980469E-005 seconds
!
maximum time = 1.883506774902344E-005 seconds
Script8
Time Version 1
!
maximum time = 5.757808685302734E-004 seconds
!
maximum time = 5.838871002197266E-004 seconds
!
maximum time = 5.180835723876953E-004 seconds
Time Version 2
!
maximum time = 3.314018249511719E-005 seconds
!
maximum time = 3.290176391601563E-005 seconds
!
maximum time = 3.194808959960938E-005 seconds
Time Version 3
!
maximum time = 2.598762512207031E-005 seconds
!
maximum time = 3.314018249511719E-005 seconds
!
maximum time = 2.312660217285156E-005 seconds

Script16
Time Version 1
!
maximum time = 1.220941543579102E-003 seconds
!
maximum time = 1.258134841918945E-003 seconds
!
maximum time = 1.250028610229492E-003 seconds
Time Version 2
!
maximum time = 3.600120544433594E-005 seconds
!
maximum time = 4.601478576660156E-005 seconds
!
maximum time = 3.910064697265625E-005 seconds
Time Version 3
!
maximum time = 3.910064697265625E-005 seconds
!
maximum time = 3.600120544433594E-005 seconds
!
maximum time = 3.790855407714844E-005 seconds
Script32
Time Version 1
!
maximum time = 2.569198608398438E-003 seconds
!
maximum time = 2.619028091430664E-003 seconds
!
maximum time = 2.660989761352539E-003 seconds
Time Version 2
!
maximum time = 4.506111145019531E-005 seconds
!
maximum time = 4.410743713378906E-005 seconds
!
maximum time = 3.600120544433594E-005 seconds
Time Version 3
!
maximum time = 4.816055297851562E-005 seconds
!
maximum time = 4.506111145019531E-005 seconds
!
maximum time = 3.695487976074219E-005 seconds

n=3500
The value of n used was n =

3500

Script4
Time Version 1
!
maximum time = 3.099441528320312E-004 seconds
!
maximum time = 3.769397735595703E-004 seconds
!
maximum time = 3.559589385986328E-004 seconds
Time Version 2
!
maximum time = 3.004074096679688E-005 seconds
!
maximum time = 2.598762512207031E-005 seconds
!
maximum time = 2.694129943847656E-005 seconds
Time Version 3
!
maximum time = 1.597404479980469E-005 seconds
!
maximum time = 1.597404479980469E-005 seconds
!
maximum time = 1.597404479980469E-005 seconds
Script8
Time Version 1
!
maximum time = 5.900859832763672E-004 seconds
!
maximum time = 5.769729614257812E-004 seconds
!
maximum time = 6.070137023925781E-004 seconds
Time Version 2
!
maximum time = 3.290176391601563E-005 seconds
!
maximum time = 3.099441528320312E-005 seconds
!
maximum time = 3.218650817871094E-005 seconds
Time Version 3
!
maximum time = 2.789497375488281E-005 seconds
!
maximum time = 2.193450927734375E-005 seconds
!
maximum time = 2.503395080566406E-005 seconds

Script16
Time Version 1
!
maximum time = 1.244068145751953E-003 seconds
!
maximum time = 1.285076141357422E-003 seconds
!
maximum time = 1.221895217895508E-003 seconds
Time Version 2
!
maximum time = 3.600120544433594E-005 seconds
!
maximum time = 4.100799560546875E-005 seconds
!
maximum time = 3.385543823242188E-005 seconds
Time Version 3
!
maximum time = 3.504753112792969E-005 seconds
!
maximum time = 3.814697265625000E-005 seconds
!
maximum time = 3.004074096679688E-005 seconds
Script32
Time Version 1
!
maximum time = 2.503156661987305E-003 seconds
!
maximum time = 2.544879913330078E-003 seconds
!
maximum time = 2.637147903442383E-003 seconds
Time Version 2
!
maximum time = 4.506111145019531E-005 seconds
!
maximum time = 4.816055297851562E-005 seconds
!
maximum time = 4.196166992187500E-005 seconds
Time Version 3
!
maximum time = 4.315376281738281E-005 seconds
!
maximum time = 3.790855407714844E-005 seconds
!
maximum time = 3.910064697265625E-005 seconds
1.
2. The fastest version was the send_recv_replace

You might also like