Skip to content
Snippets Groups Projects
Commit 06f6c096 authored by Dave Whipp's avatar Dave Whipp
Browse files

Modified MPI calls to use sendrecv rather than separate sends and receives

parent 12de153f
No related branches found
No related tags found
No related merge requests found
......@@ -227,17 +227,26 @@ solution=1.d31
if (iproc.eq.0) solution(1:n_iproc)=b(:,1)
do iip=1,nproc-1
if (iproc==iip) then
call mpi_send (n_iproc_st,1,mpi_integer,0,tag,mpi_comm_world,ierr)
call mpi_send (n_iproc_end,1,mpi_integer,0,tag,mpi_comm_world,ierr)
call mpi_send (n_iproc,1,mpi_integer,0,tag,mpi_comm_world,ierr)
call mpi_send (b(:,1),n_iproc,mpi_double_precision,0,tag,mpi_comm_world,ierr)
elseif (iproc==0) then
call mpi_recv (ist,1,mpi_integer,iip,tag,mpi_comm_world,statut,ierr)
call mpi_recv (iend,1,mpi_integer,iip,tag,mpi_comm_world,statut,ierr)
call mpi_recv (iwidth,1,mpi_integer,iip,tag,mpi_comm_world,statut,ierr)
call mpi_recv (solution(ist:iend),iwidth,mpi_double_precision,iip,tag,mpi_comm_world,statut,ierr)
end if
call mpi_sendrecv(n_iproc_st,1,mpi_integer,0,tag,ist,1,mpi_integer,iip,tag,&
mpi_comm_world,statut,ierr)
call mpi_sendrecv(n_iproc_end,1,mpi_integer,0,tag,iend,1,mpi_integer,iip,tag,&
mpi_comm_world,statut,ierr)
call mpi_sendrecv(n_iproc,1,mpi_integer,0,tag,iwidth,1,mpi_integer,iip,tag,&
mpi_comm_world,statut,ierr)
call mpi_sendrecv(b(:,1),n_iproc,mpi_double_precision,0,tag,&
solution(ist:iend),iwidth,mpi_double_precision,iip,tag,mpi_comm_world,&
statut,ierr)
! if (iproc==iip) then
! call mpi_send (n_iproc_st,1,mpi_integer,0,tag,mpi_comm_world,ierr)
! call mpi_send (n_iproc_end,1,mpi_integer,0,tag,mpi_comm_world,ierr)
! call mpi_send (n_iproc,1,mpi_integer,0,tag,mpi_comm_world,ierr)
! call mpi_send (b(:,1),n_iproc,mpi_double_precision,0,tag,mpi_comm_world,ierr)
! elseif (iproc==0) then
! call mpi_recv (ist,1,mpi_integer,iip,tag,mpi_comm_world,statut,ierr)
! call mpi_recv (iend,1,mpi_integer,iip,tag,mpi_comm_world,statut,ierr)
! call mpi_recv (iwidth,1,mpi_integer,iip,tag,mpi_comm_world,statut,ierr)
! call mpi_recv (solution(ist:iend),iwidth,mpi_double_precision,iip,tag,mpi_comm_world,statut,ierr)
! end if
end do
call mpi_bcast (solution,n,mpi_double_precision,0,mpi_comm_world,ierr)
......
......@@ -253,17 +253,26 @@ solution=1.d31
if (iproc.eq.0) solution(1:n_iproc)=b(:,1)
do iip=1,nproc-1
if (iproc==iip) then
call mpi_send (n_iproc_st,1,mpi_integer,0,tag,mpi_comm_world,ierr)
call mpi_send (n_iproc_end,1,mpi_integer,0,tag,mpi_comm_world,ierr)
call mpi_send (n_iproc,1,mpi_integer,0,tag,mpi_comm_world,ierr)
call mpi_send (b(:,1),n_iproc,mpi_double_precision,0,tag,mpi_comm_world,ierr)
elseif (iproc==0) then
call mpi_recv (ist,1,mpi_integer,iip,tag,mpi_comm_world,statut,ierr)
call mpi_recv (iend,1,mpi_integer,iip,tag,mpi_comm_world,statut,ierr)
call mpi_recv (iwidth,1,mpi_integer,iip,tag,mpi_comm_world,statut,ierr)
call mpi_recv (solution(ist:iend),iwidth,mpi_double_precision,iip,tag,mpi_comm_world,statut,ierr)
end if
call mpi_sendrecv(n_iproc_st,1,mpi_integer,0,tag,ist,1,mpi_integer,iip,tag,&
mpi_comm_world,statut,ierr)
call mpi_sendrecv(n_iproc_end,1,mpi_integer,0,tag,iend,1,mpi_integer,iip,tag,&
mpi_comm_world,statut,ierr)
call mpi_sendrecv(n_iproc,1,mpi_integer,0,tag,iwidth,1,mpi_integer,iip,tag,&
mpi_comm_world,statut,ierr)
call mpi_sendrecv(b(:,1),n_iproc,mpi_double_precision,0,tag,&
solution(ist:iend),iwidth,mpi_double_precision,iip,tag,mpi_comm_world,&
statut,ierr)
! if (iproc==iip) then
! call mpi_send (n_iproc_st,1,mpi_integer,0,tag,mpi_comm_world,ierr)
! call mpi_send (n_iproc_end,1,mpi_integer,0,tag,mpi_comm_world,ierr)
! call mpi_send (n_iproc,1,mpi_integer,0,tag,mpi_comm_world,ierr)
! call mpi_send (b(:,1),n_iproc,mpi_double_precision,0,tag,mpi_comm_world,ierr)
! elseif (iproc==0) then
! call mpi_recv (ist,1,mpi_integer,iip,tag,mpi_comm_world,statut,ierr)
! call mpi_recv (iend,1,mpi_integer,iip,tag,mpi_comm_world,statut,ierr)
! call mpi_recv (iwidth,1,mpi_integer,iip,tag,mpi_comm_world,statut,ierr)
! call mpi_recv (solution(ist:iend),iwidth,mpi_double_precision,iip,tag,mpi_comm_world,statut,ierr)
! end if
end do
call mpi_bcast (solution,n,mpi_double_precision,0,mpi_comm_world,ierr)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment