: updated example and test programs and their input files; updated README

stopcriterion
Daniela di Serafino 8 years ago
parent b468335b4a
commit c6991a7507

@ -1,4 +1,4 @@
This directory contains the MLD2P4 set of preconditioners, version 2.1
This directory contains the MLD2P4 set of preconditioners, version 2.1
WHAT'S NEW
@ -56,18 +56,19 @@ In version 1.1:
- Note that we now need version 2.3.1 of PSBLAS.
To compile:
TO COMPILE
0. Unpack the tar file in a directory of your choice (preferrably
outside the main PSBLAS directory).
1. run configure --with-psblas=<ABSOLUTE path of the PSBLAS install directory>
adding the options for SuperLU, SuperLU_Dist, UMFPACK as desired.
See MLD2P4 User's and Reference Guide (Section 3) for details.
2. Tweak Make.inc if you are not satisfied.
3. make;
4. Go into the test subdirectory and build the examples of your choice.
Notes:
NOTES
- The single precision version is supported only by SuperLU; thus, even
if you specify at configure to use UMFPACK or SuperLU_Dist, the

@ -53,8 +53,8 @@
! sweeps (with ILU(0) on the blocks) as coarsest-level solver(Sec. 5.1, Fig. 3)
!
! - choice = 3, build a W-cycle preconditioner with 2 hybrid forward/backward
! GS sweeps as pre/post-smoother, a distributed coarsest
! matrix, and MUMPS as coarsest-level solver (Sec. 5.1, Fig. 4)
! GS sweeps as pre/post-smoother, a distributed coarsest matrix,
! and MUMPS as coarsest-level solver (Sec. 5.1, Fig. 4)
!
! The matrix and the rhs are read from files (if an rhs is not available, the
! unit rhs is set).
@ -237,7 +237,6 @@ program mld_dexample_ml
call P%init('ML',info)
call P%set('ML_CYCLE','WCYCLE',info)
call P%set('SMOOTHER_TYPE','FBGS',info)
call P%set('SMOOTHER_SWEEPS',2,info)
call P%set('COARSE_SOLVE','MUMPS',info)
call P%set('COARSE_MAT','DIST',info)

@ -1,6 +1,6 @@
mld_mat.mtx ! This matrix (and others) from: http://math.nist.gov/MatrixMarket/ or
mld_rhs.mtx ! rhs | http://www.cise.ufl.edu/research/sparse/matrices/index.html
MM ! File format: MM (Matrix Market) HB (Harwell-Boeing).
3 ! Preconditioner choice
1 ! Preconditioner choice
0100 ! ITMAX
1.d-6 ! EPS

@ -54,8 +54,8 @@
! sweeps (with ILU(0) on the blocks) as coarsest-level solver(Sec. 5.1, Fig. 3)
!
! - choice = 3, build a W-cycle preconditioner with 2 hybrid forward/backward
! GS sweeps as pre/post-smoother, a distributed coarsest
! matrix, and MUMPS as coarsest-level solver (Sec. 5.1, Fig. 4)
! GS sweeps as pre/post-smoother, a distributed coarsest matrix,
! and MUMPS as coarsest-level solver (Sec. 5.1, Fig. 4)
!
! The PDE is a general second order equation in 3d
!
@ -193,7 +193,6 @@ program mld_dexample_ml
call P%init('ML',info)
call P%set('ML_CYCLE','WCYCLE',info)
call P%set('SMOOTHER_TYPE','FBGS',info)
call P%set('SMOOTHER_SWEEPS',2,info)
call P%set('COARSE_SOLVE','MUMPS',info)
call P%set('COARSE_MAT','DIST',info)

@ -1,4 +1,4 @@
3 ! Preconditioner choice
1 ! Preconditioner choice
10 ! IDIM; domain size is idim**3
500 ! ITMAX
500 ! ITMAX
1.d-6 ! EPS

