Fix collective implementation bugs

maint-3.7.1
Salvatore Filippone 3 years ago
parent a5c3956cb0
commit 7064777e2e

@ -97,7 +97,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -165,7 +164,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -193,33 +191,21 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_sum,icomm,info) & psb_mpi_c_spk_,mpi_sum,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_sum,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_sum,root_,icomm,info) & psb_mpi_c_spk_,mpi_sum,root_,icomm,info)
end if end if
end if
else else
if (collective_start) then if (collective_start) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_sum,icomm,request,info) & psb_mpi_c_spk_,mpi_sum,icomm,request,info)
else
if (iam == root_) then
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_sum,root_,icomm,request,info)
else else
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),& call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_sum,root_,icomm,request,info) & psb_mpi_c_spk_,mpi_sum,root_,icomm,request,info)
end if end if
end if
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)
endif endif
@ -246,7 +232,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -275,32 +260,20 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_sum,icomm,info) & psb_mpi_c_spk_,mpi_sum,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_sum,root_,icomm,info) & psb_mpi_c_spk_,mpi_sum,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_sum,root_,icomm,info)
end if
end if end if
else else
if (collective_start) then if (collective_start) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_sum,icomm,request,info) & psb_mpi_c_spk_,mpi_sum,icomm,request,info)
else else
if (iam == root_) then
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),& call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_sum,root_, icomm,request,info) & psb_mpi_c_spk_,mpi_sum,root_, icomm,request,info)
else
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_sum,root_,icomm,request,info)
end if
end if end if
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)
@ -330,7 +303,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -399,7 +371,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -427,17 +398,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),& psb_mpi_c_spk_,mpi_camx_op,icomm,info)
& psb_mpi_c_spk_,mpi_camx_op,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_camx_op,root_,icomm,info) & psb_mpi_c_spk_,mpi_camx_op,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_camx_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -474,7 +439,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -503,17 +467,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_camx_op,icomm,info) & psb_mpi_c_spk_,mpi_camx_op,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_camx_op,root_,icomm,info) & psb_mpi_c_spk_,mpi_camx_op,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_camx_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -551,7 +509,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -620,7 +577,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -648,17 +604,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_camn_op,icomm,info) & psb_mpi_c_spk_,mpi_camn_op,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_camn_op,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_camn_op,root_,icomm,info) & psb_mpi_c_spk_,mpi_camn_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -695,7 +645,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -724,17 +673,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_camn_op,icomm,info) & psb_mpi_c_spk_,mpi_camn_op,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_camn_op,root_,icomm,info) & psb_mpi_c_spk_,mpi_camn_op,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_camn_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -773,7 +716,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
@ -830,7 +772,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -887,7 +828,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1025,7 +965,7 @@ contains
& psb_mpi_c_spk_,mpi_sum,icomm,minfo) & psb_mpi_c_spk_,mpi_sum,icomm,minfo)
else else
if (collective_start) then if (collective_start) then
call mpi_exscan(MPI_IN_PLACE,dat,1,& call mpi_iexscan(MPI_IN_PLACE,dat,1,&
& psb_mpi_c_spk_,mpi_sum,icomm,request,minfo) & psb_mpi_c_spk_,mpi_sum,icomm,request,minfo)
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,minfo) call mpi_wait(request,status,minfo)
@ -1077,7 +1017,7 @@ contains
& psb_mpi_c_spk_,mpi_sum,icomm,minfo) & psb_mpi_c_spk_,mpi_sum,icomm,minfo)
else else
if (collective_start) then if (collective_start) then
call mpi_scan(MPI_IN_PLACE,dat,size(dat),& call mpi_iscan(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_spk_,mpi_sum,icomm,request,info) & psb_mpi_c_spk_,mpi_sum,icomm,request,info)
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)

