Use less memory, check on symbmm

pull/28/head
sfilippone 10 months ago
parent 86a6ab413a
commit da3f16ba56

@ -4238,7 +4238,7 @@ subroutine psb_ccsrspspmm(a,b,c,info)
! Estimate number of nonzeros on output.
nza = a%get_nzeros()
nzb = b%get_nzeros()
nzc = max(nint(0.5*(nza+nzb)),ma,mb,na,nb)
nzc = max(nint(0.25*(nza+nzb)),ma,nb)
call c%allocate(ma,nb,nzc)
call csr_spspmm(a,b,c,info)
@ -4276,9 +4276,9 @@ contains
nze = min(size(c%val),size(c%ja))
isz = max(ma,na,mb,nb)
call psb_realloc(isz,row,info)
if (info == 0) call psb_realloc(isz,idxs,info)
if (info == 0) call psb_realloc(isz,irow,info)
call psb_realloc(nb,row,info)
if (info == 0) call psb_realloc(na,idxs,info)
if (info == 0) call psb_realloc(nb,irow,info)
if (info /= 0) return
row = dzero
irow = 0
@ -6613,7 +6613,7 @@ subroutine psb_lccsrspspmm(a,b,c,info)
nza = a%get_nzeros()
nzb = b%get_nzeros()
nzc = 2*(nza+nzb)
nzc = max(nint(0.25*(nza+nzb)),ma,nb)
call c%allocate(ma,nb,nzc)
call csr_spspmm(a,b,c,info)
@ -6651,9 +6651,9 @@ contains
nze = min(size(c%val),size(c%ja))
isz = max(ma,na,mb,nb)
call psb_realloc(isz,row,info)
if (info == 0) call psb_realloc(isz,idxs,info)
if (info == 0) call psb_realloc(isz,irow,info)
call psb_realloc(nb,row,info)
if (info == 0) call psb_realloc(na,idxs,info)
if (info == 0) call psb_realloc(nb,irow,info)
if (info /= 0) return
row = dzero
irow = 0

@ -4238,7 +4238,7 @@ subroutine psb_dcsrspspmm(a,b,c,info)
! Estimate number of nonzeros on output.
nza = a%get_nzeros()
nzb = b%get_nzeros()
nzc = max(nint(0.5*(nza+nzb)),ma,mb,na,nb)
nzc = max(nint(0.25*(nza+nzb)),ma,nb)
call c%allocate(ma,nb,nzc)
call csr_spspmm(a,b,c,info)
@ -4276,9 +4276,9 @@ contains
nze = min(size(c%val),size(c%ja))
isz = max(ma,na,mb,nb)
call psb_realloc(isz,row,info)
if (info == 0) call psb_realloc(isz,idxs,info)
if (info == 0) call psb_realloc(isz,irow,info)
call psb_realloc(nb,row,info)
if (info == 0) call psb_realloc(na,idxs,info)
if (info == 0) call psb_realloc(nb,irow,info)
if (info /= 0) return
row = dzero
irow = 0
@ -6613,7 +6613,7 @@ subroutine psb_ldcsrspspmm(a,b,c,info)
nza = a%get_nzeros()
nzb = b%get_nzeros()
nzc = 2*(nza+nzb)
nzc = max(nint(0.25*(nza+nzb)),ma,nb)
call c%allocate(ma,nb,nzc)
call csr_spspmm(a,b,c,info)
@ -6651,9 +6651,9 @@ contains
nze = min(size(c%val),size(c%ja))
isz = max(ma,na,mb,nb)
call psb_realloc(isz,row,info)
if (info == 0) call psb_realloc(isz,idxs,info)
if (info == 0) call psb_realloc(isz,irow,info)
call psb_realloc(nb,row,info)
if (info == 0) call psb_realloc(na,idxs,info)
if (info == 0) call psb_realloc(nb,irow,info)
if (info /= 0) return
row = dzero
irow = 0