@ -84,9 +84,6 @@ program mld_df_sample
integer(psb_ipk_) :: thrvsz ! size of threshold vector
real(psb_dpk_) :: athres ! smoothed aggregation threshold
real(psb_dpk_) :: ascale ! smoothed aggregation scale factor for threshold
character(len=16) :: aggr_omalg ! algorithm for estimating omega parameter
character(len=16) :: aggr_eig ! Eigenvalue estimation procedure
real(psb_dpk_) :: omega_val ! Eigenvalue estimate value
integer(psb_ipk_) :: csize ! minimum size of coarsest matrix
! AMG smoother or pre-smoother; also 1-lev preconditioner
@ -392,12 +389,6 @@ program mld_df_sample
call prec%set('aggr_alg', p_choice%aggr_alg, info)
call prec%set('aggr_ord', p_choice%aggr_ord, info)
call prec%set('aggr_filter', p_choice%aggr_filter,info)
call prec%set('aggr_omega_alg', p_choice%aggr_omalg, info)
if (psb_toupper(p_choice%aggr_omalg) == 'EIG_EST') then
call prec%set('aggr_eig', p_choice%aggr_eig, info)
else if (psb_toupper(p_choice%aggr_omalg) == 'USER_CHOICE') then
call prec%set('aggr_omega_val', p_choice%omega_val, info)
end if
call prec%set('coarse_solve', p_choice%csolve, info)
if (psb_toupper(p_choice%csolve) == 'BJAC') &
& call prec%set('coarse_subsolve', p_choice%csbsolve, info)
@ -648,9 +639,6 @@ contains
read(psb_inp_unit,*) ! dummy read to skip a record
end if
call read_data(prec%athres,psb_inp_unit) ! smoothed aggr thresh
call read_data(prec%aggr_omalg,psb_inp_unit) ! alg for estimating omega
call read_data(prec%aggr_eig,psb_inp_unit) ! alg for estimating omega
call read_data(prec%omega_val,psb_inp_unit) ! alg for estimating omega
! AMG smoother (or pre-smoother) / 1-lev preconditioner
call read_data(prec%smther,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps,psb_inp_unit) ! (pre-)smoother / 1-lev prec sweeps
@ -734,9 +722,6 @@ contains
end if
call psb_bcast(ictxt,prec%athres)
call psb_bcast(ictxt,prec%ascale)
call psb_bcast(ictxt,prec%aggr_omalg)
call psb_bcast(ictxt,prec%aggr_eig)
call psb_bcast(ictxt,prec%omega_val)
call psb_bcast(icontxt,prec%csize)
call psb_bcast(icontxt,prec%cmat)