@ -109,7 +109,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -175,7 +174,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
@ -204,17 +202,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_max,icomm,info) & psb_mpi_r_dpk_,mpi_max,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_max,root_,icomm,info) & psb_mpi_r_dpk_,mpi_max,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_max,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -251,7 +243,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
@ -281,17 +272,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_max,icomm,info) & psb_mpi_r_dpk_,mpi_max,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_max,root_,icomm,info) & psb_mpi_r_dpk_,mpi_max,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_max,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -330,7 +315,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -397,7 +381,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -425,17 +408,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_min,icomm,info) & psb_mpi_r_dpk_,mpi_min,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_min,root_,icomm,info) & psb_mpi_r_dpk_,mpi_min,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_min,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -472,7 +449,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -501,18 +477,12 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_min,icomm,info) & psb_mpi_r_dpk_,mpi_min,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_min,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_min,root_,icomm,info) & psb_mpi_r_dpk_,mpi_min,root_,icomm,info)
end if end if
end if
else else
if (collective_start) then if (collective_start) then
if (root_ == -1) then if (root_ == -1) then
@ -552,7 +522,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -621,7 +590,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -649,17 +617,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),psb_mpi_r_dpk_,&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),psb_mpi_r_dpk_,&
& mpi_dnrm2_op,icomm,info) & mpi_dnrm2_op,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),psb_mpi_r_dpk_,&
& mpi_dnrm2_op,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),psb_mpi_r_dpk_,& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),psb_mpi_r_dpk_,&
& mpi_dnrm2_op,root_,icomm,info) & mpi_dnrm2_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -700,7 +662,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -768,7 +729,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -796,32 +756,20 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_sum,icomm,info) & psb_mpi_r_dpk_,mpi_sum,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_sum,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_sum,root_,icomm,info) & psb_mpi_r_dpk_,mpi_sum,root_,icomm,info)
end if end if
end if
else else
if (collective_start) then if (collective_start) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_sum,icomm,request,info) & psb_mpi_r_dpk_,mpi_sum,icomm,request,info)
else else
if (iam == root_) then
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),& call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_sum,root_,icomm,request,info) & psb_mpi_r_dpk_,mpi_sum,root_,icomm,request,info)
else
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_sum,root_,icomm,request,info)
end if
end if end if
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)
@ -849,7 +797,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -878,32 +825,20 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_sum,icomm,info) & psb_mpi_r_dpk_,mpi_sum,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_sum,root_,icomm,info) & psb_mpi_r_dpk_,mpi_sum,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_sum,root_,icomm,info)
end if
end if end if
else else
if (collective_start) then if (collective_start) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_sum,icomm,request,info) & psb_mpi_r_dpk_,mpi_sum,icomm,request,info)
else else
if (iam == root_) then
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),& call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_sum,root_, icomm,request,info) & psb_mpi_r_dpk_,mpi_sum,root_, icomm,request,info)
else
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_sum,root_,icomm,request,info)
end if
end if end if
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)
@ -933,7 +868,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1002,7 +936,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1030,17 +963,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),& psb_mpi_r_dpk_,mpi_damx_op,icomm,info)
& psb_mpi_r_dpk_,mpi_damx_op,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_damx_op,root_,icomm,info) & psb_mpi_r_dpk_,mpi_damx_op,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_damx_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -1077,7 +1004,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1106,17 +1032,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_damx_op,icomm,info) & psb_mpi_r_dpk_,mpi_damx_op,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_damx_op,root_,icomm,info) & psb_mpi_r_dpk_,mpi_damx_op,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_damx_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -1154,7 +1074,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1223,7 +1142,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1251,17 +1169,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_damn_op,icomm,info) & psb_mpi_r_dpk_,mpi_damn_op,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_damn_op,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_damn_op,root_,icomm,info) & psb_mpi_r_dpk_,mpi_damn_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -1298,7 +1210,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1327,17 +1238,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_damn_op,icomm,info) & psb_mpi_r_dpk_,mpi_damn_op,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_damn_op,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_damn_op,root_,icomm,info) & psb_mpi_r_dpk_,mpi_damn_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -1376,7 +1281,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
@ -1433,7 +1337,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1490,7 +1393,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1628,7 +1530,7 @@ contains
& psb_mpi_r_dpk_,mpi_sum,icomm,minfo) & psb_mpi_r_dpk_,mpi_sum,icomm,minfo)
else else
if (collective_start) then if (collective_start) then
call mpi_exscan(MPI_IN_PLACE,dat,1,& call mpi_iexscan(MPI_IN_PLACE,dat,1,&
& psb_mpi_r_dpk_,mpi_sum,icomm,request,minfo) & psb_mpi_r_dpk_,mpi_sum,icomm,request,minfo)
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,minfo) call mpi_wait(request,status,minfo)
@ -1680,7 +1582,7 @@ contains
& psb_mpi_r_dpk_,mpi_sum,icomm,minfo) & psb_mpi_r_dpk_,mpi_sum,icomm,minfo)
else else
if (collective_start) then if (collective_start) then
call mpi_scan(MPI_IN_PLACE,dat,size(dat),& call mpi_iscan(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_dpk_,mpi_sum,icomm,request,info) & psb_mpi_r_dpk_,mpi_sum,icomm,request,info)
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)