@ -4238,7 +4238,7 @@ subroutine psb_scsrspspmm(a,b,c,info)
! Estimate number of nonzeros on output.
nza = a%get_nzeros()
nzb = b%get_nzeros()
nzc = max(nint(0.5*(nza+nzb)),ma,mb,na,nb)
nzc = max(nint(0.25*(nza+nzb)),ma,nb)
call c%allocate(ma,nb,nzc)
call csr_spspmm(a,b,c,info)
@ -4276,9 +4276,9 @@ contains
nze = min(size(c%val),size(c%ja))
isz = max(ma,na,mb,nb)
call psb_realloc(isz,row,info)
if (info == 0) call psb_realloc(isz,idxs,info)
if (info == 0) call psb_realloc(isz,irow,info)
call psb_realloc(nb,row,info)
if (info == 0) call psb_realloc(na,idxs,info)
if (info == 0) call psb_realloc(nb,irow,info)
if (info /= 0) return
row = dzero
irow = 0
@ -6613,7 +6613,7 @@ subroutine psb_lscsrspspmm(a,b,c,info)
nza = a%get_nzeros()
nzb = b%get_nzeros()
nzc = 2*(nza+nzb)
nzc = max(nint(0.25*(nza+nzb)),ma,nb)
call c%allocate(ma,nb,nzc)
call csr_spspmm(a,b,c,info)
@ -6651,9 +6651,9 @@ contains
nze = min(size(c%val),size(c%ja))
isz = max(ma,na,mb,nb)
call psb_realloc(isz,row,info)
if (info == 0) call psb_realloc(isz,idxs,info)
if (info == 0) call psb_realloc(isz,irow,info)
call psb_realloc(nb,row,info)
if (info == 0) call psb_realloc(na,idxs,info)
if (info == 0) call psb_realloc(nb,irow,info)
if (info /= 0) return
row = dzero
irow = 0

@ -4238,7 +4238,7 @@ subroutine psb_zcsrspspmm(a,b,c,info)
! Estimate number of nonzeros on output.
nza = a%get_nzeros()
nzb = b%get_nzeros()
nzc = max(nint(0.5*(nza+nzb)),ma,mb,na,nb)
nzc = max(nint(0.25*(nza+nzb)),ma,nb)
call c%allocate(ma,nb,nzc)
call csr_spspmm(a,b,c,info)
@ -4276,9 +4276,9 @@ contains
nze = min(size(c%val),size(c%ja))
isz = max(ma,na,mb,nb)
call psb_realloc(isz,row,info)
if (info == 0) call psb_realloc(isz,idxs,info)
if (info == 0) call psb_realloc(isz,irow,info)
call psb_realloc(nb,row,info)
if (info == 0) call psb_realloc(na,idxs,info)
if (info == 0) call psb_realloc(nb,irow,info)
if (info /= 0) return
row = dzero
irow = 0
@ -6613,7 +6613,7 @@ subroutine psb_lzcsrspspmm(a,b,c,info)
nza = a%get_nzeros()
nzb = b%get_nzeros()
nzc = 2*(nza+nzb)
nzc = max(nint(0.25*(nza+nzb)),ma,nb)
call c%allocate(ma,nb,nzc)
call csr_spspmm(a,b,c,info)
@ -6651,9 +6651,9 @@ contains
nze = min(size(c%val),size(c%ja))
isz = max(ma,na,mb,nb)
call psb_realloc(isz,row,info)
if (info == 0) call psb_realloc(isz,idxs,info)
if (info == 0) call psb_realloc(isz,irow,info)
call psb_realloc(nb,row,info)
if (info == 0) call psb_realloc(na,idxs,info)
if (info == 0) call psb_realloc(nb,irow,info)
if (info /= 0) return
row = dzero
irow = 0

@ -85,6 +85,7 @@ end subroutine psb_csymbmm
subroutine psb_cbase_symbmm(a,b,c,info)
use psb_mat_mod
use psb_sort_mod
use psb_serial_mod, only : symbmm
implicit none
class(psb_c_base_sparse_mat), intent(in) :: a,b

@ -85,6 +85,7 @@ end subroutine psb_dsymbmm
subroutine psb_dbase_symbmm(a,b,c,info)
use psb_mat_mod
use psb_sort_mod
use psb_serial_mod, only : symbmm
implicit none
class(psb_d_base_sparse_mat), intent(in) :: a,b

@ -85,6 +85,7 @@ end subroutine psb_ssymbmm
subroutine psb_sbase_symbmm(a,b,c,info)
use psb_mat_mod
use psb_sort_mod
use psb_serial_mod, only : symbmm
implicit none
class(psb_s_base_sparse_mat), intent(in) :: a,b

@ -85,6 +85,7 @@ end subroutine psb_zsymbmm
subroutine psb_zbase_symbmm(a,b,c,info)
use psb_mat_mod
use psb_sort_mod
use psb_serial_mod, only : symbmm
implicit none
class(psb_z_base_sparse_mat), intent(in) :: a,b

Loading…
Cancel
Save