From 01de021908559e1afdc7e71477f42afea5b27f5e Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Tue, 1 Nov 2016 10:06:40 +0000 Subject: [PATCH] mld2p4; mlprec/impl/level/mld_c_base_onelev_descr.f90 mlprec/impl/level/mld_d_base_onelev_descr.f90 mlprec/impl/level/mld_s_base_onelev_descr.f90 mlprec/impl/level/mld_z_base_onelev_descr.f90 mlprec/impl/mld_c_hierarchy_bld.f90 mlprec/impl/mld_d_hierarchy_bld.f90 mlprec/impl/mld_s_hierarchy_bld.f90 mlprec/impl/mld_z_hierarchy_bld.f90 mlprec/mld_c_onelev_mod.f90 mlprec/mld_c_prec_type.f90 mlprec/mld_d_onelev_mod.f90 mlprec/mld_d_prec_type.f90 mlprec/mld_s_onelev_mod.f90 mlprec/mld_s_prec_type.f90 mlprec/mld_z_onelev_mod.f90 mlprec/mld_z_prec_type.f90 Fix aggregation ratio logs. --- mlprec/impl/level/mld_c_base_onelev_descr.f90 | 2 ++ mlprec/impl/level/mld_d_base_onelev_descr.f90 | 2 ++ mlprec/impl/level/mld_s_base_onelev_descr.f90 | 2 ++ mlprec/impl/level/mld_z_base_onelev_descr.f90 | 2 ++ mlprec/impl/mld_c_hierarchy_bld.f90 | 10 ++++++++-- mlprec/impl/mld_d_hierarchy_bld.f90 | 10 ++++++++-- mlprec/impl/mld_s_hierarchy_bld.f90 | 10 ++++++++-- mlprec/impl/mld_z_hierarchy_bld.f90 | 10 ++++++++-- mlprec/mld_c_onelev_mod.f90 | 2 ++ mlprec/mld_c_prec_type.f90 | 2 +- mlprec/mld_d_onelev_mod.f90 | 2 ++ mlprec/mld_d_prec_type.f90 | 2 +- mlprec/mld_s_onelev_mod.f90 | 2 ++ mlprec/mld_s_prec_type.f90 | 2 +- mlprec/mld_z_onelev_mod.f90 | 2 ++ mlprec/mld_z_prec_type.f90 | 2 +- 16 files changed, 52 insertions(+), 12 deletions(-) diff --git a/mlprec/impl/level/mld_c_base_onelev_descr.f90 b/mlprec/impl/level/mld_c_base_onelev_descr.f90 index 1899e140..4df24e5d 100644 --- a/mlprec/impl/level/mld_c_base_onelev_descr.f90 +++ b/mlprec/impl/level/mld_c_base_onelev_descr.f90 @@ -86,6 +86,8 @@ subroutine mld_c_base_onelev_descr(lv,il,nl,ilmin,info,iout) & sum(lv%map%naggr(:)),' Nonzeros: ',lv%ac_nz_tot write(iout_,*) ' Sizes of aggregates: ', & & lv%map%naggr(:) + write(iout_,*) ' Aggregation ratio: ', & + & lv%szratio end if end if diff --git a/mlprec/impl/level/mld_d_base_onelev_descr.f90 b/mlprec/impl/level/mld_d_base_onelev_descr.f90 index cb17588d..b5a50569 100644 --- a/mlprec/impl/level/mld_d_base_onelev_descr.f90 +++ b/mlprec/impl/level/mld_d_base_onelev_descr.f90 @@ -86,6 +86,8 @@ subroutine mld_d_base_onelev_descr(lv,il,nl,ilmin,info,iout) & sum(lv%map%naggr(:)),' Nonzeros: ',lv%ac_nz_tot write(iout_,*) ' Sizes of aggregates: ', & & lv%map%naggr(:) + write(iout_,*) ' Aggregation ratio: ', & + & lv%szratio end if end if diff --git a/mlprec/impl/level/mld_s_base_onelev_descr.f90 b/mlprec/impl/level/mld_s_base_onelev_descr.f90 index 9ac47f13..a6275767 100644 --- a/mlprec/impl/level/mld_s_base_onelev_descr.f90 +++ b/mlprec/impl/level/mld_s_base_onelev_descr.f90 @@ -86,6 +86,8 @@ subroutine mld_s_base_onelev_descr(lv,il,nl,ilmin,info,iout) & sum(lv%map%naggr(:)),' Nonzeros: ',lv%ac_nz_tot write(iout_,*) ' Sizes of aggregates: ', & & lv%map%naggr(:) + write(iout_,*) ' Aggregation ratio: ', & + & lv%szratio end if end if diff --git a/mlprec/impl/level/mld_z_base_onelev_descr.f90 b/mlprec/impl/level/mld_z_base_onelev_descr.f90 index 0954ecd6..0b27a1db 100644 --- a/mlprec/impl/level/mld_z_base_onelev_descr.f90 +++ b/mlprec/impl/level/mld_z_base_onelev_descr.f90 @@ -86,6 +86,8 @@ subroutine mld_z_base_onelev_descr(lv,il,nl,ilmin,info,iout) & sum(lv%map%naggr(:)),' Nonzeros: ',lv%ac_nz_tot write(iout_,*) ' Sizes of aggregates: ', & & lv%map%naggr(:) + write(iout_,*) ' Aggregation ratio: ', & + & lv%szratio end if end if diff --git a/mlprec/impl/mld_c_hierarchy_bld.f90 b/mlprec/impl/mld_c_hierarchy_bld.f90 index 532454fc..00219b23 100644 --- a/mlprec/impl/mld_c_hierarchy_bld.f90 +++ b/mlprec/impl/mld_c_hierarchy_bld.f90 @@ -311,9 +311,15 @@ subroutine mld_c_hierarchy_bld(a,desc_a,p,info) newsz = i end if - if (i>2) then - sizeratio = iaggsize + sizeratio = iaggsize + if (i==2) then + sizeratio = desc_a%get_global_rows()/sizeratio + else sizeratio = sum(p%precv(i-1)%map%naggr)/sizeratio + end if + p%precv(i)%szratio = sizeratio + + if (i>2) then if (sizeratio < mnaggratio) then if (sizeratio > 1) then newsz = i diff --git a/mlprec/impl/mld_d_hierarchy_bld.f90 b/mlprec/impl/mld_d_hierarchy_bld.f90 index 7701c9a1..f2290180 100644 --- a/mlprec/impl/mld_d_hierarchy_bld.f90 +++ b/mlprec/impl/mld_d_hierarchy_bld.f90 @@ -311,9 +311,15 @@ subroutine mld_d_hierarchy_bld(a,desc_a,p,info) newsz = i end if - if (i>2) then - sizeratio = iaggsize + sizeratio = iaggsize + if (i==2) then + sizeratio = desc_a%get_global_rows()/sizeratio + else sizeratio = sum(p%precv(i-1)%map%naggr)/sizeratio + end if + p%precv(i)%szratio = sizeratio + + if (i>2) then if (sizeratio < mnaggratio) then if (sizeratio > 1) then newsz = i diff --git a/mlprec/impl/mld_s_hierarchy_bld.f90 b/mlprec/impl/mld_s_hierarchy_bld.f90 index d703bbb4..b23b281d 100644 --- a/mlprec/impl/mld_s_hierarchy_bld.f90 +++ b/mlprec/impl/mld_s_hierarchy_bld.f90 @@ -311,9 +311,15 @@ subroutine mld_s_hierarchy_bld(a,desc_a,p,info) newsz = i end if - if (i>2) then - sizeratio = iaggsize + sizeratio = iaggsize + if (i==2) then + sizeratio = desc_a%get_global_rows()/sizeratio + else sizeratio = sum(p%precv(i-1)%map%naggr)/sizeratio + end if + p%precv(i)%szratio = sizeratio + + if (i>2) then if (sizeratio < mnaggratio) then if (sizeratio > 1) then newsz = i diff --git a/mlprec/impl/mld_z_hierarchy_bld.f90 b/mlprec/impl/mld_z_hierarchy_bld.f90 index 2d8fda64..c3ac7f86 100644 --- a/mlprec/impl/mld_z_hierarchy_bld.f90 +++ b/mlprec/impl/mld_z_hierarchy_bld.f90 @@ -311,9 +311,15 @@ subroutine mld_z_hierarchy_bld(a,desc_a,p,info) newsz = i end if - if (i>2) then - sizeratio = iaggsize + sizeratio = iaggsize + if (i==2) then + sizeratio = desc_a%get_global_rows()/sizeratio + else sizeratio = sum(p%precv(i-1)%map%naggr)/sizeratio + end if + p%precv(i)%szratio = sizeratio + + if (i>2) then if (sizeratio < mnaggratio) then if (sizeratio > 1) then newsz = i diff --git a/mlprec/mld_c_onelev_mod.f90 b/mlprec/mld_c_onelev_mod.f90 index 26959820..078657e1 100644 --- a/mlprec/mld_c_onelev_mod.f90 +++ b/mlprec/mld_c_onelev_mod.f90 @@ -130,6 +130,7 @@ module mld_c_onelev_mod type(psb_cspmat_type), pointer :: base_a => null() type(psb_desc_type), pointer :: base_desc => null() type(psb_clinmap_type) :: map + real(psb_spk_) :: szratio contains procedure, pass(lv) :: bld => mld_c_base_onelev_build procedure, pass(lv) :: clone => c_base_onelev_clone @@ -505,6 +506,7 @@ contains call b%free(info) b%parms = lv%parms + b%szratio = lv%szratio if (associated(lv%sm2,lv%sm2a)) then call move_alloc(lv%sm,b%sm) call move_alloc(lv%sm2a,b%sm2a) diff --git a/mlprec/mld_c_prec_type.f90 b/mlprec/mld_c_prec_type.f90 index 1148e783..28cd4298 100644 --- a/mlprec/mld_c_prec_type.f90 +++ b/mlprec/mld_c_prec_type.f90 @@ -500,7 +500,7 @@ contains ! Print description of base preconditioner ! if (nlev > 1) then - write(iout_,*) 'Multilevel Schwarz' + write(iout_,*) 'Multilevel Preconditioner' write(iout_,*) 'Outer sweeps:',p%outer_sweeps write(iout_,*) write(iout_,*) 'Base preconditioner (smoother) details' diff --git a/mlprec/mld_d_onelev_mod.f90 b/mlprec/mld_d_onelev_mod.f90 index bbc6f8a4..caceed28 100644 --- a/mlprec/mld_d_onelev_mod.f90 +++ b/mlprec/mld_d_onelev_mod.f90 @@ -130,6 +130,7 @@ module mld_d_onelev_mod type(psb_dspmat_type), pointer :: base_a => null() type(psb_desc_type), pointer :: base_desc => null() type(psb_dlinmap_type) :: map + real(psb_dpk_) :: szratio contains procedure, pass(lv) :: bld => mld_d_base_onelev_build procedure, pass(lv) :: clone => d_base_onelev_clone @@ -505,6 +506,7 @@ contains call b%free(info) b%parms = lv%parms + b%szratio = lv%szratio if (associated(lv%sm2,lv%sm2a)) then call move_alloc(lv%sm,b%sm) call move_alloc(lv%sm2a,b%sm2a) diff --git a/mlprec/mld_d_prec_type.f90 b/mlprec/mld_d_prec_type.f90 index 00505e83..4b9b8b5e 100644 --- a/mlprec/mld_d_prec_type.f90 +++ b/mlprec/mld_d_prec_type.f90 @@ -500,7 +500,7 @@ contains ! Print description of base preconditioner ! if (nlev > 1) then - write(iout_,*) 'Multilevel Schwarz' + write(iout_,*) 'Multilevel Preconditioner' write(iout_,*) 'Outer sweeps:',p%outer_sweeps write(iout_,*) write(iout_,*) 'Base preconditioner (smoother) details' diff --git a/mlprec/mld_s_onelev_mod.f90 b/mlprec/mld_s_onelev_mod.f90 index 4cdc378b..1181e556 100644 --- a/mlprec/mld_s_onelev_mod.f90 +++ b/mlprec/mld_s_onelev_mod.f90 @@ -130,6 +130,7 @@ module mld_s_onelev_mod type(psb_sspmat_type), pointer :: base_a => null() type(psb_desc_type), pointer :: base_desc => null() type(psb_slinmap_type) :: map + real(psb_spk_) :: szratio contains procedure, pass(lv) :: bld => mld_s_base_onelev_build procedure, pass(lv) :: clone => s_base_onelev_clone @@ -505,6 +506,7 @@ contains call b%free(info) b%parms = lv%parms + b%szratio = lv%szratio if (associated(lv%sm2,lv%sm2a)) then call move_alloc(lv%sm,b%sm) call move_alloc(lv%sm2a,b%sm2a) diff --git a/mlprec/mld_s_prec_type.f90 b/mlprec/mld_s_prec_type.f90 index 692e2e9e..9b9874fa 100644 --- a/mlprec/mld_s_prec_type.f90 +++ b/mlprec/mld_s_prec_type.f90 @@ -500,7 +500,7 @@ contains ! Print description of base preconditioner ! if (nlev > 1) then - write(iout_,*) 'Multilevel Schwarz' + write(iout_,*) 'Multilevel Preconditioner' write(iout_,*) 'Outer sweeps:',p%outer_sweeps write(iout_,*) write(iout_,*) 'Base preconditioner (smoother) details' diff --git a/mlprec/mld_z_onelev_mod.f90 b/mlprec/mld_z_onelev_mod.f90 index 238afa08..d50cd398 100644 --- a/mlprec/mld_z_onelev_mod.f90 +++ b/mlprec/mld_z_onelev_mod.f90 @@ -130,6 +130,7 @@ module mld_z_onelev_mod type(psb_zspmat_type), pointer :: base_a => null() type(psb_desc_type), pointer :: base_desc => null() type(psb_zlinmap_type) :: map + real(psb_dpk_) :: szratio contains procedure, pass(lv) :: bld => mld_z_base_onelev_build procedure, pass(lv) :: clone => z_base_onelev_clone @@ -505,6 +506,7 @@ contains call b%free(info) b%parms = lv%parms + b%szratio = lv%szratio if (associated(lv%sm2,lv%sm2a)) then call move_alloc(lv%sm,b%sm) call move_alloc(lv%sm2a,b%sm2a) diff --git a/mlprec/mld_z_prec_type.f90 b/mlprec/mld_z_prec_type.f90 index d73d0a9b..168b0cea 100644 --- a/mlprec/mld_z_prec_type.f90 +++ b/mlprec/mld_z_prec_type.f90 @@ -500,7 +500,7 @@ contains ! Print description of base preconditioner ! if (nlev > 1) then - write(iout_,*) 'Multilevel Schwarz' + write(iout_,*) 'Multilevel Preconditioner' write(iout_,*) 'Outer sweeps:',p%outer_sweeps write(iout_,*) write(iout_,*) 'Base preconditioner (smoother) details'