@ -106,7 +106,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -172,7 +171,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
@ -201,17 +199,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_max,icomm,info) & psb_mpi_epk_,mpi_max,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_max,root_,icomm,info) & psb_mpi_epk_,mpi_max,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_max,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -248,7 +240,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
@ -278,17 +269,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_max,icomm,info) & psb_mpi_epk_,mpi_max,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_max,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_max,root_,icomm,info) & psb_mpi_epk_,mpi_max,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -327,7 +312,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -394,7 +378,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -422,17 +405,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_min,icomm,info) & psb_mpi_epk_,mpi_min,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_min,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_min,root_,icomm,info) & psb_mpi_epk_,mpi_min,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -469,7 +446,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -498,17 +474,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_min,icomm,info) & psb_mpi_epk_,mpi_min,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_min,root_,icomm,info) & psb_mpi_epk_,mpi_min,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_min,root_,icomm,info)
end if
end if end if
else else
if (collective_start) then if (collective_start) then
@ -549,7 +519,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -617,7 +586,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -645,33 +613,21 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_sum,icomm,info) & psb_mpi_epk_,mpi_sum,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_sum,root_,icomm,info) & psb_mpi_epk_,mpi_sum,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_sum,root_,icomm,info)
end if
end if end if
else else
if (collective_start) then if (collective_start) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_sum,icomm,request,info) & psb_mpi_epk_,mpi_sum,icomm,request,info)
else
if (iam == root_) then
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_sum,root_,icomm,request,info)
else else
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),& call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_sum,root_,icomm,request,info) & psb_mpi_epk_,mpi_sum,root_,icomm,request,info)
end if end if
end if
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)
endif endif
@ -698,7 +654,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -727,32 +682,20 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_sum,icomm,info) & psb_mpi_epk_,mpi_sum,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_sum,root_,icomm,info) & psb_mpi_epk_,mpi_sum,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_sum,root_,icomm,info)
end if
end if end if
else else
if (collective_start) then if (collective_start) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_sum,icomm,request,info) & psb_mpi_epk_,mpi_sum,icomm,request,info)
else else
if (iam == root_) then
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),& call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_sum,root_, icomm,request,info) & psb_mpi_epk_,mpi_sum,root_, icomm,request,info)
else
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_sum,root_,icomm,request,info)
end if
end if end if
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)
@ -782,7 +725,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -851,7 +793,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -879,17 +820,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),& psb_mpi_epk_,mpi_eamx_op,icomm,info)
& psb_mpi_epk_,mpi_eamx_op,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_eamx_op,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_eamx_op,root_,icomm,info) & psb_mpi_epk_,mpi_eamx_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -926,7 +861,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -955,17 +889,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_eamx_op,icomm,info) & psb_mpi_epk_,mpi_eamx_op,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_eamx_op,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_eamx_op,root_,icomm,info) & psb_mpi_epk_,mpi_eamx_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -1003,7 +931,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1072,7 +999,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1100,17 +1026,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_eamn_op,icomm,info) & psb_mpi_epk_,mpi_eamn_op,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_eamn_op,root_,icomm,info) & psb_mpi_epk_,mpi_eamn_op,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_eamn_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -1147,7 +1067,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1176,17 +1095,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_eamn_op,icomm,info) & psb_mpi_epk_,mpi_eamn_op,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_eamn_op,root_,icomm,info) & psb_mpi_epk_,mpi_eamn_op,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_eamn_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -1225,7 +1138,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
@ -1282,7 +1194,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1339,7 +1250,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1477,7 +1387,7 @@ contains
& psb_mpi_epk_,mpi_sum,icomm,minfo) & psb_mpi_epk_,mpi_sum,icomm,minfo)
else else
if (collective_start) then if (collective_start) then
call mpi_exscan(MPI_IN_PLACE,dat,1,& call mpi_iexscan(MPI_IN_PLACE,dat,1,&
& psb_mpi_epk_,mpi_sum,icomm,request,minfo) & psb_mpi_epk_,mpi_sum,icomm,request,minfo)
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,minfo) call mpi_wait(request,status,minfo)
@ -1529,7 +1439,7 @@ contains
& psb_mpi_epk_,mpi_sum,icomm,minfo) & psb_mpi_epk_,mpi_sum,icomm,minfo)
else else
if (collective_start) then if (collective_start) then
call mpi_scan(MPI_IN_PLACE,dat,size(dat),& call mpi_iscan(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_epk_,mpi_sum,icomm,request,info) & psb_mpi_epk_,mpi_sum,icomm,request,info)
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)

