Use new TRIL/TRIU in GS build to improve performance.

stopcriterion
Salvatore Filippone 8 years ago
parent 57f79b5126
commit 47cd4f0995

@ -80,8 +80,7 @@ subroutine mld_c_bwgs_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
! This cuts out the off-diagonal part, because it's supposed to ! This cuts out the off-diagonal part, because it's supposed to
! be handled by the outer Jacobi smoother. ! be handled by the outer Jacobi smoother.
! !
call a%tril(sv%l,info,diag=-1) call a%tril(sv%l,info,diag=-1,jmax=nrow_a,u=sv%u)
call a%triu(sv%u,info,jmax=nrow_a)
else else

@ -72,16 +72,13 @@ subroutine mld_c_gs_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
nrow_a = a%get_nrows() nrow_a = a%get_nrows()
nztota = a%get_nzeros() nztota = a%get_nzeros()
!!$ if (present(b)) then
!!$ nztota = nztota + b%get_nzeros()
!!$ end if
if (sv%eps <= dzero) then if (sv%eps <= dzero) then
! !
! This cuts out the off-diagonal part, because it's supposed to ! This cuts out the off-diagonal part, because it's supposed to
! be handled by the outer Jacobi smoother. ! be handled by the outer Jacobi smoother.
! !
call a%tril(sv%l,info) call a%tril(sv%l,info,diag=0,jmax=nrow_a,u=sv%u)
call a%triu(sv%u,info,diag=1,jmax=nrow_a)
else else

@ -80,8 +80,7 @@ subroutine mld_d_bwgs_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
! This cuts out the off-diagonal part, because it's supposed to ! This cuts out the off-diagonal part, because it's supposed to
! be handled by the outer Jacobi smoother. ! be handled by the outer Jacobi smoother.
! !
call a%tril(sv%l,info,diag=-1) call a%tril(sv%l,info,diag=-1,jmax=nrow_a,u=sv%u)
call a%triu(sv%u,info,jmax=nrow_a)
else else

@ -72,16 +72,13 @@ subroutine mld_d_gs_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
nrow_a = a%get_nrows() nrow_a = a%get_nrows()
nztota = a%get_nzeros() nztota = a%get_nzeros()
!!$ if (present(b)) then
!!$ nztota = nztota + b%get_nzeros()
!!$ end if
if (sv%eps <= dzero) then if (sv%eps <= dzero) then
! !
! This cuts out the off-diagonal part, because it's supposed to ! This cuts out the off-diagonal part, because it's supposed to
! be handled by the outer Jacobi smoother. ! be handled by the outer Jacobi smoother.
! !
call a%tril(sv%l,info) call a%tril(sv%l,info,diag=0,jmax=nrow_a,u=sv%u)
call a%triu(sv%u,info,diag=1,jmax=nrow_a)
else else

@ -80,8 +80,7 @@ subroutine mld_s_bwgs_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
! This cuts out the off-diagonal part, because it's supposed to ! This cuts out the off-diagonal part, because it's supposed to
! be handled by the outer Jacobi smoother. ! be handled by the outer Jacobi smoother.
! !
call a%tril(sv%l,info,diag=-1) call a%tril(sv%l,info,diag=-1,jmax=nrow_a,u=sv%u)
call a%triu(sv%u,info,jmax=nrow_a)
else else

@ -72,16 +72,13 @@ subroutine mld_s_gs_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
nrow_a = a%get_nrows() nrow_a = a%get_nrows()
nztota = a%get_nzeros() nztota = a%get_nzeros()
!!$ if (present(b)) then
!!$ nztota = nztota + b%get_nzeros()
!!$ end if
if (sv%eps <= dzero) then if (sv%eps <= dzero) then
! !
! This cuts out the off-diagonal part, because it's supposed to ! This cuts out the off-diagonal part, because it's supposed to
! be handled by the outer Jacobi smoother. ! be handled by the outer Jacobi smoother.
! !
call a%tril(sv%l,info) call a%tril(sv%l,info,diag=0,jmax=nrow_a,u=sv%u)
call a%triu(sv%u,info,diag=1,jmax=nrow_a)
else else

@ -80,8 +80,7 @@ subroutine mld_z_bwgs_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
! This cuts out the off-diagonal part, because it's supposed to ! This cuts out the off-diagonal part, because it's supposed to
! be handled by the outer Jacobi smoother. ! be handled by the outer Jacobi smoother.
! !
call a%tril(sv%l,info,diag=-1) call a%tril(sv%l,info,diag=-1,jmax=nrow_a,u=sv%u)
call a%triu(sv%u,info,jmax=nrow_a)
else else

@ -72,16 +72,13 @@ subroutine mld_z_gs_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
nrow_a = a%get_nrows() nrow_a = a%get_nrows()
nztota = a%get_nzeros() nztota = a%get_nzeros()
!!$ if (present(b)) then
!!$ nztota = nztota + b%get_nzeros()
!!$ end if
if (sv%eps <= dzero) then if (sv%eps <= dzero) then
! !
! This cuts out the off-diagonal part, because it's supposed to ! This cuts out the off-diagonal part, because it's supposed to
! be handled by the outer Jacobi smoother. ! be handled by the outer Jacobi smoother.
! !
call a%tril(sv%l,info) call a%tril(sv%l,info,diag=0,jmax=nrow_a,u=sv%u)
call a%triu(sv%u,info,diag=1,jmax=nrow_a)
else else

Loading…
Cancel
Save