@ -1,19 +1,19 @@
mld_mat.mtx ! This matrix (and others) from: http://math.nist.gov/MatrixMarket/ or
mld_rhs.mtx ! rhs | http://www.cise.ufl.edu/research/sparse/matrices/index.html
mld_mat.mtx ! This matrix (and others) from: http://math.nist.gov/MatrixMarket/ or
mld_rhs.mtx ! rhs | http://www.cise.ufl.edu/research/sparse/matrices/index.html
NONE ! Initial guess
mld_sol.mtx ! Reference solution
mld_sol.mtx ! Reference solution
MM ! File format: MatrixMarket or Harwell-Boeing
CSR ! Storage format: CSR COO JAD
BLOCK ! PART (partition method): BLOCK GRAPH
FCG ! Iterative method: BiCGSTAB BiCG CGS RGMRES BiCGSTABL CG
CG ! Iterative method: BiCGSTAB BiCGSTABL BiCG CG CGS FCG GCR RGMRES
2 ! ISTOPC
00500 ! ITMAX
1 ! ITRACE
30 ! IRST (restart for RGMRES and BiCGSTABL)
1.d-6 ! EPS
ML-VCYCLE-FBGS-SLUD ! Longer descriptive name for preconditioner (up to 20 chars)
ML-VCYCLE-FBGS-R-UMF ! Longer descriptive name for preconditioner (up to 20 chars)
ML ! Preconditioner type: NONE JACOBI BJAC AS ML
VCYCLE ! Type of multilevel correction: ADD MULT
VCYCLE ! Type of multilevel CYCLE: VCYCLE WCYCLE KCYCLE MULT ADD
1 ! Number of outer sweeps
-3 ! Max Number of levels in a multilevel preconditioner; if <0, lib default
-3 ! Target coarse matrix size; if <0, lib default
@ -25,15 +25,12 @@ NOFILTER ! Filtering of matrix ? FILTER NOFILTER
2 ! Number of thresholds in vector, next line ignored if <= 0
0.05 0.025 ! Thresholds
0.0100d0 ! Smoothed aggregation threshold: >= 0.0
EIG_EST ! Omega algorithm: EIG_EST USER_CHOICE
A_NORMI ! Estimate procedure if EIG_EST
1.0 ! Estimate value (if USER_CHOICE)
FBGS ! Smoother type JACOBI BJAC AS ignored for non-ML
FBGS ! Smoother type JACOBI GS BGS BJAC AS; ignored for non-ML
1 ! Number of sweeps for (pre) smoother
0 ! Number of overlap layers for AS preconditioner
HALO ! AS restriction operator: NONE HALO
NONE ! AS prolongation operator: NONE SUM AVG
DSCALE ! Subdomain solver: DSCALE ILU MILU ILUT UMF SLU MUMPS
JACOBI ! Subdomain solver: JACOBI BS BGS ILU ILUT MILU MUMPS SLU UMF
0 ! Fill level P for ILU(P) and ILU(T,P)
1.d-4 ! Threshold T for ILU(T,P)
NONE ! Second (post) smoother, ignored if NONE
@ -41,12 +38,12 @@ NONE ! Second (post) smoother, ignored if NONE
0 ! Number of overlap layers for AS preconditioner
HALO ! AS restriction operator: NONE HALO
NONE ! AS prolongation operator: NONE SUM AVG
DSCALE ! Subdomain solver: DSCALE ILU MILU ILUT UMF SLU MUMPS
JACOBI ! Subdomain solver: JACOBI BS BGS ILU ILUT MILU MUMPS SLU UMF
0 ! Fill level P for ILU(P) and ILU(T,P)
1.d-4 ! Threshold T for ILU(T,P)
SLUDIST ! Coarsest-level solver: JACOBI BJAC UMF SLU SLUDIST MUMPS
DIST ! Coarsest-level matrix distribution: DIST REPL
SLUDIST ! Coarsest-level subsolver: ILU UMF SLU MUMPS SLUDIST
UMF ! Coarsest-level solver: MUMPS UMF SLU SLUDIST JACOBI GS BJAC
REPL ! Coarsest-level matrix distribution: DIST REPL
UMF ! Coarsest-level subsolver: ILU UMF SLU MUMPS SLUDIST
1 ! Coarsest-level fillin P for ILU(P) and ILU(T,P)
1.d-4 ! Coarsest-level threshold T for ILU(T,P)
1 ! Number of Jacobi sweeps for BJAC/PJAC coarsest-level solver
1 ! Number of Jacobi sweeps for JACOBI/GS/BJAC coarsest-level solver