@ -106,7 +106,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -172,7 +171,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
@ -201,17 +199,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_max,icomm,info) & psb_mpi_i2pk_,mpi_max,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_max,root_,icomm,info) & psb_mpi_i2pk_,mpi_max,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_max,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -248,7 +240,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
@ -278,17 +269,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_max,icomm,info) & psb_mpi_i2pk_,mpi_max,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_max,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_max,root_,icomm,info) & psb_mpi_i2pk_,mpi_max,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -327,7 +312,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -394,7 +378,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -422,17 +405,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_min,icomm,info) & psb_mpi_i2pk_,mpi_min,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_min,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_min,root_,icomm,info) & psb_mpi_i2pk_,mpi_min,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -469,7 +446,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -498,17 +474,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_min,icomm,info) & psb_mpi_i2pk_,mpi_min,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_min,root_,icomm,info) & psb_mpi_i2pk_,mpi_min,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_min,root_,icomm,info)
end if
end if end if
else else
if (collective_start) then if (collective_start) then
@ -549,7 +519,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -617,7 +586,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -645,33 +613,21 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_sum,icomm,info) & psb_mpi_i2pk_,mpi_sum,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_sum,root_,icomm,info) & psb_mpi_i2pk_,mpi_sum,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_sum,root_,icomm,info)
end if
end if end if
else else
if (collective_start) then if (collective_start) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_sum,icomm,request,info) & psb_mpi_i2pk_,mpi_sum,icomm,request,info)
else
if (iam == root_) then
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_sum,root_,icomm,request,info)
else else
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),& call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_sum,root_,icomm,request,info) & psb_mpi_i2pk_,mpi_sum,root_,icomm,request,info)
end if end if
end if
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)
endif endif
@ -698,7 +654,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -727,32 +682,20 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_sum,icomm,info) & psb_mpi_i2pk_,mpi_sum,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_sum,root_,icomm,info) & psb_mpi_i2pk_,mpi_sum,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_sum,root_,icomm,info)
end if
end if end if
else else
if (collective_start) then if (collective_start) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_sum,icomm,request,info) & psb_mpi_i2pk_,mpi_sum,icomm,request,info)
else else
if (iam == root_) then
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),& call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_sum,root_, icomm,request,info) & psb_mpi_i2pk_,mpi_sum,root_, icomm,request,info)
else
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_sum,root_,icomm,request,info)
end if
end if end if
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)
@ -782,7 +725,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -851,7 +793,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -879,17 +820,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),& psb_mpi_i2pk_,mpi_i2amx_op,icomm,info)
& psb_mpi_i2pk_,mpi_i2amx_op,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_i2amx_op,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_i2amx_op,root_,icomm,info) & psb_mpi_i2pk_,mpi_i2amx_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -926,7 +861,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -955,17 +889,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_i2amx_op,icomm,info) & psb_mpi_i2pk_,mpi_i2amx_op,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_i2amx_op,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_i2amx_op,root_,icomm,info) & psb_mpi_i2pk_,mpi_i2amx_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -1003,7 +931,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1072,7 +999,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1100,17 +1026,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_i2amn_op,icomm,info) & psb_mpi_i2pk_,mpi_i2amn_op,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_i2amn_op,root_,icomm,info) & psb_mpi_i2pk_,mpi_i2amn_op,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_i2amn_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -1147,7 +1067,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1176,17 +1095,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_i2amn_op,icomm,info) & psb_mpi_i2pk_,mpi_i2amn_op,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_i2amn_op,root_,icomm,info) & psb_mpi_i2pk_,mpi_i2amn_op,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_i2amn_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -1225,7 +1138,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
@ -1282,7 +1194,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1339,7 +1250,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1477,7 +1387,7 @@ contains
& psb_mpi_i2pk_,mpi_sum,icomm,minfo) & psb_mpi_i2pk_,mpi_sum,icomm,minfo)
else else
if (collective_start) then if (collective_start) then
call mpi_exscan(MPI_IN_PLACE,dat,1,& call mpi_iexscan(MPI_IN_PLACE,dat,1,&
& psb_mpi_i2pk_,mpi_sum,icomm,request,minfo) & psb_mpi_i2pk_,mpi_sum,icomm,request,minfo)
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,minfo) call mpi_wait(request,status,minfo)
@ -1529,7 +1439,7 @@ contains
& psb_mpi_i2pk_,mpi_sum,icomm,minfo) & psb_mpi_i2pk_,mpi_sum,icomm,minfo)
else else
if (collective_start) then if (collective_start) then
call mpi_scan(MPI_IN_PLACE,dat,size(dat),& call mpi_iscan(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_i2pk_,mpi_sum,icomm,request,info) & psb_mpi_i2pk_,mpi_sum,icomm,request,info)
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)

