psblas2-dev:

base/internals/psi_idx_ins_cnv.f90
	
Performance fix: make the fix foolproof with respect to initialization
of desc%
psblas3-type-indexed
Salvatore Filippone 17 years ago
parent a019113d24
commit 031ba57bb7

@ -214,7 +214,7 @@ subroutine psi_idx_ins_cnv2(nv,idxin,idxout,desc,info,mask)
integer :: i,ictxt,k,mglob, nglob integer :: i,ictxt,k,mglob, nglob
integer :: np, me, isize integer :: np, me, isize
integer :: pnt_halo,nrow,ncol, nh, ip, err_act,lip,nxt integer :: pnt_halo,nrow,ncol, nh, ip, err_act,lip,nxt
logical :: pnth_ok logical :: pnt_h_ok
integer, parameter :: relocsz=200 integer, parameter :: relocsz=200
character(len=20) :: name,ch_err character(len=20) :: name,ch_err
logical, pointer :: mask_(:) logical, pointer :: mask_(:)
@ -324,23 +324,31 @@ subroutine psi_idx_ins_cnv2(nv,idxin,idxout,desc,info,mask)
endif endif
pnt_halo = desc%matrix_data(psb_pnt_h_) pnt_halo = desc%matrix_data(psb_pnt_h_)
pnth_ok = .false. pnt_h_ok = .false.
if (desc%halo_index(pnt_halo) == -1 ) then isize = size(desc%halo_index)
if (pnt_halo == 1) then if ((1 <= pnt_halo).and.(pnt_halo <= isize)) then
pnth_ok = .true. if (desc%halo_index(pnt_halo) == -1 ) then
else if (desc%halo_index(pnt_halo-1) /= -1 ) then if (pnt_halo == 1) then
pnth_ok = .true. pnt_h_ok = .true.
else if (desc%halo_index(pnt_halo-1) /= -1 ) then
pnt_h_ok = .true.
end if
end if end if
end if end if
if (.not.pnth_ok) then if (.not.pnt_h_ok) then
pnt_halo = 1 pnt_halo = 1
do while (desc%halo_index(pnt_halo) /= -1 ) do
if (desc%halo_index(pnt_halo) == -1) exit
if (pnt_halo == isize) exit
pnt_halo = pnt_halo + 1 pnt_halo = pnt_halo + 1
end do end do
if (desc%halo_index(pnt_halo) /= -1) then
call psb_realloc(isize+relocsz,desc%halo_index,info,pad=-1)
pnt_halo = pnt_halo + 1
end if
end if end if
isize = size(desc%halo_index)
do i = 1, nv do i = 1, nv
if (mask_(i)) then if (mask_(i)) then

Loading…
Cancel
Save