@ -177,9 +177,6 @@ program mld_d_pde2d
integer(psb_ipk_) :: thrvsz ! size of threshold vector
real(psb_dpk_) :: athres ! smoothed aggregation threshold
real(psb_dpk_) :: ascale ! smoothed aggregation scale factor for threshold
character(len=16) :: aggr_omalg ! algorithm for estimating omega parameter
character(len=16) :: aggr_eig ! Eigenvalue estimation procedure
real(psb_dpk_) :: omega_val ! Eigenvalue estimate value
integer(psb_ipk_) :: csize ! minimum size of coarsest matrix
! AMG smoother or pre-smoother; also 1-lev preconditioner
@ -298,12 +295,6 @@ program mld_d_pde2d
call prec%set('aggr_alg', p_choice%aggr_alg, info)
call prec%set('aggr_ord', p_choice%aggr_ord, info)
call prec%set('aggr_filter', p_choice%aggr_filter,info)
call prec%set('aggr_omega_alg', p_choice%aggr_omalg, info)
if (psb_toupper(p_choice%aggr_omalg) == 'EIG_EST') then
call prec%set('aggr_eig', p_choice%aggr_eig, info)
else if (psb_toupper(p_choice%aggr_omalg) == 'USER_CHOICE') then
call prec%set('aggr_omega_val', p_choice%omega_val, info)
end if
call prec%set('coarse_solve', p_choice%csolve, info)
if (psb_toupper(p_choice%csolve) == 'BJAC') &
& call prec%set('coarse_subsolve', p_choice%csbsolve, info)
@ -525,9 +516,6 @@ contains
read(psb_inp_unit,*) ! dummy read to skip a record
end if
call read_data(prec%athres,psb_inp_unit) ! smoothed aggr thresh
call read_data(prec%aggr_omalg,psb_inp_unit) ! alg for estimating omega
call read_data(prec%aggr_eig,psb_inp_unit) ! alg for estimating omega
call read_data(prec%omega_val,psb_inp_unit) ! alg for estimating omega
! AMG smoother (or pre-smoother) / 1-lev preconditioner
call read_data(prec%smther,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps,psb_inp_unit) ! (pre-)smoother / 1-lev prec sweeps
@ -606,9 +594,6 @@ contains
end if
call psb_bcast(ictxt,prec%athres)
call psb_bcast(ictxt,prec%ascale)
call psb_bcast(ictxt,prec%aggr_omalg)
call psb_bcast(ictxt,prec%aggr_eig)
call psb_bcast(ictxt,prec%omega_val)
call psb_bcast(icontxt,prec%csize)
call psb_bcast(icontxt,prec%cmat)

@ -189,9 +189,6 @@ program mld_d_pde3d
integer(psb_ipk_) :: thrvsz ! size of threshold vector
real(psb_dpk_) :: athres ! smoothed aggregation threshold
real(psb_dpk_) :: ascale ! smoothed aggregation scale factor for threshold
character(len=16) :: aggr_omalg ! algorithm for estimating omega parameter
character(len=16) :: aggr_eig ! Eigenvalue estimation procedure
real(psb_dpk_) :: omega_val ! Eigenvalue estimate value
integer(psb_ipk_) :: csize ! minimum size of coarsest matrix
! AMG smoother or pre-smoother; also 1-lev preconditioner
@ -311,12 +308,6 @@ program mld_d_pde3d
call prec%set('aggr_alg', p_choice%aggr_alg, info)
call prec%set('aggr_ord', p_choice%aggr_ord, info)
call prec%set('aggr_filter', p_choice%aggr_filter,info)
call prec%set('aggr_omega_alg', p_choice%aggr_omalg, info)
if (psb_toupper(p_choice%aggr_omalg) == 'EIG_EST') then
call prec%set('aggr_eig', p_choice%aggr_eig, info)
else if (psb_toupper(p_choice%aggr_omalg) == 'USER_CHOICE') then
call prec%set('aggr_omega_val', p_choice%omega_val, info)
end if
call prec%set('coarse_solve', p_choice%csolve, info)
if (psb_toupper(p_choice%csolve) == 'BJAC') &
& call prec%set('coarse_subsolve', p_choice%csbsolve, info)
@ -538,9 +529,6 @@ contains
read(psb_inp_unit,*) ! dummy read to skip a record
end if
call read_data(prec%athres,psb_inp_unit) ! smoothed aggr thresh
call read_data(prec%aggr_omalg,psb_inp_unit) ! alg for estimating omega
call read_data(prec%aggr_eig,psb_inp_unit) ! alg for estimating omega
call read_data(prec%omega_val,psb_inp_unit) ! alg for estimating omega
! AMG smoother (or pre-smoother) / 1-lev preconditioner
call read_data(prec%smther,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps,psb_inp_unit) ! (pre-)smoother / 1-lev prec sweeps
@ -619,9 +607,6 @@ contains
end if
call psb_bcast(ictxt,prec%athres)
call psb_bcast(ictxt,prec%ascale)
call psb_bcast(ictxt,prec%aggr_omalg)
call psb_bcast(ictxt,prec%aggr_eig)
call psb_bcast(ictxt,prec%omega_val)
call psb_bcast(icontxt,prec%csize)
call psb_bcast(icontxt,prec%cmat)