@ -106,7 +106,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -172,7 +171,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
@ -201,17 +199,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_max,icomm,info) & psb_mpi_mpk_,mpi_max,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_max,root_,icomm,info) & psb_mpi_mpk_,mpi_max,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_max,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -248,7 +240,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
@ -278,17 +269,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_max,icomm,info) & psb_mpi_mpk_,mpi_max,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_max,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_max,root_,icomm,info) & psb_mpi_mpk_,mpi_max,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -327,7 +312,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -394,7 +378,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -422,17 +405,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_min,icomm,info) & psb_mpi_mpk_,mpi_min,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_min,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_min,root_,icomm,info) & psb_mpi_mpk_,mpi_min,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -469,7 +446,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -498,17 +474,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_min,icomm,info) & psb_mpi_mpk_,mpi_min,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_min,root_,icomm,info) & psb_mpi_mpk_,mpi_min,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_min,root_,icomm,info)
end if
end if end if
else else
if (collective_start) then if (collective_start) then
@ -549,7 +519,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -617,7 +586,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -645,33 +613,21 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_sum,icomm,info) & psb_mpi_mpk_,mpi_sum,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_sum,root_,icomm,info) & psb_mpi_mpk_,mpi_sum,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_sum,root_,icomm,info)
end if
end if end if
else else
if (collective_start) then if (collective_start) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_sum,icomm,request,info) & psb_mpi_mpk_,mpi_sum,icomm,request,info)
else
if (iam == root_) then
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_sum,root_,icomm,request,info)
else else
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),& call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_sum,root_,icomm,request,info) & psb_mpi_mpk_,mpi_sum,root_,icomm,request,info)
end if end if
end if
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)
endif endif
@ -698,7 +654,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -727,32 +682,20 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_sum,icomm,info) & psb_mpi_mpk_,mpi_sum,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_sum,root_,icomm,info) & psb_mpi_mpk_,mpi_sum,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_sum,root_,icomm,info)
end if
end if end if
else else
if (collective_start) then if (collective_start) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_sum,icomm,request,info) & psb_mpi_mpk_,mpi_sum,icomm,request,info)
else else
if (iam == root_) then
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),& call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_sum,root_, icomm,request,info) & psb_mpi_mpk_,mpi_sum,root_, icomm,request,info)
else
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_sum,root_,icomm,request,info)
end if
end if end if
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)
@ -782,7 +725,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -851,7 +793,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -879,17 +820,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),& psb_mpi_mpk_,mpi_mamx_op,icomm,info)
& psb_mpi_mpk_,mpi_mamx_op,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_mamx_op,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_mamx_op,root_,icomm,info) & psb_mpi_mpk_,mpi_mamx_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -926,7 +861,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -955,17 +889,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_mamx_op,icomm,info) & psb_mpi_mpk_,mpi_mamx_op,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_mamx_op,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_mamx_op,root_,icomm,info) & psb_mpi_mpk_,mpi_mamx_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -1003,7 +931,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1072,7 +999,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1100,17 +1026,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_mamn_op,icomm,info) & psb_mpi_mpk_,mpi_mamn_op,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_mamn_op,root_,icomm,info) & psb_mpi_mpk_,mpi_mamn_op,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_mamn_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -1147,7 +1067,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1176,17 +1095,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_mamn_op,icomm,info) & psb_mpi_mpk_,mpi_mamn_op,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_mamn_op,root_,icomm,info) & psb_mpi_mpk_,mpi_mamn_op,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_mamn_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -1225,7 +1138,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
@ -1282,7 +1194,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1339,7 +1250,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1477,7 +1387,7 @@ contains
& psb_mpi_mpk_,mpi_sum,icomm,minfo) & psb_mpi_mpk_,mpi_sum,icomm,minfo)
else else
if (collective_start) then if (collective_start) then
call mpi_exscan(MPI_IN_PLACE,dat,1,& call mpi_iexscan(MPI_IN_PLACE,dat,1,&
& psb_mpi_mpk_,mpi_sum,icomm,request,minfo) & psb_mpi_mpk_,mpi_sum,icomm,request,minfo)
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,minfo) call mpi_wait(request,status,minfo)
@ -1529,7 +1439,7 @@ contains
& psb_mpi_mpk_,mpi_sum,icomm,minfo) & psb_mpi_mpk_,mpi_sum,icomm,minfo)
else else
if (collective_start) then if (collective_start) then
call mpi_scan(MPI_IN_PLACE,dat,size(dat),& call mpi_iscan(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_mpk_,mpi_sum,icomm,request,info) & psb_mpi_mpk_,mpi_sum,icomm,request,info)
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)

