|
|
@ -63,7 +63,7 @@ function psb_cdot(x, y,desc_a, info, jx, jy)
|
|
|
|
|
|
|
|
|
|
|
|
! locals
|
|
|
|
! locals
|
|
|
|
integer :: ictxt, np, me, idx, ndm,&
|
|
|
|
integer :: ictxt, np, me, idx, ndm,&
|
|
|
|
& err_act, iix, jjx, ix, ijx, iy, ijy, iiy, jjy, i, m
|
|
|
|
& err_act, iix, jjx, ix, ijx, iy, ijy, iiy, jjy, i, m, nr
|
|
|
|
complex(psb_spk_) :: dot_local
|
|
|
|
complex(psb_spk_) :: dot_local
|
|
|
|
complex(psb_spk_) :: cdotc
|
|
|
|
complex(psb_spk_) :: cdotc
|
|
|
|
character(len=20) :: name, ch_err
|
|
|
|
character(len=20) :: name, ch_err
|
|
|
@ -121,9 +121,9 @@ function psb_cdot(x, y,desc_a, info, jx, jy)
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
if(m /= 0) then
|
|
|
|
if(m /= 0) then
|
|
|
|
if(psb_cd_get_local_rows(desc_a) > 0) then
|
|
|
|
nr = psb_cd_get_local_rows(desc_a)
|
|
|
|
dot_local = cdotc(psb_cd_get_local_rows(desc_a),&
|
|
|
|
if(nr > 0) then
|
|
|
|
& x(iix:,jjx),ione,y(iiy:,jjy),ione)
|
|
|
|
dot_local = cdotc(nr, x(iix:,jjx),ione,y(iiy:,jjy),ione)
|
|
|
|
! adjust dot_local because overlapped elements are computed more than once
|
|
|
|
! adjust dot_local because overlapped elements are computed more than once
|
|
|
|
do i=1,size(desc_a%ovrlap_elem,1)
|
|
|
|
do i=1,size(desc_a%ovrlap_elem,1)
|
|
|
|
idx = desc_a%ovrlap_elem(i,1)
|
|
|
|
idx = desc_a%ovrlap_elem(i,1)
|
|
|
@ -215,7 +215,7 @@ function psb_cdotv(x, y,desc_a, info)
|
|
|
|
|
|
|
|
|
|
|
|
! locals
|
|
|
|
! locals
|
|
|
|
integer :: ictxt, np, me, idx, ndm,&
|
|
|
|
integer :: ictxt, np, me, idx, ndm,&
|
|
|
|
& err_act, iix, jjx, ix, jx, iy, jy, iiy, jjy, i, m
|
|
|
|
& err_act, iix, jjx, ix, jx, iy, jy, iiy, jjy, i, m, nr
|
|
|
|
complex(psb_spk_) :: dot_local
|
|
|
|
complex(psb_spk_) :: dot_local
|
|
|
|
complex(psb_spk_) :: cdotc
|
|
|
|
complex(psb_spk_) :: cdotc
|
|
|
|
character(len=20) :: name, ch_err
|
|
|
|
character(len=20) :: name, ch_err
|
|
|
@ -258,9 +258,9 @@ function psb_cdotv(x, y,desc_a, info)
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
if(m /= 0) then
|
|
|
|
if(m /= 0) then
|
|
|
|
if(psb_cd_get_local_rows(desc_a) > 0) then
|
|
|
|
nr = psb_cd_get_local_rows(desc_a)
|
|
|
|
dot_local = cdotc(psb_cd_get_local_rows(desc_a),&
|
|
|
|
if(nr > 0) then
|
|
|
|
& x,ione,y,ione)
|
|
|
|
dot_local = cdotc(nr, x,ione,y,ione)
|
|
|
|
! adjust dot_local because overlapped elements are computed more than once
|
|
|
|
! adjust dot_local because overlapped elements are computed more than once
|
|
|
|
do i=1,size(desc_a%ovrlap_elem,1)
|
|
|
|
do i=1,size(desc_a%ovrlap_elem,1)
|
|
|
|
idx = desc_a%ovrlap_elem(i,1)
|
|
|
|
idx = desc_a%ovrlap_elem(i,1)
|
|
|
@ -352,7 +352,7 @@ subroutine psb_cdotvs(res, x, y,desc_a, info)
|
|
|
|
|
|
|
|
|
|
|
|
! locals
|
|
|
|
! locals
|
|
|
|
integer :: ictxt, np, me, idx, ndm,&
|
|
|
|
integer :: ictxt, np, me, idx, ndm,&
|
|
|
|
& err_act, iix, jjx, ix, iy, iiy, jjy, i, m
|
|
|
|
& err_act, iix, jjx, ix, iy, iiy, jjy, i, m,nr
|
|
|
|
complex(psb_spk_) :: dot_local
|
|
|
|
complex(psb_spk_) :: dot_local
|
|
|
|
complex(psb_spk_) :: cdotc
|
|
|
|
complex(psb_spk_) :: cdotc
|
|
|
|
character(len=20) :: name, ch_err
|
|
|
|
character(len=20) :: name, ch_err
|
|
|
@ -392,9 +392,9 @@ subroutine psb_cdotvs(res, x, y,desc_a, info)
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
if(m /= 0) then
|
|
|
|
if(m /= 0) then
|
|
|
|
if(psb_cd_get_local_rows(desc_a) > 0) then
|
|
|
|
nr = psb_cd_get_local_rows(desc_a)
|
|
|
|
dot_local = cdotc(psb_cd_get_local_rows(desc_a),&
|
|
|
|
if(nr > 0) then
|
|
|
|
& x,ione,y,ione)
|
|
|
|
dot_local = cdotc(nr, x,ione,y,ione)
|
|
|
|
! adjust dot_local because overlapped elements are computed more than once
|
|
|
|
! adjust dot_local because overlapped elements are computed more than once
|
|
|
|
do i=1,size(desc_a%ovrlap_elem,1)
|
|
|
|
do i=1,size(desc_a%ovrlap_elem,1)
|
|
|
|
idx = desc_a%ovrlap_elem(i,1)
|
|
|
|
idx = desc_a%ovrlap_elem(i,1)
|
|
|
@ -487,7 +487,7 @@ subroutine psb_cmdots(res, x, y, desc_a, info)
|
|
|
|
|
|
|
|
|
|
|
|
! locals
|
|
|
|
! locals
|
|
|
|
integer :: ictxt, np, me, idx, ndm,&
|
|
|
|
integer :: ictxt, np, me, idx, ndm,&
|
|
|
|
& err_act, iix, jjx, ix, iy, iiy, jjy, i, m, j, k
|
|
|
|
& err_act, iix, jjx, ix, iy, iiy, jjy, i, m, j, k, nr
|
|
|
|
complex(psb_spk_),allocatable :: dot_local(:)
|
|
|
|
complex(psb_spk_),allocatable :: dot_local(:)
|
|
|
|
complex(psb_spk_) :: cdotc
|
|
|
|
complex(psb_spk_) :: cdotc
|
|
|
|
character(len=20) :: name, ch_err
|
|
|
|
character(len=20) :: name, ch_err
|
|
|
@ -537,10 +537,10 @@ subroutine psb_cmdots(res, x, y, desc_a, info)
|
|
|
|
allocate(dot_local(k))
|
|
|
|
allocate(dot_local(k))
|
|
|
|
|
|
|
|
|
|
|
|
if(m /= 0) then
|
|
|
|
if(m /= 0) then
|
|
|
|
if(psb_cd_get_local_rows(desc_a) > 0) then
|
|
|
|
nr = psb_cd_get_local_rows(desc_a)
|
|
|
|
|
|
|
|
if(nr > 0) then
|
|
|
|
do j=1,k
|
|
|
|
do j=1,k
|
|
|
|
dot_local(j) = cdotc(psb_cd_get_local_rows(desc_a),&
|
|
|
|
dot_local(j) = cdotc(nr, x(1:,j),ione,y(1:,j),ione)
|
|
|
|
& x(1:,j),ione,y(1:,j),ione)
|
|
|
|
|
|
|
|
! adjust dot_local because overlapped elements are computed more than once
|
|
|
|
! adjust dot_local because overlapped elements are computed more than once
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
do i=1,size(desc_a%ovrlap_elem,1)
|
|
|
|
do i=1,size(desc_a%ovrlap_elem,1)
|
|
|
|