@ -1,14 +1,14 @@
CSR ! Storage format CSR COO JAD
0080 ! IDIM; domain size is idim**3
FCG ! Iterative method: BiCGSTAB BiCG CGS RGMRES BiCGSTABL CG
CG ! Iterative method: BiCGSTAB BiCGSTABL BiCG CG CGS FCG GCR RGMRES
2 ! ISTOPC
00500 ! ITMAX
1 ! ITRACE
30 ! IRST (restart for RGMRES and BiCGSTABL)
1.d-6 ! EPS
ML-VCYCLE-FBGS-SLUD ! Longer descriptive name for preconditioner (up to 20 chars)
ML-VCYCLE-FBGS-R-UMF ! Longer descriptive name for preconditioner (up to 20 chars)
ML ! Preconditioner type: NONE JACOBI BJAC AS ML
VCYCLE ! Type of multilevel correction: ADD MULT
VCYCLE ! Type of multilevel CYCLE: VCYCLE WCYCLE KCYCLE MULT ADD
1 ! Number of outer sweeps
-3 ! Max Number of levels in a multilevel preconditioner; if <0, lib default
-3 ! Target coarse matrix size; if <0, lib default
@ -20,15 +20,12 @@ NOFILTER ! Filtering of matrix ? FILTER NOFILTER
2 ! Number of thresholds in vector, next line ignored if <= 0
0.05 0.025 ! Thresholds
0.0100d0 ! Smoothed aggregation threshold: >= 0.0
EIG_EST ! Omega algorithm: EIG_EST USER_CHOICE
A_NORMI ! Estimate procedure if EIG_EST
1.0 ! Estimate value (if USER_CHOICE)
FBGS ! Smoother type JACOBI BJAC AS ignored for non-ML
FBGS ! Smoother type JACOBI FBGS GS BGS BJAC AS; ignored for non-ML
1 ! Number of sweeps for (pre) smoother
0 ! Number of overlap layers for AS preconditioner
HALO ! AS restriction operator: NONE HALO
NONE ! AS prolongation operator: NONE SUM AVG
DSCALE ! Subdomain solver: DSCALE ILU MILU ILUT UMF SLU MUMPS
JACOBI ! Subdomain solver: JACOBI GS BGS ILU ILUT MILU MUMPS SLU UMF
0 ! Fill level P for ILU(P) and ILU(T,P)
1.d-4 ! Threshold T for ILU(T,P)
NONE ! Second (post) smoother, ignored if NONE
@ -36,12 +33,12 @@ NONE ! Second (post) smoother, ignored if NONE
0 ! Number of overlap layers for AS preconditioner
HALO ! AS restriction operator: NONE HALO
NONE ! AS prolongation operator: NONE SUM AVG
DSCALE ! Subdomain solver: DSCALE ILU MILU ILUT UMF SLU MUMPS
JACOBI ! Subdomain solver: JACOBI GS BGS ILU ILUT MILU MUMPS SLU UMF
0 ! Fill level P for ILU(P) and ILU(T,P)
1.d-4 ! Threshold T for ILU(T,P)
SLUDIST ! Coarsest-level solver: JACOBI BJAC UMF SLU SLUDIST MUMPS
DIST ! Coarsest-level matrix distribution: DIST REPL
SLUDIST ! Coarsest-level subsolver: ILU UMF SLU MUMPS SLUDIST
UMF ! Coarsest-level solver: MUMPS UMF SLU SLUDIST JACOBI GS BJAC
REPL ! Coarsest-level matrix distribution: DIST REPL
UMF ! Coarsest-level subsolver: ILU ILUT MILU UMF MUMPS SLU
1 ! Coarsest-level fillin P for ILU(P) and ILU(T,P)
1.d-4 ! Coarsest-level threshold T for ILU(T,P)
1 ! Number of Jacobi sweeps for BJAC/PJAC coarsest-level solver
1 ! Number of Jacobi sweeps for JACOBI/GS/BJAC coarsest-level solver