@ -109,7 +109,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -175,7 +174,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
@ -204,17 +202,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_max,icomm,info) & psb_mpi_r_spk_,mpi_max,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_max,root_,icomm,info) & psb_mpi_r_spk_,mpi_max,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_max,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -251,7 +243,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
@ -281,17 +272,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_max,icomm,info) & psb_mpi_r_spk_,mpi_max,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_max,root_,icomm,info) & psb_mpi_r_spk_,mpi_max,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_max,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -330,7 +315,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -397,7 +381,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -425,17 +408,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_min,icomm,info) & psb_mpi_r_spk_,mpi_min,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_min,root_,icomm,info) & psb_mpi_r_spk_,mpi_min,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_min,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -472,7 +449,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -501,18 +477,12 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_min,icomm,info) & psb_mpi_r_spk_,mpi_min,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_min,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_min,root_,icomm,info) & psb_mpi_r_spk_,mpi_min,root_,icomm,info)
end if end if
end if
else else
if (collective_start) then if (collective_start) then
if (root_ == -1) then if (root_ == -1) then
@ -552,7 +522,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -621,7 +590,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -649,17 +617,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),psb_mpi_r_spk_,&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),psb_mpi_r_spk_,&
& mpi_snrm2_op,icomm,info) & mpi_snrm2_op,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),psb_mpi_r_spk_,&
& mpi_snrm2_op,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),psb_mpi_r_spk_,& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),psb_mpi_r_spk_,&
& mpi_snrm2_op,root_,icomm,info) & mpi_snrm2_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -700,7 +662,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -768,7 +729,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -796,32 +756,20 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_sum,icomm,info) & psb_mpi_r_spk_,mpi_sum,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_sum,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_sum,root_,icomm,info) & psb_mpi_r_spk_,mpi_sum,root_,icomm,info)
end if end if
end if
else else
if (collective_start) then if (collective_start) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_sum,icomm,request,info) & psb_mpi_r_spk_,mpi_sum,icomm,request,info)
else else
if (iam == root_) then
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),& call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_sum,root_,icomm,request,info) & psb_mpi_r_spk_,mpi_sum,root_,icomm,request,info)
else
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_sum,root_,icomm,request,info)
end if
end if end if
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)
@ -849,7 +797,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -878,32 +825,20 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_sum,icomm,info) & psb_mpi_r_spk_,mpi_sum,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_sum,root_,icomm,info) & psb_mpi_r_spk_,mpi_sum,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_sum,root_,icomm,info)
end if
end if end if
else else
if (collective_start) then if (collective_start) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_sum,icomm,request,info) & psb_mpi_r_spk_,mpi_sum,icomm,request,info)
else else
if (iam == root_) then
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),& call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_sum,root_, icomm,request,info) & psb_mpi_r_spk_,mpi_sum,root_, icomm,request,info)
else
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_sum,root_,icomm,request,info)
end if
end if end if
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)
@ -933,7 +868,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1002,7 +936,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1030,17 +963,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),& psb_mpi_r_spk_,mpi_samx_op,icomm,info)
& psb_mpi_r_spk_,mpi_samx_op,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_samx_op,root_,icomm,info) & psb_mpi_r_spk_,mpi_samx_op,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_samx_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -1077,7 +1004,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1106,17 +1032,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_samx_op,icomm,info) & psb_mpi_r_spk_,mpi_samx_op,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_samx_op,root_,icomm,info) & psb_mpi_r_spk_,mpi_samx_op,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_samx_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -1154,7 +1074,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1223,7 +1142,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1251,17 +1169,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_samn_op,icomm,info) & psb_mpi_r_spk_,mpi_samn_op,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_samn_op,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_samn_op,root_,icomm,info) & psb_mpi_r_spk_,mpi_samn_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -1298,7 +1210,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1327,17 +1238,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_samn_op,icomm,info) & psb_mpi_r_spk_,mpi_samn_op,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_samn_op,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_samn_op,root_,icomm,info) & psb_mpi_r_spk_,mpi_samn_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -1376,7 +1281,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
@ -1433,7 +1337,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1490,7 +1393,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1628,7 +1530,7 @@ contains
& psb_mpi_r_spk_,mpi_sum,icomm,minfo) & psb_mpi_r_spk_,mpi_sum,icomm,minfo)
else else
if (collective_start) then if (collective_start) then
call mpi_exscan(MPI_IN_PLACE,dat,1,& call mpi_iexscan(MPI_IN_PLACE,dat,1,&
& psb_mpi_r_spk_,mpi_sum,icomm,request,minfo) & psb_mpi_r_spk_,mpi_sum,icomm,request,minfo)
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,minfo) call mpi_wait(request,status,minfo)
@ -1680,7 +1582,7 @@ contains
& psb_mpi_r_spk_,mpi_sum,icomm,minfo) & psb_mpi_r_spk_,mpi_sum,icomm,minfo)
else else
if (collective_start) then if (collective_start) then
call mpi_scan(MPI_IN_PLACE,dat,size(dat),& call mpi_iscan(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_r_spk_,mpi_sum,icomm,request,info) & psb_mpi_r_spk_,mpi_sum,icomm,request,info)
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)

