base/serial/impl/psb_d_coo_impl.f90
 base/tools/psb_cdins.f90
 base/tools/psb_dspins.f90

Experiments for perfomance in matrix build
psblas-testmv
Salvatore Filippone 11 years ago
parent d5129cf77b
commit 82ab631ff9

@ -2676,10 +2676,10 @@ contains
implicit none implicit none
integer(psb_ipk_), intent(in) :: nz, imin,imax,jmin,jmax,maxsz integer(psb_ipk_), intent(in) :: nz, imin,imax,jmin,jmax,maxsz
integer(psb_ipk_), intent(in) :: ia(:),ja(:) integer(psb_ipk_), intent(in) :: ia(*),ja(*)
integer(psb_ipk_), intent(inout) :: nza,ia1(:),ia2(:) integer(psb_ipk_), intent(inout) :: nza,ia1(*),ia2(*)
real(psb_dpk_), intent(in) :: val(:) real(psb_dpk_), intent(in) :: val(*)
real(psb_dpk_), intent(inout) :: aspk(:) real(psb_dpk_), intent(inout) :: aspk(*)
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_), intent(in), optional :: gtl(:) integer(psb_ipk_), intent(in), optional :: gtl(:)
integer(psb_ipk_) :: i,ir,ic,ng integer(psb_ipk_) :: i,ir,ic,ng
@ -2696,10 +2696,10 @@ contains
ic = gtl(ic) ic = gtl(ic)
if ((ir >=imin).and.(ir<=imax).and.(ic>=jmin).and.(ic<=jmax)) then if ((ir >=imin).and.(ir<=imax).and.(ic>=jmin).and.(ic<=jmax)) then
nza = nza + 1 nza = nza + 1
if (nza > maxsz) then !!$ if (nza > maxsz) then
info = -91 !!$ info = -91
return !!$ return
endif !!$ endif
ia1(nza) = ir ia1(nza) = ir
ia2(nza) = ic ia2(nza) = ic
aspk(nza) = val(i) aspk(nza) = val(i)
@ -2713,10 +2713,10 @@ contains
ic = ja(i) ic = ja(i)
if ((ir >=imin).and.(ir<=imax).and.(ic>=jmin).and.(ic<=jmax)) then if ((ir >=imin).and.(ir<=imax).and.(ic>=jmin).and.(ic<=jmax)) then
nza = nza + 1 nza = nza + 1
if (nza > maxsz) then !!$ if (nza > maxsz) then
info = -92 !!$ info = -92
return !!$ return
endif !!$ endif
ia1(nza) = ir ia1(nza) = ir
ia2(nza) = ic ia2(nza) = ic
aspk(nza) = val(i) aspk(nza) = val(i)

@ -246,15 +246,15 @@ subroutine psb_cdinsc(nz,ja,desc,info,jla,mask,lidx)
call psb_errpush(info,name) call psb_errpush(info,name)
goto 9999 goto 9999
end if end if
mask_ => mask !!$ mask_ => mask
else !!$ else
allocate(mask__(nz)) !!$ allocate(mask__(nz))
mask_ => mask__ !!$ mask_ => mask__
mask_ = .true. !!$ mask_ = .true.
end if end if
if (present(jla)) then if (present(jla)) then
call psi_idx_ins_cnv(nz,ja,jla,desc,info,mask=mask_,lidx=lidx) call psi_idx_ins_cnv(nz,ja,jla,desc,info,mask=mask,lidx=lidx)
else else
allocate(jla_(nz),stat=info) allocate(jla_(nz),stat=info)
if (info /= psb_success_) then if (info /= psb_success_) then
@ -262,7 +262,7 @@ subroutine psb_cdinsc(nz,ja,desc,info,jla,mask,lidx)
call psb_errpush(info,name) call psb_errpush(info,name)
goto 9999 goto 9999
end if end if
call psi_idx_ins_cnv(nz,ja,jla_,desc,info,mask=mask_,lidx=lidx) call psi_idx_ins_cnv(nz,ja,jla_,desc,info,mask=mask,lidx=lidx)
deallocate(jla_) deallocate(jla_)
end if end if

@ -178,10 +178,8 @@ subroutine psb_dspins(nz,ia,ja,val,a,desc_a,info,rebuild,local)
goto 9999 goto 9999
end if end if
ila(1:nz) = ia(1:nz) call psb_glob_to_loc(ia(1:nz),ila(1:nz),desc_a,info,iact='I')
jla(1:nz) = ja(1:nz) call psb_glob_to_loc(ja(1:nz),jla(1:nz),desc_a,info,iact='I')
call psb_glob_to_loc(ila(1:nz),desc_a,info,iact='I')
call psb_glob_to_loc(jla(1:nz),desc_a,info,iact='I')
call a%csput(nz,ila,jla,val,ione,nrow,ione,ncol,info) call a%csput(nz,ila,jla,val,ione,nrow,ione,ncol,info)
if (info /= psb_success_) then if (info /= psb_success_) then

Loading…
Cancel
Save