|
|
@ -51,10 +51,11 @@ subroutine psb_dsp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keep
|
|
|
|
logical, intent(in), optional :: keepnum,keeploc
|
|
|
|
logical, intent(in), optional :: keepnum,keeploc
|
|
|
|
|
|
|
|
|
|
|
|
type(psb_d_coo_sparse_mat) :: loc_coo, glob_coo
|
|
|
|
type(psb_d_coo_sparse_mat) :: loc_coo, glob_coo
|
|
|
|
integer(psb_mpik_) :: ictxt,np,me, icomm, minfo
|
|
|
|
integer(psb_ipk_) :: ictxt,np,me
|
|
|
|
integer(psb_ipk_) :: err_act, dupl_, nrg, ncg, nzg
|
|
|
|
integer(psb_ipk_) :: err_act, dupl_, nrg, ncg, nzg
|
|
|
|
integer(psb_ipk_) :: ip, ndx,naggrm1,naggrp1, i, j, k, nzl
|
|
|
|
integer(psb_ipk_) :: ip,naggrm1,naggrp1, i, j, k, nzl
|
|
|
|
logical :: keepnum_, keeploc_
|
|
|
|
logical :: keepnum_, keeploc_
|
|
|
|
|
|
|
|
integer(psb_mpik_) :: icomm, minfo, ndx
|
|
|
|
integer(psb_mpik_), allocatable :: nzbr(:), idisp(:)
|
|
|
|
integer(psb_mpik_), allocatable :: nzbr(:), idisp(:)
|
|
|
|
integer(psb_ipk_) :: ierr(5)
|
|
|
|
integer(psb_ipk_) :: ierr(5)
|
|
|
|
character(len=20) :: name
|
|
|
|
character(len=20) :: name
|
|
|
@ -112,13 +113,15 @@ subroutine psb_dsp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keep
|
|
|
|
idisp(ip) = sum(nzbr(1:ip-1))
|
|
|
|
idisp(ip) = sum(nzbr(1:ip-1))
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
ndx = nzbr(me+1)
|
|
|
|
ndx = nzbr(me+1)
|
|
|
|
call mpi_allgatherv(loc_coo%val,ndx,psb_mpi_r_dpk_,&
|
|
|
|
call mpi_allgatherv(loc_coo%val,ndx,mpi_double_precision,&
|
|
|
|
& glob_coo%val,nzbr,idisp,&
|
|
|
|
& glob_coo%val,nzbr,idisp,&
|
|
|
|
& psb_mpi_r_dpk_,icomm,minfo)
|
|
|
|
& mpi_double_precision,icomm,minfo)
|
|
|
|
if (minfo == psb_success_) call mpi_allgatherv(loc_coo%ia,ndx,psb_mpi_ipk_integer,&
|
|
|
|
if (minfo == psb_success_) call &
|
|
|
|
|
|
|
|
& mpi_allgatherv(loc_coo%ia,ndx,psb_mpi_ipk_integer,&
|
|
|
|
& glob_coo%ia,nzbr,idisp,&
|
|
|
|
& glob_coo%ia,nzbr,idisp,&
|
|
|
|
& psb_mpi_ipk_integer,icomm,minfo)
|
|
|
|
& psb_mpi_ipk_integer,icomm,minfo)
|
|
|
|
if (minfo == psb_success_) call mpi_allgatherv(loc_coo%ja,ndx,psb_mpi_ipk_integer,&
|
|
|
|
if (minfo == psb_success_) call &
|
|
|
|
|
|
|
|
& mpi_allgatherv(loc_coo%ja,ndx,psb_mpi_ipk_integer,&
|
|
|
|
& glob_coo%ja,nzbr,idisp,&
|
|
|
|
& glob_coo%ja,nzbr,idisp,&
|
|
|
|
& psb_mpi_ipk_integer,icomm,minfo)
|
|
|
|
& psb_mpi_ipk_integer,icomm,minfo)
|
|
|
|
|
|
|
|
|
|
|
@ -135,6 +138,8 @@ subroutine psb_dsp_allgather(globa, loca, desc_a, info, root, dupl,keepnum,keep
|
|
|
|
|
|
|
|
|
|
|
|
else
|
|
|
|
else
|
|
|
|
write(psb_err_unit,*) 'SP_ALLGATHER: Not implemented yet with keepnum ',keepnum_
|
|
|
|
write(psb_err_unit,*) 'SP_ALLGATHER: Not implemented yet with keepnum ',keepnum_
|
|
|
|
|
|
|
|
info = -1
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|