@ -1,14 +1,14 @@
CSR ! Storage format CSR COO JAD
0080 ! IDIM; domain size is idim**3
FCG ! Iterative method: BiCGSTAB BiCG CGS RGMRES BiCGSTABL CG
CG ! Iterative method: BiCGSTAB BiCGSTABL BiCG CG CGS FCG GCR RGMRES
2 ! ISTOPC
00500 ! ITMAX
1 ! ITRACE
30 ! IRST (restart for RGMRES and BiCGSTABL)
1.d-6 ! EPS
ML-VCYCLE-FBGS-SLUD ! Longer descriptive name for preconditioner (up to 20 chars)
ML-VCYCLE-FBGS-R-UMF ! Longer descriptive name for preconditioner (up to 20 chars)
ML ! Preconditioner type: NONE JACOBI BJAC AS ML
VCYCLE ! Type of multilevel correction: ADD MULT
VCYCLE ! Type of multilevel CYCLE: VCYCLE WCYCLE KCYCLE MULT ADD
1 ! Number of outer sweeps
-3 ! Max Number of levels in a multilevel preconditioner; if <0, lib default
-3 ! Target coarse matrix size; if <0, lib default
@ -20,15 +20,12 @@ NOFILTER ! Filtering of matrix ? FILTER NOFILTER
2 ! Number of thresholds in vector, next line ignored if <= 0
0.05 0.025 ! Thresholds
0.0100d0 ! Smoothed aggregation threshold: >= 0.0
EIG_EST ! Omega algorithm: EIG_EST USER_CHOICE
A_NORMI ! Estimate procedure if EIG_EST
1.0 ! Estimate value (if USER_CHOICE)
FBGS ! Smoother type JACOBI BJAC AS ignored for non-ML
FBGS ! Smoother type JACOBI FBGS GS BGS BJAC AS; ignored for non-ML
1 ! Number of sweeps for (pre) smoother
0 ! Number of overlap layers for AS preconditioner
HALO ! AS restriction operator: NONE HALO
NONE ! AS prolongation operator: NONE SUM AVG
DSCALE ! Subdomain solver: DSCALE ILU MILU ILUT UMF SLU MUMPS
JACOBI ! Subdomain solver: JACOBI GS BGS ILU ILUT MILU MUMPS SLU UMF
0 ! Fill level P for ILU(P) and ILU(T,P)
1.d-4 ! Threshold T for ILU(T,P)
NONE ! Second (post) smoother, ignored if NONE
@ -36,12 +33,12 @@ NONE ! Second (post) smoother, ignored if NONE
0 ! Number of overlap layers for AS preconditioner
HALO ! AS restriction operator: NONE HALO
NONE ! AS prolongation operator: NONE SUM AVG
DSCALE ! Subdomain solver: DSCALE ILU MILU ILUT UMF SLU MUMPS
JACOBI ! Subdomain solver: JACOBI GS BGS ILU ILUT MILU MUMPS SLU UMF
0 ! Fill level P for ILU(P) and ILU(T,P)
1.d-4 ! Threshold T for ILU(T,P)
SLUDIST ! Coarsest-level solver: JACOBI BJAC UMF SLU SLUDIST MUMPS
DIST ! Coarsest-level matrix distribution: DIST REPL
SLUDIST ! Coarsest-level subsolver: ILU UMF SLU MUMPS SLUDIST
UMF ! Coarsest-level solver: MUMPS UMF SLU SLUDIST JACOBI GS BJAC
REPL ! Coarsest-level matrix distribution: DIST REPL
UMF ! Coarsest-level subsolver: ILU ILUT MILU UMF MUMPS SLU
1 ! Coarsest-level fillin P for ILU(P) and ILU(T,P)
1.d-4 ! Coarsest-level threshold T for ILU(T,P)
1 ! Number of Jacobi sweeps for BJAC/PJAC coarsest-level solver
1 ! Number of Jacobi sweeps for JACOBI/GS/BJAC coarsest-level solver

Loading…
Cancel
Save