@ -97,7 +97,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -165,7 +164,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -193,33 +191,21 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_sum,icomm,info) & psb_mpi_c_dpk_,mpi_sum,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_sum,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_sum,root_,icomm,info) & psb_mpi_c_dpk_,mpi_sum,root_,icomm,info)
end if end if
end if
else else
if (collective_start) then if (collective_start) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_sum,icomm,request,info) & psb_mpi_c_dpk_,mpi_sum,icomm,request,info)
else
if (iam == root_) then
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_sum,root_,icomm,request,info)
else else
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),& call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_sum,root_,icomm,request,info) & psb_mpi_c_dpk_,mpi_sum,root_,icomm,request,info)
end if end if
end if
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)
endif endif
@ -246,7 +232,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -275,32 +260,20 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_sum,icomm,info) & psb_mpi_c_dpk_,mpi_sum,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_sum,root_,icomm,info) & psb_mpi_c_dpk_,mpi_sum,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_sum,root_,icomm,info)
end if
end if end if
else else
if (collective_start) then if (collective_start) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_iallreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_sum,icomm,request,info) & psb_mpi_c_dpk_,mpi_sum,icomm,request,info)
else else
if (iam == root_) then
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),& call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_sum,root_, icomm,request,info) & psb_mpi_c_dpk_,mpi_sum,root_, icomm,request,info)
else
call mpi_ireduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_sum,root_,icomm,request,info)
end if
end if end if
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)
@ -330,7 +303,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -399,7 +371,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -427,17 +398,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),& psb_mpi_c_dpk_,mpi_zamx_op,icomm,info)
& psb_mpi_c_dpk_,mpi_zamx_op,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_zamx_op,root_,icomm,info) & psb_mpi_c_dpk_,mpi_zamx_op,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_zamx_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -474,7 +439,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -503,17 +467,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_zamx_op,icomm,info) & psb_mpi_c_dpk_,mpi_zamx_op,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_zamx_op,root_,icomm,info) & psb_mpi_c_dpk_,mpi_zamx_op,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_zamx_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -551,7 +509,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -620,7 +577,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -648,17 +604,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_) & call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_zamn_op,icomm,info) & psb_mpi_c_dpk_,mpi_zamn_op,icomm,info)
else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_zamn_op,root_,icomm,info)
else else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_zamn_op,root_,icomm,info) & psb_mpi_c_dpk_,mpi_zamn_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -695,7 +645,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -724,17 +673,11 @@ contains
end if end if
if (collective_sync) then if (collective_sync) then
if (root_ == -1) then if (root_ == -1) then
if (iinfo == psb_success_)& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& call mpi_allreduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_zamn_op,icomm,info) & psb_mpi_c_dpk_,mpi_zamn_op,icomm,info)
else else
if (iam == root_) then
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),& call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_zamn_op,root_,icomm,info) & psb_mpi_c_dpk_,mpi_zamn_op,root_,icomm,info)
else
call mpi_reduce(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_zamn_op,root_,icomm,info)
end if
endif endif
else else
if (collective_start) then if (collective_start) then
@ -773,7 +716,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
@ -830,7 +772,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -887,7 +828,6 @@ contains
integer(psb_mpk_) :: iam, np, info integer(psb_mpk_) :: iam, np, info
integer(psb_mpk_) :: icomm integer(psb_mpk_) :: icomm
integer(psb_mpk_) :: status(mpi_status_size) integer(psb_mpk_) :: status(mpi_status_size)
integer(psb_ipk_) :: iinfo
logical :: collective_start, collective_end, collective_sync logical :: collective_start, collective_end, collective_sync
#if !defined(SERIAL_MPI) #if !defined(SERIAL_MPI)
@ -1025,7 +965,7 @@ contains
& psb_mpi_c_dpk_,mpi_sum,icomm,minfo) & psb_mpi_c_dpk_,mpi_sum,icomm,minfo)
else else
if (collective_start) then if (collective_start) then
call mpi_exscan(MPI_IN_PLACE,dat,1,& call mpi_iexscan(MPI_IN_PLACE,dat,1,&
& psb_mpi_c_dpk_,mpi_sum,icomm,request,minfo) & psb_mpi_c_dpk_,mpi_sum,icomm,request,minfo)
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,minfo) call mpi_wait(request,status,minfo)
@ -1077,7 +1017,7 @@ contains
& psb_mpi_c_dpk_,mpi_sum,icomm,minfo) & psb_mpi_c_dpk_,mpi_sum,icomm,minfo)
else else
if (collective_start) then if (collective_start) then
call mpi_scan(MPI_IN_PLACE,dat,size(dat),& call mpi_iscan(MPI_IN_PLACE,dat,size(dat),&
& psb_mpi_c_dpk_,mpi_sum,icomm,request,info) & psb_mpi_c_dpk_,mpi_sum,icomm,request,info)
else if (collective_end) then else if (collective_end) then
call mpi_wait(request,status,info) call mpi_wait(request,status,info)

Loading…
Cancel
Save