mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-06 14:44:55 +00:00
Merge branch 'development' into mergeparmatch
This commit is contained in:
@@ -50,16 +50,16 @@
|
||||
!
|
||||
! It contains routines for
|
||||
! - converting character constants defining the preconditioner into integer
|
||||
! constants;
|
||||
! constants;
|
||||
! - checking if the preconditioner is correctly defined;
|
||||
! - printing a description of the preconditioner;
|
||||
! - deallocating the preconditioner data structure.
|
||||
! - deallocating the preconditioner data structure.
|
||||
!
|
||||
|
||||
module amg_base_prec_type
|
||||
|
||||
!
|
||||
! This reduces the size of .mod file. Without the ONLY clause compilation
|
||||
! This reduces the size of .mod file. Without the ONLY clause compilation
|
||||
! blows up on some systems.
|
||||
!
|
||||
use psb_const_mod
|
||||
@@ -78,7 +78,7 @@ module amg_base_prec_type
|
||||
& psb_err_from_subroutine_, psb_err_missing_override_method_, &
|
||||
& psb_error_handler, psb_out_unit, psb_err_unit
|
||||
|
||||
!
|
||||
!
|
||||
! Version numbers
|
||||
!
|
||||
character(len=*), parameter :: amg_version_string_ = "1.0.0"
|
||||
@@ -120,7 +120,7 @@ module amg_base_prec_type
|
||||
procedure, pass(pm) :: printout => d_ml_parms_printout
|
||||
end type amg_dml_parms
|
||||
|
||||
|
||||
|
||||
|
||||
type amg_iaggr_data
|
||||
!
|
||||
@@ -134,32 +134,32 @@ module amg_base_prec_type
|
||||
integer(psb_ipk_) :: min_coarse_size = -ione
|
||||
integer(psb_ipk_) :: min_coarse_size_per_process = -ione
|
||||
integer(psb_lpk_) :: target_coarse_size
|
||||
! 2. maximum number of levels. Defaults to 20
|
||||
! 2. maximum number of levels. Defaults to 20
|
||||
integer(psb_ipk_) :: max_levs = 20_psb_ipk_
|
||||
end type amg_iaggr_data
|
||||
|
||||
|
||||
type, extends(amg_iaggr_data) :: amg_saggr_data
|
||||
! 3. min_cr_ratio = 1.5
|
||||
! 3. min_cr_ratio = 1.5
|
||||
real(psb_spk_) :: min_cr_ratio = 1.5_psb_spk_
|
||||
real(psb_spk_) :: op_complexity = szero
|
||||
real(psb_spk_) :: avg_cr = szero
|
||||
end type amg_saggr_data
|
||||
|
||||
type, extends(amg_iaggr_data) :: amg_daggr_data
|
||||
! 3. min_cr_ratio = 1.5
|
||||
! 3. min_cr_ratio = 1.5
|
||||
real(psb_dpk_) :: min_cr_ratio = 1.5_psb_dpk_
|
||||
real(psb_dpk_) :: op_complexity = dzero
|
||||
real(psb_dpk_) :: avg_cr = dzero
|
||||
end type amg_daggr_data
|
||||
|
||||
|
||||
|
||||
|
||||
!
|
||||
! Entries in iprcparm
|
||||
!
|
||||
! These are in baseprec
|
||||
!
|
||||
integer(psb_ipk_), parameter :: amg_smoother_type_ = 1
|
||||
!
|
||||
integer(psb_ipk_), parameter :: amg_smoother_type_ = 1
|
||||
integer(psb_ipk_), parameter :: amg_sub_solve_ = 2
|
||||
integer(psb_ipk_), parameter :: amg_sub_restr_ = 3
|
||||
integer(psb_ipk_), parameter :: amg_sub_prol_ = 4
|
||||
@@ -169,7 +169,7 @@ module amg_base_prec_type
|
||||
|
||||
!
|
||||
! These are in onelev
|
||||
!
|
||||
!
|
||||
integer(psb_ipk_), parameter :: amg_ml_cycle_ = 20
|
||||
integer(psb_ipk_), parameter :: amg_smoother_sweeps_pre_ = 21
|
||||
integer(psb_ipk_), parameter :: amg_smoother_sweeps_post_ = 22
|
||||
@@ -181,7 +181,7 @@ module amg_base_prec_type
|
||||
integer(psb_ipk_), parameter :: amg_aggr_eig_ = 28
|
||||
integer(psb_ipk_), parameter :: amg_aggr_filter_ = 29
|
||||
integer(psb_ipk_), parameter :: amg_coarse_mat_ = 30
|
||||
integer(psb_ipk_), parameter :: amg_coarse_solve_ = 31
|
||||
integer(psb_ipk_), parameter :: amg_coarse_solve_ = 31
|
||||
integer(psb_ipk_), parameter :: amg_coarse_sweeps_ = 32
|
||||
integer(psb_ipk_), parameter :: amg_coarse_fillin_ = 33
|
||||
integer(psb_ipk_), parameter :: amg_coarse_subsolve_ = 34
|
||||
@@ -196,7 +196,7 @@ module amg_base_prec_type
|
||||
|
||||
!
|
||||
! Legal values for entry: amg_smoother_type_
|
||||
!
|
||||
!
|
||||
integer(psb_ipk_), parameter :: amg_min_prec_ = 0
|
||||
integer(psb_ipk_), parameter :: amg_noprec_ = 0
|
||||
integer(psb_ipk_), parameter :: amg_base_smooth_ = 0
|
||||
@@ -427,7 +427,7 @@ contains
|
||||
|
||||
do_remap = val
|
||||
end subroutine amg_set_do_remap
|
||||
|
||||
|
||||
!
|
||||
! Function: amg_stringval
|
||||
!
|
||||
@@ -442,10 +442,10 @@ contains
|
||||
!
|
||||
function amg_stringval(string) result(val)
|
||||
use psb_prec_const_mod
|
||||
implicit none
|
||||
implicit none
|
||||
! Arguments
|
||||
character(len=*), intent(in) :: string
|
||||
integer(psb_ipk_) :: val
|
||||
integer(psb_ipk_) :: val
|
||||
character(len=*), parameter :: name='amg_stringval'
|
||||
! Local variable
|
||||
integer :: index_tab
|
||||
@@ -453,14 +453,14 @@ contains
|
||||
index_tab=index(string,char(9))
|
||||
if (index_tab.NE.0) then
|
||||
string2=string(1:index_tab-1)
|
||||
else
|
||||
else
|
||||
string2=string
|
||||
endif
|
||||
select case(psb_toupper(trim(string2)))
|
||||
case('NONE')
|
||||
val = 0
|
||||
case('HALO')
|
||||
val = psb_halo_
|
||||
val = psb_halo_
|
||||
case('SUM')
|
||||
val = psb_sum_
|
||||
case('AVG')
|
||||
@@ -569,47 +569,47 @@ contains
|
||||
end function amg_stringval
|
||||
|
||||
subroutine ml_parms_get_coarse(pm,pmin)
|
||||
implicit none
|
||||
implicit none
|
||||
class(amg_ml_parms), intent(inout) :: pm
|
||||
class(amg_ml_parms), intent(in) :: pmin
|
||||
pm%coarse_mat = pmin%coarse_mat
|
||||
pm%coarse_solve = pmin%coarse_solve
|
||||
end subroutine ml_parms_get_coarse
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
subroutine ml_parms_printout(pm,iout)
|
||||
implicit none
|
||||
implicit none
|
||||
class(amg_ml_parms), intent(in) :: pm
|
||||
integer(psb_ipk_), intent(in) :: iout
|
||||
|
||||
|
||||
write(iout,*) 'ML : ',pm%ml_cycle
|
||||
write(iout,*) 'Sweeps: ',pm%sweeps_pre,pm%sweeps_post
|
||||
write(iout,*) 'AGGR : ',pm%par_aggr_alg,pm%aggr_prol, pm%aggr_ord
|
||||
write(iout,*) ' : ',pm%aggr_omega_alg,pm%aggr_eig,pm%aggr_filter
|
||||
write(iout,*) 'COARSE: ',pm%coarse_mat,pm%coarse_solve
|
||||
end subroutine ml_parms_printout
|
||||
|
||||
|
||||
|
||||
|
||||
subroutine s_ml_parms_printout(pm,iout)
|
||||
implicit none
|
||||
implicit none
|
||||
class(amg_sml_parms), intent(in) :: pm
|
||||
integer(psb_ipk_), intent(in) :: iout
|
||||
|
||||
|
||||
call pm%amg_ml_parms%printout(iout)
|
||||
write(iout,*) 'REAL : ',pm%aggr_omega_val,pm%aggr_thresh
|
||||
end subroutine s_ml_parms_printout
|
||||
|
||||
|
||||
|
||||
|
||||
subroutine d_ml_parms_printout(pm,iout)
|
||||
implicit none
|
||||
implicit none
|
||||
class(amg_dml_parms), intent(in) :: pm
|
||||
integer(psb_ipk_), intent(in) :: iout
|
||||
|
||||
|
||||
call pm%amg_ml_parms%printout(iout)
|
||||
write(iout,*) 'REAL : ',pm%aggr_omega_val,pm%aggr_thresh
|
||||
end subroutine d_ml_parms_printout
|
||||
|
||||
|
||||
|
||||
!
|
||||
! Routines printing out a description of the preconditioner
|
||||
@@ -625,7 +625,7 @@ contains
|
||||
info = psb_success_
|
||||
if ((pm%ml_cycle>=amg_no_ml_).and.(pm%ml_cycle<=amg_max_ml_cycle_)) then
|
||||
|
||||
|
||||
|
||||
write(iout,*) ' Multilevel cycle: ',&
|
||||
& ml_names(pm%ml_cycle)
|
||||
select case (pm%ml_cycle)
|
||||
@@ -651,7 +651,7 @@ contains
|
||||
info = psb_success_
|
||||
if ((pm%ml_cycle>=amg_no_ml_).and.(pm%ml_cycle<=amg_max_ml_cycle_)) then
|
||||
|
||||
|
||||
|
||||
write(iout,*) ' Parallel aggregation algorithm: ',&
|
||||
& par_aggr_alg_names(pm%par_aggr_alg)
|
||||
if (pm%aggr_type>0) write(iout,*) ' Aggregation type: ',&
|
||||
@@ -663,23 +663,23 @@ contains
|
||||
write(iout,*) ' Aggregation prolongator: ', &
|
||||
& aggr_prols(pm%aggr_prol)
|
||||
if (pm%aggr_prol /= amg_no_smooth_) then
|
||||
write(iout,*) ' with: ', aggr_filters(pm%aggr_filter)
|
||||
if (pm%aggr_omega_alg == amg_eig_est_) then
|
||||
write(iout,*) ' with: ', aggr_filters(pm%aggr_filter)
|
||||
if (pm%aggr_omega_alg == amg_eig_est_) then
|
||||
write(iout,*) ' Damping omega computation: spectral radius estimate'
|
||||
write(iout,*) ' Spectral radius estimate: ', &
|
||||
& eigen_estimates(pm%aggr_eig)
|
||||
else if (pm%aggr_omega_alg == amg_user_choice_) then
|
||||
else if (pm%aggr_omega_alg == amg_user_choice_) then
|
||||
write(iout,*) ' Damping omega computation: user defined value.'
|
||||
else
|
||||
else
|
||||
write(iout,*) ' Damping omega computation: unknown value in iprcparm!!'
|
||||
end if
|
||||
end if
|
||||
!end if
|
||||
else
|
||||
write(iout,*) ' Multilevel type: Unkonwn value. Something is amiss....',&
|
||||
& pm%ml_cycle
|
||||
& pm%ml_cycle
|
||||
end if
|
||||
|
||||
|
||||
return
|
||||
|
||||
end subroutine ml_parms_mldescr
|
||||
@@ -696,13 +696,13 @@ contains
|
||||
logical :: coarse_
|
||||
|
||||
info = psb_success_
|
||||
if (present(coarse)) then
|
||||
if (present(coarse)) then
|
||||
coarse_ = coarse
|
||||
else
|
||||
coarse_ = .false.
|
||||
end if
|
||||
|
||||
if (coarse_) then
|
||||
if (coarse_) then
|
||||
call pm%coarsedescr(iout,info)
|
||||
end if
|
||||
|
||||
@@ -725,12 +725,12 @@ contains
|
||||
write(iout,*) ' Coarse matrix: ',&
|
||||
& matrix_names(pm%coarse_mat)
|
||||
select case(pm%coarse_solve)
|
||||
case (amg_bjac_,amg_as_)
|
||||
case (amg_bjac_,amg_as_)
|
||||
write(iout,*) ' Number of sweeps : ',&
|
||||
& pm%sweeps_pre
|
||||
write(iout,*) ' Coarse solver: ',&
|
||||
& 'Block Jacobi'
|
||||
case (amg_l1_bjac_)
|
||||
case (amg_l1_bjac_)
|
||||
write(iout,*) ' Number of sweeps : ',&
|
||||
& pm%sweeps_pre
|
||||
write(iout,*) ' Coarse solver: ',&
|
||||
@@ -797,7 +797,7 @@ contains
|
||||
!
|
||||
|
||||
function is_legal_base_prec(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_base_prec
|
||||
|
||||
@@ -805,44 +805,44 @@ contains
|
||||
return
|
||||
end function is_legal_base_prec
|
||||
function is_int_non_negative(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_int_non_negative
|
||||
|
||||
is_int_non_negative = (ip >= 0)
|
||||
is_int_non_negative = (ip >= 0)
|
||||
return
|
||||
end function is_int_non_negative
|
||||
function is_legal_ilu_scale(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_ilu_scale
|
||||
is_legal_ilu_scale = ((ip >= amg_ilu_scale_none_).and.(ip <= amg_max_ilu_scale_))
|
||||
return
|
||||
end function is_legal_ilu_scale
|
||||
function is_int_positive(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_int_positive
|
||||
|
||||
is_int_positive = (ip >= 1)
|
||||
is_int_positive = (ip >= 1)
|
||||
return
|
||||
end function is_int_positive
|
||||
function is_legal_prolong(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_prolong
|
||||
is_legal_prolong = ((ip>=psb_none_).and.(ip<=psb_square_root_))
|
||||
return
|
||||
end function is_legal_prolong
|
||||
function is_legal_restrict(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_restrict
|
||||
is_legal_restrict = ((ip == psb_nohalo_).or.(ip==psb_halo_))
|
||||
return
|
||||
end function is_legal_restrict
|
||||
function is_legal_ml_cycle(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_ml_cycle
|
||||
|
||||
@@ -988,7 +988,7 @@ contains
|
||||
return
|
||||
end function is_legal_s_fact_thrs
|
||||
function is_legal_s_aggr_thrs(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
real(psb_spk_), intent(in) :: ip
|
||||
logical :: is_legal_s_aggr_thrs
|
||||
|
||||
@@ -1032,7 +1032,7 @@ contains
|
||||
end interface
|
||||
character(len=20), parameter :: rname='amg_check_def'
|
||||
|
||||
if (.not.is_legal(ip)) then
|
||||
if (.not.is_legal(ip)) then
|
||||
write(0,*)trim(rname),': Error: Illegal value for ',&
|
||||
& name,' :',ip, '. defaulting to ',id
|
||||
ip = id
|
||||
@@ -1040,11 +1040,11 @@ contains
|
||||
end subroutine amg_scheck_def
|
||||
|
||||
subroutine amg_dcheck_def(ip,name,id,is_legal)
|
||||
implicit none
|
||||
implicit none
|
||||
real(psb_dpk_), intent(inout) :: ip
|
||||
real(psb_dpk_), intent(in) :: id
|
||||
character(len=*), intent(in) :: name
|
||||
interface
|
||||
interface
|
||||
function is_legal(i)
|
||||
use psb_base_mod, only : psb_dpk_
|
||||
real(psb_dpk_), intent(in) :: i
|
||||
@@ -1053,7 +1053,7 @@ contains
|
||||
end interface
|
||||
character(len=20), parameter :: rname='amg_check_def'
|
||||
|
||||
if (.not.is_legal(ip)) then
|
||||
if (.not.is_legal(ip)) then
|
||||
write(0,*)trim(rname),': Error: Illegal value for ',&
|
||||
& name,' :',ip, '. defaulting to ',id
|
||||
ip = id
|
||||
@@ -1062,7 +1062,7 @@ contains
|
||||
|
||||
|
||||
function pr_to_str(iprec)
|
||||
implicit none
|
||||
implicit none
|
||||
|
||||
integer(psb_ipk_), intent(in) :: iprec
|
||||
character(len=10) :: pr_to_str
|
||||
@@ -1070,11 +1070,11 @@ contains
|
||||
select case(iprec)
|
||||
case(amg_noprec_)
|
||||
pr_to_str='NOPREC'
|
||||
case(amg_jac_)
|
||||
case(amg_jac_)
|
||||
pr_to_str='JAC'
|
||||
case(amg_bjac_)
|
||||
case(amg_bjac_)
|
||||
pr_to_str='BJAC'
|
||||
case(amg_as_)
|
||||
case(amg_as_)
|
||||
pr_to_str='AS'
|
||||
end select
|
||||
|
||||
@@ -1082,7 +1082,7 @@ contains
|
||||
|
||||
subroutine amg_ml_bcast(ctxt,dat,root)
|
||||
|
||||
implicit none
|
||||
implicit none
|
||||
type(psb_ctxt_type), intent(in) :: ctxt
|
||||
type(amg_ml_parms), intent(inout) :: dat
|
||||
integer(psb_ipk_), intent(in), optional :: root
|
||||
@@ -1104,7 +1104,7 @@ contains
|
||||
|
||||
subroutine amg_sml_bcast(ctxt,dat,root)
|
||||
|
||||
implicit none
|
||||
implicit none
|
||||
type(psb_ctxt_type), intent(in) :: ctxt
|
||||
type(amg_sml_parms), intent(inout) :: dat
|
||||
integer(psb_ipk_), intent(in), optional :: root
|
||||
@@ -1115,7 +1115,7 @@ contains
|
||||
end subroutine amg_sml_bcast
|
||||
|
||||
subroutine amg_dml_bcast(ctxt,dat,root)
|
||||
implicit none
|
||||
implicit none
|
||||
type(psb_ctxt_type), intent(in) :: ctxt
|
||||
type(amg_dml_parms), intent(inout) :: dat
|
||||
integer(psb_ipk_), intent(in), optional :: root
|
||||
@@ -1127,7 +1127,7 @@ contains
|
||||
|
||||
subroutine ml_parms_clone(pm,pmout,info)
|
||||
|
||||
implicit none
|
||||
implicit none
|
||||
class(amg_ml_parms), intent(inout) :: pm
|
||||
class(amg_ml_parms), intent(out) :: pmout
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
@@ -1147,19 +1147,19 @@ contains
|
||||
pmout%coarse_solve = pm%coarse_solve
|
||||
|
||||
end subroutine ml_parms_clone
|
||||
|
||||
|
||||
subroutine s_ml_parms_clone(pm,pmout,info)
|
||||
|
||||
implicit none
|
||||
implicit none
|
||||
class(amg_sml_parms), intent(inout) :: pm
|
||||
class(amg_ml_parms), intent(out) :: pmout
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
|
||||
|
||||
integer(psb_ipk_) :: err_act
|
||||
integer(psb_ipk_) :: ierr(5)
|
||||
character(len=20) :: name='clone'
|
||||
|
||||
|
||||
info = 0
|
||||
select type(pout => pmout)
|
||||
class is (amg_sml_parms)
|
||||
@@ -1174,21 +1174,21 @@ contains
|
||||
call psb_get_erraction(err_act)
|
||||
call psb_error_handler(err_act)
|
||||
end select
|
||||
|
||||
|
||||
end subroutine s_ml_parms_clone
|
||||
|
||||
subroutine d_ml_parms_clone(pm,pmout,info)
|
||||
|
||||
implicit none
|
||||
implicit none
|
||||
class(amg_dml_parms), intent(inout) :: pm
|
||||
class(amg_ml_parms), intent(out) :: pmout
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
|
||||
|
||||
integer(psb_ipk_) :: err_act
|
||||
integer(psb_ipk_) :: ierr(5)
|
||||
character(len=20) :: name='clone'
|
||||
|
||||
|
||||
info = 0
|
||||
select type(pout => pmout)
|
||||
class is (amg_dml_parms)
|
||||
@@ -1204,13 +1204,13 @@ contains
|
||||
call psb_error_handler(err_act)
|
||||
return
|
||||
end select
|
||||
|
||||
|
||||
end subroutine d_ml_parms_clone
|
||||
|
||||
function amg_s_equal_aggregation(parms1, parms2) result(val)
|
||||
type(amg_sml_parms), intent(in) :: parms1, parms2
|
||||
logical :: val
|
||||
|
||||
|
||||
val = (parms1%par_aggr_alg == parms2%par_aggr_alg ) .and. &
|
||||
& (parms1%aggr_type == parms2%aggr_type ) .and. &
|
||||
& (parms1%aggr_ord == parms2%aggr_ord ) .and. &
|
||||
@@ -1225,7 +1225,7 @@ contains
|
||||
function amg_d_equal_aggregation(parms1, parms2) result(val)
|
||||
type(amg_dml_parms), intent(in) :: parms1, parms2
|
||||
logical :: val
|
||||
|
||||
|
||||
val = (parms1%par_aggr_alg == parms2%par_aggr_alg ) .and. &
|
||||
& (parms1%aggr_type == parms2%aggr_type ) .and. &
|
||||
& (parms1%aggr_ord == parms2%aggr_ord ) .and. &
|
||||
@@ -1236,5 +1236,5 @@ contains
|
||||
& (parms1%aggr_omega_val == parms2%aggr_omega_val ) .and. &
|
||||
& (parms1%aggr_thresh == parms2%aggr_thresh )
|
||||
end function amg_d_equal_aggregation
|
||||
|
||||
|
||||
end module amg_base_prec_type
|
||||
|
||||
Binary file not shown.
+15
-15
@@ -112,73 +112,73 @@ href="userhtmlsu7.html#x16-150004.2" id="QQ2-16-21"><span
|
||||
class="cmr-12">GPU example</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">5 </span><a
|
||||
href="userhtmlse5.html#x17-160005" id="QQ2-17-23"><span
|
||||
href="userhtmlse5.html#x17-160005" id="QQ2-17-25"><span
|
||||
class="cmr-12">User Interface</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.1 </span><a
|
||||
href="userhtmlsu8.html#x18-170005.1" id="QQ2-18-24"><span
|
||||
href="userhtmlsu8.html#x18-170005.1" id="QQ2-18-26"><span
|
||||
class="cmr-12">Method init</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.2 </span><a
|
||||
href="userhtmlsu9.html#x19-180005.2" id="QQ2-19-25"><span
|
||||
href="userhtmlsu9.html#x19-180005.2" id="QQ2-19-27"><span
|
||||
class="cmr-12">Method set</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.3 </span><a
|
||||
href="userhtmlsu10.html#x20-190005.3" id="QQ2-20-33"><span
|
||||
href="userhtmlsu10.html#x20-190005.3" id="QQ2-20-35"><span
|
||||
class="cmr-12">Method hierarchy</span><span
|
||||
class="cmr-12">_build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.4 </span><a
|
||||
href="userhtmlsu11.html#x21-200005.4" id="QQ2-21-34"><span
|
||||
href="userhtmlsu11.html#x21-200005.4" id="QQ2-21-36"><span
|
||||
class="cmr-12">Method smoothers</span><span
|
||||
class="cmr-12">_build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.5 </span><a
|
||||
href="userhtmlsu12.html#x22-210005.5" id="QQ2-22-35"><span
|
||||
href="userhtmlsu12.html#x22-210005.5" id="QQ2-22-37"><span
|
||||
class="cmr-12">Method build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.6 </span><a
|
||||
href="userhtmlsu13.html#x23-220005.6" id="QQ2-23-36"><span
|
||||
href="userhtmlsu13.html#x23-220005.6" id="QQ2-23-38"><span
|
||||
class="cmr-12">Method apply</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.7 </span><a
|
||||
href="userhtmlsu14.html#x24-230005.7" id="QQ2-24-37"><span
|
||||
href="userhtmlsu14.html#x24-230005.7" id="QQ2-24-39"><span
|
||||
class="cmr-12">Method free</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.8 </span><a
|
||||
href="userhtmlsu15.html#x25-240005.8" id="QQ2-25-38"><span
|
||||
href="userhtmlsu15.html#x25-240005.8" id="QQ2-25-40"><span
|
||||
class="cmr-12">Method descr</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.9 </span><a
|
||||
href="userhtmlsu16.html#x26-250005.9" id="QQ2-26-39"><span
|
||||
href="userhtmlsu16.html#x26-250005.9" id="QQ2-26-41"><span
|
||||
class="cmr-12">Auxiliary Methods</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">6 </span><a
|
||||
href="userhtmlse6.html#x27-310006" id="QQ2-27-45"><span
|
||||
href="userhtmlse6.html#x27-310006" id="QQ2-27-47"><span
|
||||
class="cmr-12">Adding new smoother and solver objects to AMG4PSBLAS</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">7 </span><a
|
||||
href="userhtmlse7.html#x28-320007" id="QQ2-28-46"><span
|
||||
href="userhtmlse7.html#x28-320007" id="QQ2-28-48"><span
|
||||
class="cmr-12">Error Handling</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">A </span><a
|
||||
href="userhtmlse8.html#x29-33000A" id="QQ2-29-47"><span
|
||||
href="userhtmlse8.html#x29-33000A" id="QQ2-29-49"><span
|
||||
class="cmr-12">License</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">B </span><a
|
||||
href="userhtmlse9.html#x30-34000B" id="QQ2-30-48"><span
|
||||
href="userhtmlse9.html#x30-34000B" id="QQ2-30-50"><span
|
||||
class="cmr-12">Contributor Covenant Code of Conduct</span></a></span>
|
||||
<br /> <span class="likesectionToc" ><a
|
||||
href="userhtmlli5.html#x31-39000B" id="QQ2-31-53"><span
|
||||
href="userhtmlli5.html#x31-39000B" id="QQ2-31-55"><span
|
||||
class="cmr-12">References</span></a></span>
|
||||
</div>
|
||||
|
||||
|
||||
+15
-15
@@ -112,73 +112,73 @@ href="userhtmlsu7.html#x16-150004.2" id="QQ2-16-21"><span
|
||||
class="cmr-12">GPU example</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">5 </span><a
|
||||
href="userhtmlse5.html#x17-160005" id="QQ2-17-23"><span
|
||||
href="userhtmlse5.html#x17-160005" id="QQ2-17-25"><span
|
||||
class="cmr-12">User Interface</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.1 </span><a
|
||||
href="userhtmlsu8.html#x18-170005.1" id="QQ2-18-24"><span
|
||||
href="userhtmlsu8.html#x18-170005.1" id="QQ2-18-26"><span
|
||||
class="cmr-12">Method init</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.2 </span><a
|
||||
href="userhtmlsu9.html#x19-180005.2" id="QQ2-19-25"><span
|
||||
href="userhtmlsu9.html#x19-180005.2" id="QQ2-19-27"><span
|
||||
class="cmr-12">Method set</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.3 </span><a
|
||||
href="userhtmlsu10.html#x20-190005.3" id="QQ2-20-33"><span
|
||||
href="userhtmlsu10.html#x20-190005.3" id="QQ2-20-35"><span
|
||||
class="cmr-12">Method hierarchy</span><span
|
||||
class="cmr-12">_build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.4 </span><a
|
||||
href="userhtmlsu11.html#x21-200005.4" id="QQ2-21-34"><span
|
||||
href="userhtmlsu11.html#x21-200005.4" id="QQ2-21-36"><span
|
||||
class="cmr-12">Method smoothers</span><span
|
||||
class="cmr-12">_build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.5 </span><a
|
||||
href="userhtmlsu12.html#x22-210005.5" id="QQ2-22-35"><span
|
||||
href="userhtmlsu12.html#x22-210005.5" id="QQ2-22-37"><span
|
||||
class="cmr-12">Method build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.6 </span><a
|
||||
href="userhtmlsu13.html#x23-220005.6" id="QQ2-23-36"><span
|
||||
href="userhtmlsu13.html#x23-220005.6" id="QQ2-23-38"><span
|
||||
class="cmr-12">Method apply</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.7 </span><a
|
||||
href="userhtmlsu14.html#x24-230005.7" id="QQ2-24-37"><span
|
||||
href="userhtmlsu14.html#x24-230005.7" id="QQ2-24-39"><span
|
||||
class="cmr-12">Method free</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.8 </span><a
|
||||
href="userhtmlsu15.html#x25-240005.8" id="QQ2-25-38"><span
|
||||
href="userhtmlsu15.html#x25-240005.8" id="QQ2-25-40"><span
|
||||
class="cmr-12">Method descr</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.9 </span><a
|
||||
href="userhtmlsu16.html#x26-250005.9" id="QQ2-26-39"><span
|
||||
href="userhtmlsu16.html#x26-250005.9" id="QQ2-26-41"><span
|
||||
class="cmr-12">Auxiliary Methods</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">6 </span><a
|
||||
href="userhtmlse6.html#x27-310006" id="QQ2-27-45"><span
|
||||
href="userhtmlse6.html#x27-310006" id="QQ2-27-47"><span
|
||||
class="cmr-12">Adding new smoother and solver objects to AMG4PSBLAS</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">7 </span><a
|
||||
href="userhtmlse7.html#x28-320007" id="QQ2-28-46"><span
|
||||
href="userhtmlse7.html#x28-320007" id="QQ2-28-48"><span
|
||||
class="cmr-12">Error Handling</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">A </span><a
|
||||
href="userhtmlse8.html#x29-33000A" id="QQ2-29-47"><span
|
||||
href="userhtmlse8.html#x29-33000A" id="QQ2-29-49"><span
|
||||
class="cmr-12">License</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">B </span><a
|
||||
href="userhtmlse9.html#x30-34000B" id="QQ2-30-48"><span
|
||||
href="userhtmlse9.html#x30-34000B" id="QQ2-30-50"><span
|
||||
class="cmr-12">Contributor Covenant Code of Conduct</span></a></span>
|
||||
<br /> <span class="likesectionToc" ><a
|
||||
href="userhtmlli5.html#x31-39000B" id="QQ2-31-53"><span
|
||||
href="userhtmlli5.html#x31-39000B" id="QQ2-31-55"><span
|
||||
class="cmr-12">References</span></a></span>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -137,32 +137,32 @@ class="cmr-12">Auxiliary Methods</span></a></span>
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.1 </span><a
|
||||
href="userhtmlsu16.html#x26-260005.9.1" id="QQ2-26-40"><span
|
||||
href="userhtmlsu16.html#x26-260005.9.1" id="QQ2-26-42"><span
|
||||
class="cmr-12">Method: dump</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.2 </span><a
|
||||
href="userhtmlsu16.html#x26-270005.9.2" id="QQ2-26-41"><span
|
||||
href="userhtmlsu16.html#x26-270005.9.2" id="QQ2-26-43"><span
|
||||
class="cmr-12">Method: clone</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.3 </span><a
|
||||
href="userhtmlsu16.html#x26-280005.9.3" id="QQ2-26-42"><span
|
||||
href="userhtmlsu16.html#x26-280005.9.3" id="QQ2-26-44"><span
|
||||
class="cmr-12">Method: sizeof</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.4 </span><a
|
||||
href="userhtmlsu16.html#x26-290005.9.4" id="QQ2-26-43"><span
|
||||
href="userhtmlsu16.html#x26-290005.9.4" id="QQ2-26-45"><span
|
||||
class="cmr-12">Method: allocate</span><span
|
||||
class="cmr-12">_wrk</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.5 </span><a
|
||||
href="userhtmlsu16.html#x26-300005.9.5" id="QQ2-26-44"><span
|
||||
href="userhtmlsu16.html#x26-300005.9.5" id="QQ2-26-46"><span
|
||||
class="cmr-12">Method: free</span><span
|
||||
class="cmr-12">_wrk</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
|
||||
@@ -215,11 +215,7 @@ class="cmr-12">pass it as follows:</span>
|
||||
|
||||
|
||||
|
||||
<<<<<<< HEAD
|
||||
<pre class="verbatim" id="verbatim-10">
|
||||
=======
|
||||
<pre class="verbatim" id="verbatim-11">
|
||||
>>>>>>> development
|
||||
<pre class="verbatim" id="verbatim-13">
|
||||
  ! sparse matrix and preconditioner
|
||||
  type(psb_dspmat_type) :: a
|
||||
  type(amg_dprec_type)  :: prec
|
||||
|
||||
@@ -36,11 +36,7 @@ class="cmr-12">AMG4PSBLAS is freely distributable under the following copyright
|
||||
|
||||
|
||||
|
||||
<<<<<<< HEAD
|
||||
<pre class="verbatim" id="verbatim-11">
|
||||
=======
|
||||
<pre class="verbatim" id="verbatim-12">
|
||||
>>>>>>> development
|
||||
<pre class="verbatim" id="verbatim-14">
|
||||
                           AMG4PSBLAS  version 1.0
|
||||
              Algebraic MultiGrid Preconditioners Package
|
||||
             based on PSBLAS (Parallel Sparse BLAS version 3.7)
|
||||
@@ -82,11 +78,7 @@ class="cmr-12">abide by its terms:</span>
|
||||
|
||||
|
||||
|
||||
<<<<<<< HEAD
|
||||
<pre class="verbatim" id="verbatim-12">
|
||||
=======
|
||||
<pre class="verbatim" id="verbatim-13">
|
||||
>>>>>>> development
|
||||
<pre class="verbatim" id="verbatim-15">
|
||||
                           MLD2P4  version 2.2
|
||||
  MultiLevel Domain Decomposition Parallel Preconditioners Package
|
||||
             based on PSBLAS (Parallel Sparse BLAS version 3.5)
|
||||
@@ -129,12 +121,13 @@ class="cmr-12">[</span><a
|
||||
href="userhtmlli5.html#XMatchBoxP"><span
|
||||
class="cmr-12">9</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">. The relevant license is reproduced here:</span>
|
||||
class="cmr-12">. Per the license requirements, we reproduce the relative part</span>
|
||||
<span
|
||||
class="cmr-12">here.</span>
|
||||
|
||||
|
||||
|
||||
<<<<<<< HEAD
|
||||
<pre class="verbatim" id="verbatim-13">
|
||||
<pre class="verbatim" id="verbatim-16">
|
||||
// ***********************************************************************
|
||||
//
|
||||
//        MatchboxP: A C++ library for approximate weighted matching
|
||||
@@ -143,17 +136,6 @@ class="cmr-12">. The relevant license is reproduced here:</span>
|
||||
//
|
||||
// ***********************************************************************
|
||||
//
|
||||
=======
|
||||
<pre class="verbatim" id="verbatim-14">
|
||||
// ***********************************************************************
|
||||
//
|
||||
//        MatchboxP: A C++ library for approximate weighted matching
|
||||
//               Mahantesh Halappanavar (hala@pnnl.gov)
|
||||
//               Pacific Northwest National Laboratory
|
||||
//
|
||||
// ***********************************************************************
|
||||
//
|
||||
>>>>>>> development
|
||||
//       Copyright (2021) Battelle Memorial Institute
|
||||
//                      All rights reserved.
|
||||
//
|
||||
|
||||
+19
-148
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 674--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 678--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu11.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -34,8 +34,8 @@ class="cmr-12">Method hierarchy</span><span
|
||||
class="cmr-12">_build</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 676--><p class="noindent" >
|
||||
<!--l. 677--><p class="noindent" ><span class="lstinline"></span><span
|
||||
<!--l. 680--><p class="noindent" >
|
||||
<!--l. 681--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
@@ -49,7 +49,7 @@ class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">)</span><br />
|
||||
</div>
|
||||
<!--l. 680--><p class="noindent" ><span
|
||||
<!--l. 684--><p class="noindent" ><span
|
||||
class="cmr-12">This method builds the hierarchy of matrices and restriction/prolongation operators for</span>
|
||||
<span
|
||||
class="cmr-12">the multilevel preconditioner </span><span class="lstinline"></span><span
|
||||
@@ -61,27 +61,17 @@ class="cmtt-12">init</span> <span
|
||||
class="cmr-12">and </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">set</span><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 685--><p class="noindent" ><span
|
||||
<!--l. 689--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-11" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
<<<<<<< HEAD
|
||||
><colgroup id="TBL-12-1g"><col
|
||||
id="TBL-12-1"><col
|
||||
id="TBL-12-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:normal; text-align:left;" id="TBL-12-1-1"
|
||||
class="td11"><!--l. 721--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-1-2"
|
||||
class="td11"><!--l. 721--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
><colgroup id="TBL-11-1g"><col
|
||||
id="TBL-11-1"><col
|
||||
id="TBL-11-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-11-1-"><td style="white-space:normal; text-align:left;" id="TBL-11-1-1"
|
||||
class="td11"><!--l. 688--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 692--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span> </td><td style="white-space:normal; text-align:left;" id="TBL-11-1-2"
|
||||
class="td11"><!--l. 688--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 692--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
@@ -95,15 +85,9 @@ class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:normal; text-align:left;" id="TBL-12-2-1"
|
||||
class="td11"><!--l. 722--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-2-2"
|
||||
class="td11"><!--l. 722--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-11-2-"><td style="white-space:normal; text-align:left;" id="TBL-11-2-1"
|
||||
class="td11"><!--l. 689--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-2-2"
|
||||
class="td11"><!--l. 689--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 693--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-2-2"
|
||||
class="td11"><!--l. 693--><p class="noindent" ><span
|
||||
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
|
||||
<span
|
||||
class="cmr-12">to be preconditioned. Note that </span><span
|
||||
@@ -122,17 +106,10 @@ class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:normal; text-align:left;" id="TBL-12-3-1"
|
||||
class="td11"><!--l. 726--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-12-3-2"
|
||||
class="td11"><!--l. 726--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-11-3-"><td style="white-space:normal; text-align:left;" id="TBL-11-3-1"
|
||||
class="td11"><!--l. 694--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 698--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-11-3-2"
|
||||
class="td11"><!--l. 694--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 698--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_desc_type</span><span
|
||||
@@ -144,15 +121,9 @@ class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:normal; text-align:left;" id="TBL-12-4-1"
|
||||
class="td11"><!--l. 727--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-4-2"
|
||||
class="td11"><!--l. 727--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-11-4-"><td style="white-space:normal; text-align:left;" id="TBL-11-4-1"
|
||||
class="td11"><!--l. 695--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-4-2"
|
||||
class="td11"><!--l. 695--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 699--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-4-2"
|
||||
class="td11"><!--l. 699--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor of </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span><span
|
||||
class="cmr-12">. See the PSBLAS User’s Guide</span>
|
||||
@@ -164,17 +135,10 @@ class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:normal; text-align:left;" id="TBL-12-5-1"
|
||||
class="td11"><!--l. 729--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-5-2"
|
||||
class="td11"><!--l. 729--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-11-5-"><td style="white-space:normal; text-align:left;" id="TBL-11-5-1"
|
||||
class="td11"><!--l. 697--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 701--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-11-5-2"
|
||||
class="td11"><!--l. 697--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 701--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
@@ -184,109 +148,16 @@ class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:normal; text-align:left;" id="TBL-12-6-1"
|
||||
class="td11"><!--l. 730--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-6-2"
|
||||
class="td11"><!--l. 730--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-11-6-"><td style="white-space:normal; text-align:left;" id="TBL-11-6-1"
|
||||
class="td11"><!--l. 698--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-6-2"
|
||||
class="td11"><!--l. 698--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 702--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-6-2"
|
||||
class="td11"><!--l. 702--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:normal; text-align:left;" id="TBL-12-7-1"
|
||||
class="td11"><!--l. 731--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-7-2"
|
||||
class="td11"><!--l. 731--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">_base_sparse_mat</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-8-"><td style="white-space:normal; text-align:left;" id="TBL-12-8-1"
|
||||
class="td11"><!--l. 732--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-8-2"
|
||||
class="td11"><!--l. 732--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
|
||||
<span
|
||||
class="cmr-12">processes. See the PSBLAS User’s Guide for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli5.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-9-"><td style="white-space:normal; text-align:left;" id="TBL-12-9-1"
|
||||
class="td11"><!--l. 736--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">vmold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-9-2"
|
||||
class="td11"><!--l. 736--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">_base_vect_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-10-"><td style="white-space:normal; text-align:left;" id="TBL-12-10-1"
|
||||
class="td11"><!--l. 737--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-10-2"
|
||||
class="td11"><!--l. 737--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal vector components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-11-"><td style="white-space:normal; text-align:left;" id="TBL-12-11-1"
|
||||
class="td11"><!--l. 739--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">imold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-11-2"
|
||||
class="td11"><!--l. 739--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_i_base_vect_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-12-"><td style="white-space:normal; text-align:left;" id="TBL-12-12-1"
|
||||
class="td11"><!--l. 740--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-12-2"
|
||||
class="td11"><!--l. 740--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal integer vector components;</span>
|
||||
<span
|
||||
class="cmr-12">this allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-13-"><td style="white-space:normal; text-align:left;" id="TBL-12-13-1"
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-11-7-"><td style="white-space:normal; text-align:left;" id="TBL-11-7-1"
|
||||
>>>>>>> development
|
||||
class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
@@ -294,7 +165,7 @@ class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
|
||||
<!--l. 704--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 708--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu11.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -311,6 +182,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu10.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 704--><p class="indent" > <a
|
||||
<!--l. 708--><p class="indent" > <a
|
||||
id="tailuserhtmlsu10.html"></a>
|
||||
</body></html>
|
||||
|
||||
+31
-116
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 704--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 708--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu12.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -34,8 +34,8 @@ class="cmr-12">Method smoothers</span><span
|
||||
class="cmr-12">_build</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 707--><p class="noindent" >
|
||||
<!--l. 708--><p class="noindent" ><span class="lstinline"></span><span
|
||||
<!--l. 711--><p class="noindent" >
|
||||
<!--l. 712--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
@@ -57,7 +57,7 @@ class="cmtt-12">,</span><span
|
||||
class="cmtt-12">imold</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 711--><p class="noindent" ><span
|
||||
<!--l. 715--><p class="noindent" ><span
|
||||
class="cmr-12">This method builds the smoothers and the coarsest-level solvers for the multilevel</span>
|
||||
<span
|
||||
class="cmr-12">preconditioner </span><span class="lstinline"></span><span
|
||||
@@ -75,27 +75,17 @@ class="cmr-12"> </span><a
|
||||
href="userhtmlsu10.html#x20-190005.3"><span
|
||||
class="cmr-12">5.3</span><!--tex4ht:ref: sec:hier_bld --></a><span
|
||||
class="cmr-12">).</span>
|
||||
<!--l. 718--><p class="noindent" ><span
|
||||
<!--l. 722--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-12" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
<<<<<<< HEAD
|
||||
><colgroup id="TBL-13-1g"><col
|
||||
id="TBL-13-1"><col
|
||||
id="TBL-13-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:normal; text-align:left;" id="TBL-13-1-1"
|
||||
class="td11"><!--l. 765--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-1-2"
|
||||
class="td11"><!--l. 765--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
><colgroup id="TBL-12-1g"><col
|
||||
id="TBL-12-1"><col
|
||||
id="TBL-12-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:normal; text-align:left;" id="TBL-12-1-1"
|
||||
class="td11"><!--l. 721--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 725--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-1-2"
|
||||
class="td11"><!--l. 721--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 725--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
@@ -109,15 +99,9 @@ class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-2-"><td style="white-space:normal; text-align:left;" id="TBL-13-2-1"
|
||||
class="td11"><!--l. 766--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-2-2"
|
||||
class="td11"><!--l. 766--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:normal; text-align:left;" id="TBL-12-2-1"
|
||||
class="td11"><!--l. 722--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-2-2"
|
||||
class="td11"><!--l. 722--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 726--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-2-2"
|
||||
class="td11"><!--l. 726--><p class="noindent" ><span
|
||||
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
|
||||
<span
|
||||
class="cmr-12">to be preconditioned. Note that </span><span
|
||||
@@ -136,17 +120,10 @@ class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:normal; text-align:left;" id="TBL-13-3-1"
|
||||
class="td11"><!--l. 770--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-13-3-2"
|
||||
class="td11"><!--l. 770--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:normal; text-align:left;" id="TBL-12-3-1"
|
||||
class="td11"><!--l. 726--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 730--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-12-3-2"
|
||||
class="td11"><!--l. 726--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 730--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_desc_type</span><span
|
||||
@@ -158,15 +135,9 @@ class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:normal; text-align:left;" id="TBL-13-4-1"
|
||||
class="td11"><!--l. 771--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-4-2"
|
||||
class="td11"><!--l. 771--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:normal; text-align:left;" id="TBL-12-4-1"
|
||||
class="td11"><!--l. 727--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-4-2"
|
||||
class="td11"><!--l. 727--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 731--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-4-2"
|
||||
class="td11"><!--l. 731--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor of </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span><span
|
||||
class="cmr-12">. See the PSBLAS User’s Guide</span>
|
||||
@@ -178,17 +149,10 @@ class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:normal; text-align:left;" id="TBL-13-5-1"
|
||||
class="td11"><!--l. 773--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-5-2"
|
||||
class="td11"><!--l. 773--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:normal; text-align:left;" id="TBL-12-5-1"
|
||||
class="td11"><!--l. 729--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 733--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-5-2"
|
||||
class="td11"><!--l. 729--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 733--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
@@ -198,32 +162,19 @@ class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:normal; text-align:left;" id="TBL-13-6-1"
|
||||
class="td11"><!--l. 774--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-6-2"
|
||||
class="td11"><!--l. 774--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:normal; text-align:left;" id="TBL-12-6-1"
|
||||
class="td11"><!--l. 730--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-6-2"
|
||||
class="td11"><!--l. 730--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 734--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-6-2"
|
||||
class="td11"><!--l. 734--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-7-"><td style="white-space:normal; text-align:left;" id="TBL-13-7-1"
|
||||
class="td11"><!--l. 775--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-7-2"
|
||||
class="td11"><!--l. 775--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:normal; text-align:left;" id="TBL-12-7-1"
|
||||
class="td11"><!--l. 731--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 735--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-7-2"
|
||||
class="td11"><!--l. 731--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 735--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
@@ -239,15 +190,9 @@ class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-8-"><td style="white-space:normal; text-align:left;" id="TBL-13-8-1"
|
||||
class="td11"><!--l. 776--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-8-2"
|
||||
class="td11"><!--l. 776--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-8-"><td style="white-space:normal; text-align:left;" id="TBL-12-8-1"
|
||||
class="td11"><!--l. 732--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-8-2"
|
||||
class="td11"><!--l. 732--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 736--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-8-2"
|
||||
class="td11"><!--l. 736--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
|
||||
@@ -259,17 +204,10 @@ class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-9-"><td style="white-space:normal; text-align:left;" id="TBL-13-9-1"
|
||||
class="td11"><!--l. 780--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">vmold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-9-2"
|
||||
class="td11"><!--l. 780--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-9-"><td style="white-space:normal; text-align:left;" id="TBL-12-9-1"
|
||||
class="td11"><!--l. 736--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 740--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">vmold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-9-2"
|
||||
class="td11"><!--l. 736--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 740--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
@@ -285,30 +223,17 @@ class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-10-"><td style="white-space:normal; text-align:left;" id="TBL-13-10-1"
|
||||
class="td11"><!--l. 781--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-10-2"
|
||||
class="td11"><!--l. 781--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-10-"><td style="white-space:normal; text-align:left;" id="TBL-12-10-1"
|
||||
class="td11"><!--l. 737--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-10-2"
|
||||
class="td11"><!--l. 737--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 741--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-10-2"
|
||||
class="td11"><!--l. 741--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal vector components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-11-"><td style="white-space:normal; text-align:left;" id="TBL-13-11-1"
|
||||
class="td11"><!--l. 783--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">imold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-11-2"
|
||||
class="td11"><!--l. 783--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-11-"><td style="white-space:normal; text-align:left;" id="TBL-12-11-1"
|
||||
class="td11"><!--l. 739--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 743--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">imold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-11-2"
|
||||
class="td11"><!--l. 739--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 743--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_i_base_vect_type</span><span
|
||||
@@ -322,24 +247,14 @@ class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-12-"><td style="white-space:normal; text-align:left;" id="TBL-13-12-1"
|
||||
class="td11"><!--l. 784--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-12-2"
|
||||
class="td11"><!--l. 784--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-12-"><td style="white-space:normal; text-align:left;" id="TBL-12-12-1"
|
||||
class="td11"><!--l. 740--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-12-2"
|
||||
class="td11"><!--l. 740--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 744--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-12-2"
|
||||
class="td11"><!--l. 744--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal integer vector components;</span>
|
||||
<span
|
||||
class="cmr-12">this allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-13-"><td style="white-space:normal; text-align:left;" id="TBL-13-13-1"
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-13-"><td style="white-space:normal; text-align:left;" id="TBL-12-13-1"
|
||||
>>>>>>> development
|
||||
class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
@@ -347,7 +262,7 @@ class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
|
||||
<!--l. 746--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 750--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu12.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -364,6 +279,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu11.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 746--><p class="indent" > <a
|
||||
<!--l. 750--><p class="indent" > <a
|
||||
id="tailuserhtmlsu11.html"></a>
|
||||
</body></html>
|
||||
|
||||
+32
-180
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 746--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 750--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu13.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -33,8 +33,8 @@ class="cmr-12">5.5 </span></span> <a
|
||||
class="cmr-12">Method build</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 748--><p class="noindent" >
|
||||
<!--l. 749--><p class="noindent" ><span class="lstinline"></span><span
|
||||
<!--l. 752--><p class="noindent" >
|
||||
<!--l. 753--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
@@ -54,7 +54,7 @@ class="cmtt-12">,</span><span
|
||||
class="cmtt-12">imold</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 752--><p class="noindent" ><span
|
||||
<!--l. 756--><p class="noindent" ><span
|
||||
class="cmr-12">This method builds the preconditioner </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span> <span
|
||||
class="cmr-12">according to the requirements made by the</span>
|
||||
@@ -83,56 +83,17 @@ class="cmtt-12">smoothers_build</span><span
|
||||
class="cmr-12">, whose nomenclature would however be somewhat unnatural when</span>
|
||||
<span
|
||||
class="cmr-12">dealing with simple one-level preconditioners.</span>
|
||||
<!--l. 762--><p class="noindent" ><span
|
||||
<!--l. 766--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-13" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
<<<<<<< HEAD
|
||||
><colgroup id="TBL-14-1g"><col
|
||||
id="TBL-14-1"><col
|
||||
id="TBL-14-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:normal; text-align:left;" id="TBL-14-1-1"
|
||||
class="td11"><!--l. 812--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">x</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-1-2"
|
||||
class="td11"><!--l. 812--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">kind_parameter</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">, dimension(:), intent(in)—.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-2-"><td style="white-space:normal; text-align:left;" id="TBL-14-2-1"
|
||||
class="td11"><!--l. 813--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-2-2"
|
||||
class="td11"><!--l. 813--><p class="noindent" ><span
|
||||
class="cmr-12">The local part of the vector </span><span
|
||||
class="cmmi-12">x</span><span
|
||||
class="cmr-12">. Note that </span><span
|
||||
class="cmti-12">type </span><span
|
||||
class="cmr-12">and </span><span
|
||||
class="cmti-12">kind</span><span
|
||||
class="cmti-12">_parameter</span>
|
||||
<span
|
||||
class="cmr-12">must be chosen according to the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">real</span><span
|
||||
class="cmr-12">/</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">complex</span><span
|
||||
class="cmr-12">, single/double</span>
|
||||
<span
|
||||
class="cmr-12">precision version of AMG4PSBLAS under use.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:normal; text-align:left;" id="TBL-14-3-1"
|
||||
class="td11"><!--l. 816--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">y</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-3-2"
|
||||
class="td11"><!--l. 816--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="lstinline"></span><span
|
||||
=======
|
||||
><colgroup id="TBL-13-1g"><col
|
||||
id="TBL-13-1"><col
|
||||
id="TBL-13-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:normal; text-align:left;" id="TBL-13-1-1"
|
||||
class="td11"><!--l. 765--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 769--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-1-2"
|
||||
class="td11"><!--l. 765--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 769--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
@@ -141,29 +102,15 @@ class="cmtt-12">spmat_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:normal; text-align:left;" id="TBL-14-4-1"
|
||||
class="td11"><!--l. 817--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-4-2"
|
||||
class="td11"><!--l. 817--><p class="noindent" ><span
|
||||
class="cmr-12">The local part of the vector </span><span
|
||||
class="cmmi-12">y</span><span
|
||||
class="cmr-12">. Note that </span><span
|
||||
class="cmti-12">type </span><span
|
||||
class="cmr-12">and </span><span
|
||||
class="cmti-12">kind</span><span
|
||||
class="cmti-12">_parameter</span>
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-13-2-"><td style="white-space:normal; text-align:left;" id="TBL-13-2-1"
|
||||
class="td11"><!--l. 766--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-2-2"
|
||||
class="td11"><!--l. 766--><p class="noindent" ><span
|
||||
class="td11"><!--l. 770--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-2-2"
|
||||
class="td11"><!--l. 770--><p class="noindent" ><span
|
||||
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
|
||||
>>>>>>> development
|
||||
<span
|
||||
class="cmr-12">to be preconditioned. Note that </span><span
|
||||
class="cmti-12">x </span><span
|
||||
@@ -181,17 +128,10 @@ class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:normal; text-align:left;" id="TBL-14-5-1"
|
||||
class="td11"><!--l. 820--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-14-5-2"
|
||||
class="td11"><!--l. 820--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:normal; text-align:left;" id="TBL-13-3-1"
|
||||
class="td11"><!--l. 770--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 774--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-13-3-2"
|
||||
class="td11"><!--l. 770--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 774--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_desc_type</span><span
|
||||
@@ -203,19 +143,12 @@ class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:normal; text-align:left;" id="TBL-14-6-1"
|
||||
class="td11"><!--l. 821--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-6-2"
|
||||
class="td11"><!--l. 821--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor associated to the matrix to be</span>
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:normal; text-align:left;" id="TBL-13-4-1"
|
||||
class="td11"><!--l. 771--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-4-2"
|
||||
class="td11"><!--l. 771--><p class="noindent" ><span
|
||||
class="td11"><!--l. 775--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-4-2"
|
||||
class="td11"><!--l. 775--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor of </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span><span
|
||||
class="cmr-12">. See the PSBLAS User’s Guide</span>
|
||||
>>>>>>> development
|
||||
<span
|
||||
class="cmr-12">for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
@@ -224,17 +157,10 @@ class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:normal; text-align:left;" id="TBL-14-7-1"
|
||||
class="td11"><!--l. 823--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-7-2"
|
||||
class="td11"><!--l. 823--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:normal; text-align:left;" id="TBL-13-5-1"
|
||||
class="td11"><!--l. 773--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 777--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-5-2"
|
||||
class="td11"><!--l. 773--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 777--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
@@ -244,34 +170,20 @@ class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-14-8-"><td style="white-space:normal; text-align:left;" id="TBL-14-8-1"
|
||||
class="td11"><!--l. 824--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-8-2"
|
||||
class="td11"><!--l. 824--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:normal; text-align:left;" id="TBL-13-6-1"
|
||||
class="td11"><!--l. 774--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-6-2"
|
||||
class="td11"><!--l. 774--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 778--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-6-2"
|
||||
class="td11"><!--l. 778--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-14-9-"><td style="white-space:normal; text-align:left;" id="TBL-14-9-1"
|
||||
class="td11"><!--l. 825--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">trans</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-9-2"
|
||||
class="td11"><!--l. 825--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">character</span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-13-7-"><td style="white-space:normal; text-align:left;" id="TBL-13-7-1"
|
||||
class="td11"><!--l. 775--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 779--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-7-2"
|
||||
class="td11"><!--l. 775--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 779--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
@@ -286,46 +198,10 @@ class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-14-10-"><td style="white-space:normal; text-align:left;" id="TBL-14-10-1"
|
||||
class="td11"><!--l. 826--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-10-2"
|
||||
class="td11"><!--l. 826--><p class="noindent" ><span
|
||||
class="cmr-12">If </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">trans</span> <span
|
||||
class="cmr-12">= </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">N</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">n</span><span
|
||||
class="cmtt-12">’</span> <span
|
||||
class="cmr-12">then </span><span
|
||||
class="cmmi-12">op</span><span
|
||||
class="cmr-12">(</span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">) = </span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">; if </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">trans</span> <span
|
||||
class="cmr-12">= </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">T</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">t</span><span
|
||||
class="cmtt-12">’</span>
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-13-8-"><td style="white-space:normal; text-align:left;" id="TBL-13-8-1"
|
||||
class="td11"><!--l. 776--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-8-2"
|
||||
class="td11"><!--l. 776--><p class="noindent" ><span
|
||||
class="td11"><!--l. 780--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-8-2"
|
||||
class="td11"><!--l. 780--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
|
||||
>>>>>>> development
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
|
||||
<span
|
||||
@@ -336,36 +212,16 @@ class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-14-11-"><td style="white-space:normal; text-align:left;" id="TBL-14-11-1"
|
||||
class="td11"><!--l. 830--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">work</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-11-2"
|
||||
class="td11"><!--l. 830--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">kind_parameter</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">, dimension(:), optional, target—.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-12-"><td style="white-space:normal; text-align:left;" id="TBL-14-12-1"
|
||||
class="td11"><!--l. 831--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-12-2"
|
||||
class="td11"><!--l. 831--><p class="noindent" ><span
|
||||
class="cmr-12">Workspace. Its size should be at least </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">4</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">*</span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-13-9-"><td style="white-space:normal; text-align:left;" id="TBL-13-9-1"
|
||||
class="td11"><!--l. 780--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 784--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">vmold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-9-2"
|
||||
class="td11"><!--l. 780--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 784--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">_base_vect_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
@@ -376,16 +232,16 @@ class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-10-"><td style="white-space:normal; text-align:left;" id="TBL-13-10-1"
|
||||
class="td11"><!--l. 781--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-10-2"
|
||||
class="td11"><!--l. 781--><p class="noindent" ><span
|
||||
class="td11"><!--l. 785--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-10-2"
|
||||
class="td11"><!--l. 785--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal vector components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-11-"><td style="white-space:normal; text-align:left;" id="TBL-13-11-1"
|
||||
class="td11"><!--l. 783--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 787--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">imold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-11-2"
|
||||
class="td11"><!--l. 783--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 787--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_i_base_vect_type</span><span
|
||||
@@ -400,19 +256,15 @@ class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-12-"><td style="white-space:normal; text-align:left;" id="TBL-13-12-1"
|
||||
class="td11"><!--l. 784--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-12-2"
|
||||
class="td11"><!--l. 784--><p class="noindent" ><span
|
||||
class="td11"><!--l. 788--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-12-2"
|
||||
class="td11"><!--l. 788--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal integer vector components;</span>
|
||||
<span
|
||||
class="cmr-12">this allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-14-13-"><td style="white-space:normal; text-align:left;" id="TBL-14-13-1"
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-13-13-"><td style="white-space:normal; text-align:left;" id="TBL-13-13-1"
|
||||
>>>>>>> development
|
||||
class="td11"> </td> </tr></table></div>
|
||||
<!--l. 789--><p class="noindent" ><span
|
||||
<!--l. 793--><p class="noindent" ><span
|
||||
class="cmr-12">The method can be used to build multilevel preconditioners too.</span>
|
||||
|
||||
|
||||
@@ -420,7 +272,7 @@ class="cmr-12">The method can be used to build multilevel preconditioners too.</
|
||||
|
||||
|
||||
|
||||
<!--l. 794--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 798--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu13.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -437,6 +289,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu12.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 794--><p class="indent" > <a
|
||||
<!--l. 798--><p class="indent" > <a
|
||||
id="tailuserhtmlsu12.html"></a>
|
||||
</body></html>
|
||||
|
||||
+31
-51
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 794--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 798--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu14.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -33,8 +33,8 @@ class="cmr-12">5.6 </span></span> <a
|
||||
class="cmr-12">Method apply</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 796--><p class="noindent" >
|
||||
<!--l. 797--><p class="noindent" ><span class="lstinline"></span><span
|
||||
<!--l. 800--><p class="noindent" >
|
||||
<!--l. 801--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
@@ -55,7 +55,7 @@ class="cmtt-12">,</span><span
|
||||
class="cmtt-12">work</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 800--><p class="noindent" ><span
|
||||
<!--l. 804--><p class="noindent" ><span
|
||||
class="cmr-12">This method computes </span><span
|
||||
class="cmmi-12">y </span><span
|
||||
class="cmr-12">= </span><span
|
||||
@@ -89,26 +89,17 @@ class="cmtt-12">psb_krylov</span> <span
|
||||
class="cmr-12">and hence it is</span>
|
||||
<span
|
||||
class="cmr-12">completely transparent to the user.</span>
|
||||
<!--l. 809--><p class="noindent" ><span
|
||||
<!--l. 813--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-14" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
<<<<<<< HEAD
|
||||
><colgroup id="TBL-15-1g"><col
|
||||
id="TBL-15-1"><col
|
||||
id="TBL-15-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:normal; text-align:left;" id="TBL-15-1-1"
|
||||
class="td11"><!--l. 852--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-15-1-2"
|
||||
class="td11"><!--l. 852--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
><colgroup id="TBL-14-1g"><col
|
||||
id="TBL-14-1"><col
|
||||
id="TBL-14-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:normal; text-align:left;" id="TBL-14-1-1"
|
||||
class="td11"><!--l. 812--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 816--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">x</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-1-2"
|
||||
class="td11"><!--l. 812--><p class="noindent" ><span
|
||||
class="td11"><!--l. 816--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">kind_parameter</span><span
|
||||
@@ -116,8 +107,8 @@ class="cmtt-12">)</span><span
|
||||
class="cmr-12">, dimension(:), intent(in)—.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-2-"><td style="white-space:normal; text-align:left;" id="TBL-14-2-1"
|
||||
class="td11"><!--l. 813--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-2-2"
|
||||
class="td11"><!--l. 813--><p class="noindent" ><span
|
||||
class="td11"><!--l. 817--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-2-2"
|
||||
class="td11"><!--l. 817--><p class="noindent" ><span
|
||||
class="cmr-12">The local part of the vector </span><span
|
||||
class="cmmi-12">x</span><span
|
||||
class="cmr-12">. Note that </span><span
|
||||
@@ -135,9 +126,9 @@ class="cmr-12">, single/double</span>
|
||||
class="cmr-12">precision version of AMG4PSBLAS under use.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:normal; text-align:left;" id="TBL-14-3-1"
|
||||
class="td11"><!--l. 816--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 820--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">y</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-3-2"
|
||||
class="td11"><!--l. 816--><p class="noindent" ><span
|
||||
class="td11"><!--l. 820--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">kind_parameter</span><span
|
||||
@@ -145,8 +136,8 @@ class="cmtt-12">)</span><span
|
||||
class="cmr-12">, dimension(:), intent(out)—.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:normal; text-align:left;" id="TBL-14-4-1"
|
||||
class="td11"><!--l. 817--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-4-2"
|
||||
class="td11"><!--l. 817--><p class="noindent" ><span
|
||||
class="td11"><!--l. 821--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-4-2"
|
||||
class="td11"><!--l. 821--><p class="noindent" ><span
|
||||
class="cmr-12">The local part of the vector </span><span
|
||||
class="cmmi-12">y</span><span
|
||||
class="cmr-12">. Note that </span><span
|
||||
@@ -164,9 +155,9 @@ class="cmr-12">, single/double</span>
|
||||
class="cmr-12">precision version of AMG4PSBLAS under use.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:normal; text-align:left;" id="TBL-14-5-1"
|
||||
class="td11"><!--l. 820--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 824--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-14-5-2"
|
||||
class="td11"><!--l. 820--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 824--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_desc_type</span><span
|
||||
@@ -179,17 +170,16 @@ class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:normal; text-align:left;" id="TBL-14-6-1"
|
||||
class="td11"><!--l. 821--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-6-2"
|
||||
class="td11"><!--l. 821--><p class="noindent" ><span
|
||||
class="td11"><!--l. 825--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-6-2"
|
||||
class="td11"><!--l. 825--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor associated to the matrix to be</span>
|
||||
<span
|
||||
class="cmr-12">preconditioned.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:normal; text-align:left;" id="TBL-14-7-1"
|
||||
class="td11"><!--l. 823--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 827--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-7-2"
|
||||
class="td11"><!--l. 823--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 827--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
@@ -199,15 +189,9 @@ class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:normal; text-align:left;" id="TBL-15-2-1"
|
||||
class="td11"><!--l. 853--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-2-2"
|
||||
class="td11"><!--l. 853--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-14-8-"><td style="white-space:normal; text-align:left;" id="TBL-14-8-1"
|
||||
class="td11"><!--l. 824--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-8-2"
|
||||
class="td11"><!--l. 824--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 828--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-8-2"
|
||||
class="td11"><!--l. 828--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
@@ -215,9 +199,9 @@ class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-9-"><td style="white-space:normal; text-align:left;" id="TBL-14-9-1"
|
||||
class="td11"><!--l. 825--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 829--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">trans</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-9-2"
|
||||
class="td11"><!--l. 825--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 829--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">character</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">len</span><span
|
||||
@@ -232,8 +216,8 @@ class="cmtt-12">in</span><span
|
||||
class="cmtt-12">).</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-10-"><td style="white-space:normal; text-align:left;" id="TBL-14-10-1"
|
||||
class="td11"><!--l. 826--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-10-2"
|
||||
class="td11"><!--l. 826--><p class="noindent" ><span
|
||||
class="td11"><!--l. 830--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-10-2"
|
||||
class="td11"><!--l. 830--><p class="noindent" ><span
|
||||
class="cmr-12">If </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">trans</span> <span
|
||||
class="cmr-12">= </span><span class="lstinline"></span><span
|
||||
@@ -307,9 +291,9 @@ class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">).</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-11-"><td style="white-space:normal; text-align:left;" id="TBL-14-11-1"
|
||||
class="td11"><!--l. 830--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 834--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">work</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-11-2"
|
||||
class="td11"><!--l. 830--><p class="noindent" ><span
|
||||
class="td11"><!--l. 834--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">kind_parameter</span><span
|
||||
@@ -317,8 +301,8 @@ class="cmtt-12">)</span><span
|
||||
class="cmr-12">, dimension(:), optional, target—.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-12-"><td style="white-space:normal; text-align:left;" id="TBL-14-12-1"
|
||||
class="td11"><!--l. 831--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-12-2"
|
||||
class="td11"><!--l. 831--><p class="noindent" ><span
|
||||
class="td11"><!--l. 835--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-12-2"
|
||||
class="td11"><!--l. 835--><p class="noindent" ><span
|
||||
class="cmr-12">Workspace. Its size should be at least </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">4</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
@@ -344,11 +328,7 @@ class="cmr-12">,</span>
|
||||
<span
|
||||
class="cmr-12">single/double precision version of AMG4PSBLAS under use.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:normal; text-align:left;" id="TBL-15-3-1"
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-14-13-"><td style="white-space:normal; text-align:left;" id="TBL-14-13-1"
|
||||
>>>>>>> development
|
||||
class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
@@ -359,7 +339,7 @@ class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
|
||||
<!--l. 840--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 844--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu14.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -376,6 +356,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu13.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 840--><p class="indent" > <a
|
||||
<!--l. 844--><p class="indent" > <a
|
||||
id="tailuserhtmlsu13.html"></a>
|
||||
</body></html>
|
||||
|
||||
+11
-104
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 840--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 844--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu15.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -33,8 +33,8 @@ class="cmr-12">5.7 </span></span> <a
|
||||
class="cmr-12">Method free</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 842--><p class="noindent" >
|
||||
<!--l. 843--><p class="noindent" ><span class="lstinline"></span><span
|
||||
<!--l. 846--><p class="noindent" >
|
||||
<!--l. 847--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
@@ -46,31 +46,21 @@ class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">)</span><br />
|
||||
</div>
|
||||
<!--l. 846--><p class="noindent" ><span
|
||||
<!--l. 850--><p class="noindent" ><span
|
||||
class="cmr-12">This method deallocates the preconditioner data structure </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 849--><p class="noindent" ><span
|
||||
<!--l. 853--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-15" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
<<<<<<< HEAD
|
||||
><colgroup id="TBL-16-1g"><col
|
||||
id="TBL-16-1"><col
|
||||
id="TBL-16-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:normal; text-align:left;" id="TBL-16-1-1"
|
||||
class="td11"><!--l. 873--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-1-2"
|
||||
class="td11"><!--l. 873--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
><colgroup id="TBL-15-1g"><col
|
||||
id="TBL-15-1"><col
|
||||
id="TBL-15-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:normal; text-align:left;" id="TBL-15-1-1"
|
||||
class="td11"><!--l. 852--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 856--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-15-1-2"
|
||||
class="td11"><!--l. 852--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 856--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
@@ -80,109 +70,26 @@ class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-16-2-"><td style="white-space:normal; text-align:left;" id="TBL-16-2-1"
|
||||
class="td11"><!--l. 874--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-2-2"
|
||||
class="td11"><!--l. 874--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:normal; text-align:left;" id="TBL-15-2-1"
|
||||
class="td11"><!--l. 853--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-2-2"
|
||||
class="td11"><!--l. 853--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 857--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-2-2"
|
||||
class="td11"><!--l. 857--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
<<<<<<< HEAD
|
||||
class="cmr-12">for details.</span></td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:normal; text-align:left;" id="TBL-16-3-1"
|
||||
class="td11"><!--l. 875--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">iout</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-3-2"
|
||||
class="td11"><!--l. 875--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-16-4-"><td style="white-space:normal; text-align:left;" id="TBL-16-4-1"
|
||||
class="td11"><!--l. 876--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-4-2"
|
||||
class="td11"><!--l. 876--><p class="noindent" ><span
|
||||
class="cmr-12">The id of the file where the preconditioner description will be</span>
|
||||
<span
|
||||
class="cmr-12">printed; the default is the standard output.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-16-5-"><td style="white-space:normal; text-align:left;" id="TBL-16-5-1"
|
||||
class="td11"><!--l. 878--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">root</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-5-2"
|
||||
class="td11"><!--l. 878--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-16-6-"><td style="white-space:normal; text-align:left;" id="TBL-16-6-1"
|
||||
class="td11"><!--l. 879--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-6-2"
|
||||
class="td11"><!--l. 879--><p class="noindent" ><span
|
||||
class="cmr-12">The id of the process where the preconditioner description</span>
|
||||
<span
|
||||
class="cmr-12">will be printed; the default is </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">psb_root_</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-16-7-"><td style="white-space:normal; text-align:left;" id="TBL-16-7-1"
|
||||
class="td11"><!--l. 881--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">verbosity</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-7-2"
|
||||
class="td11"><!--l. 881--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-16-8-"><td style="white-space:normal; text-align:left;" id="TBL-16-8-1"
|
||||
class="td11"><!--l. 882--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-8-2"
|
||||
class="td11"><!--l. 882--><p class="noindent" ><span
|
||||
class="cmr-12">The verbosity level of the description. Default value is 0. For</span>
|
||||
<span
|
||||
class="cmr-12">values higher than 0, it prints out further information, e.g., for</span>
|
||||
=======
|
||||
class="cmr-12">for</span>
|
||||
>>>>>>> development
|
||||
<span
|
||||
class="cmr-12">details.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-16-9-"><td style="white-space:normal; text-align:left;" id="TBL-16-9-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:normal; text-align:left;" id="TBL-15-3-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
>>>>>>> development
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--l. 859--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 863--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu15.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -199,6 +106,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu14.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 859--><p class="indent" > <a
|
||||
<!--l. 863--><p class="indent" > <a
|
||||
id="tailuserhtmlsu14.html"></a>
|
||||
</body></html>
|
||||
|
||||
+23
-353
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 859--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 863--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu16.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -33,8 +33,8 @@ class="cmr-12">5.8 </span></span> <a
|
||||
class="cmr-12">Method descr</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 861--><p class="noindent" >
|
||||
<!--l. 862--><p class="noindent" ><span class="lstinline"></span><span
|
||||
<!--l. 865--><p class="noindent" >
|
||||
<!--l. 866--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
@@ -54,7 +54,7 @@ class="cmtt-12"> </span><span
|
||||
class="cmtt-12">verbosity</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 865--><p class="noindent" ><span
|
||||
<!--l. 869--><p class="noindent" ><span
|
||||
class="cmr-12">This method prints a description of the preconditioner </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span> <span
|
||||
class="cmr-12">to the standard output or to a</span>
|
||||
@@ -68,27 +68,17 @@ class="cmtt-12">build</span><span
|
||||
class="cmr-12">, have</span>
|
||||
<span
|
||||
class="cmr-12">been called.</span>
|
||||
<!--l. 870--><p class="noindent" ><span
|
||||
<!--l. 874--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-16" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
<<<<<<< HEAD
|
||||
><colgroup id="TBL-17-1g"><col
|
||||
id="TBL-17-1"><col
|
||||
id="TBL-17-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-17-1-"><td style="white-space:normal; text-align:left;" id="TBL-17-1-1"
|
||||
class="td11"><!--l. 905--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-17-1-2"
|
||||
class="td11"><!--l. 905--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
><colgroup id="TBL-16-1g"><col
|
||||
id="TBL-16-1"><col
|
||||
id="TBL-16-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:normal; text-align:left;" id="TBL-16-1-1"
|
||||
class="td11"><!--l. 873--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 877--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-1-2"
|
||||
class="td11"><!--l. 873--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 877--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
@@ -98,40 +88,21 @@ class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-17-2-"><td style="white-space:normal; text-align:left;" id="TBL-17-2-1"
|
||||
class="td11"><!--l. 906--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-2-2"
|
||||
class="td11"><!--l. 906--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-16-2-"><td style="white-space:normal; text-align:left;" id="TBL-16-2-1"
|
||||
class="td11"><!--l. 874--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-2-2"
|
||||
class="td11"><!--l. 874--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 878--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-2-2"
|
||||
class="td11"><!--l. 878--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span></td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-17-3-"><td style="white-space:normal; text-align:left;" id="TBL-17-3-1"
|
||||
class="td11"><!--l. 907--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-17-3-2"
|
||||
class="td11"><!--l. 907--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">_base_sparse_mat</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:normal; text-align:left;" id="TBL-16-3-1"
|
||||
class="td11"><!--l. 875--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 879--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">iout</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-3-2"
|
||||
class="td11"><!--l. 875--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 879--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
@@ -141,355 +112,55 @@ class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-17-4-"><td style="white-space:normal; text-align:left;" id="TBL-17-4-1"
|
||||
class="td11"><!--l. 908--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-4-2"
|
||||
class="td11"><!--l. 908--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-16-4-"><td style="white-space:normal; text-align:left;" id="TBL-16-4-1"
|
||||
class="td11"><!--l. 876--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-4-2"
|
||||
class="td11"><!--l. 876--><p class="noindent" ><span
|
||||
class="td11"><!--l. 880--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-4-2"
|
||||
class="td11"><!--l. 880--><p class="noindent" ><span
|
||||
class="cmr-12">The id of the file where the preconditioner description will be</span>
|
||||
>>>>>>> development
|
||||
<span
|
||||
class="cmr-12">printed; the default is the standard output.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-17-5-"><td style="white-space:normal; text-align:left;" id="TBL-17-5-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
<!--l. 915--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.2 </span></span> <a
|
||||
id="x25-260005.9.2"></a><span
|
||||
class="cmr-12">Method: clone</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 917--><p class="noindent" >
|
||||
<!--l. 918--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">clone</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">pout</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">)</span><br />
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!--l. 921--><p class="noindent" ><span
|
||||
class="cmr-12">Create a (deep) copy of the preconditioner object.</span>
|
||||
<!--l. 924--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-18" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-18-1g"><col
|
||||
id="TBL-18-1"><col
|
||||
id="TBL-18-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-1-"><td style="white-space:normal; text-align:left;" id="TBL-18-1-1"
|
||||
class="td11"><!--l. 927--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">pout</span> </td><td style="white-space:normal; text-align:left;" id="TBL-18-1-2"
|
||||
class="td11"><!--l. 927--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">amg_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">prec_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-2-"><td style="white-space:normal; text-align:left;" id="TBL-18-2-1"
|
||||
class="td11"><!--l. 928--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-2-2"
|
||||
class="td11"><!--l. 928--><p class="noindent" ><span
|
||||
class="cmr-12">The copy of the preconditioner data structure. Note that </span><span
|
||||
class="cmti-12">x </span><span
|
||||
class="cmr-12">must</span>
|
||||
<span
|
||||
class="cmr-12">be chosen according to the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">real</span><span
|
||||
class="cmr-12">/</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">complex</span><span
|
||||
class="cmr-12">, single/double precision</span>
|
||||
<span
|
||||
class="cmr-12">version of AMG4PSBLAS under use.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-3-"><td style="white-space:normal; text-align:left;" id="TBL-18-3-1"
|
||||
class="td11"><!--l. 931--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-18-3-2"
|
||||
class="td11"><!--l. 931--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-16-5-"><td style="white-space:normal; text-align:left;" id="TBL-16-5-1"
|
||||
class="td11"><!--l. 878--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 882--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">root</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-5-2"
|
||||
class="td11"><!--l. 878--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 882--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
<<<<<<< HEAD
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-4-"><td style="white-space:normal; text-align:left;" id="TBL-18-4-1"
|
||||
class="td11"><!--l. 932--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-4-2"
|
||||
class="td11"><!--l. 932--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x27-310007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-5-"><td style="white-space:normal; text-align:left;" id="TBL-18-5-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
<!--l. 937--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.3 </span></span> <a
|
||||
id="x25-270005.9.3"></a><span
|
||||
class="cmr-12">Method: sizeof</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 939--><p class="noindent" >
|
||||
<!--l. 940--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">sz</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">=</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">sizeof</span><span
|
||||
class="cmtt-12">([</span><span
|
||||
class="cmtt-12">global</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<div class="tabular"> <table id="TBL-19" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-19-1g"><col
|
||||
id="TBL-19-1"><col
|
||||
id="TBL-19-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-19-1-"><td style="white-space:normal; text-align:left;" id="TBL-19-1-1"
|
||||
class="td11"><!--l. 944--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">global</span> </td> <td style="white-space:normal; text-align:left;" id="TBL-19-1-2"
|
||||
class="td11"><!--l. 944--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">logical</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
=======
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-19-2-"><td style="white-space:normal; text-align:left;" id="TBL-19-2-1"
|
||||
class="td11"><!--l. 945--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-19-2-2"
|
||||
class="td11"><!--l. 945--><p class="noindent" ><span
|
||||
class="cmr-12">Whether the global or local preconditioner memory occupation is</span>
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-16-6-"><td style="white-space:normal; text-align:left;" id="TBL-16-6-1"
|
||||
class="td11"><!--l. 879--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-6-2"
|
||||
class="td11"><!--l. 879--><p class="noindent" ><span
|
||||
class="td11"><!--l. 883--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-6-2"
|
||||
class="td11"><!--l. 883--><p class="noindent" ><span
|
||||
class="cmr-12">The id of the process where the preconditioner description</span>
|
||||
>>>>>>> development
|
||||
<span
|
||||
class="cmr-12">will be printed; the default is </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">psb_root_</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-19-3-"><td style="white-space:normal; text-align:left;" id="TBL-19-3-1"
|
||||
class="td11"> </td> </tr></table>
|
||||
</div> <span
|
||||
class="cmr-12">Return memory footprint in bytes.</span>
|
||||
<!--l. 952--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.4 </span></span> <a
|
||||
id="x25-280005.9.4"></a><span
|
||||
class="cmr-12">Method: allocate</span><span
|
||||
class="cmr-12">_wrk</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 954--><p class="noindent" >
|
||||
<!--l. 955--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">allocate_wrk</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">[,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">vmold</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 958--><p class="noindent" ><span
|
||||
class="cmr-12">Allocate internal work vectors. Each application of the preconditioner uses a number of</span>
|
||||
<span
|
||||
class="cmr-12">work vectors which are allocated internally as necessary; therefore allocation and</span>
|
||||
<span
|
||||
class="cmr-12">deallocation of memory occurs multiple times during the execution of a Krylov method.</span>
|
||||
<span
|
||||
class="cmr-12">In most cases this strategy is perfectly acceptable, but on some platforms, most</span>
|
||||
<span
|
||||
class="cmr-12">notably GPUs, memory allocation is a slow operation, and the default behaviour would</span>
|
||||
<span
|
||||
class="cmr-12">lead to a slowdown. This method allows to trade space for time by preallocating</span>
|
||||
<span
|
||||
class="cmr-12">the internal workspace outside of the invocation of a Krylov method. When</span>
|
||||
|
||||
|
||||
|
||||
<span
|
||||
class="cmr-12">using GPUs or other specialized devices, the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">vmold</span> <span
|
||||
class="cmr-12">argument is also necessary</span>
|
||||
<span
|
||||
class="cmr-12">to ensure the internal work vectors are of the appropriate dynamic type to</span>
|
||||
<span
|
||||
class="cmr-12">exploit the accelerator hardware; when allocation occurs internally this is</span>
|
||||
<span
|
||||
class="cmr-12">taken care of based on the dynamic type of the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">x</span> <span
|
||||
class="cmr-12">argument to the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">apply</span>
|
||||
<span
|
||||
class="cmr-12">method.</span>
|
||||
<!--l. 974--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-20" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-20-1g"><col
|
||||
id="TBL-20-1"><col
|
||||
id="TBL-20-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-20-1-"><td style="white-space:normal; text-align:left;" id="TBL-20-1-1"
|
||||
class="td11"><!--l. 977--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-20-1-2"
|
||||
class="td11"><!--l. 977--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-16-7-"><td style="white-space:normal; text-align:left;" id="TBL-16-7-1"
|
||||
class="td11"><!--l. 881--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 885--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">verbosity</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-7-2"
|
||||
class="td11"><!--l. 881--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="td11"><!--l. 885--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
<<<<<<< HEAD
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-20-2-"><td style="white-space:normal; text-align:left;" id="TBL-20-2-1"
|
||||
class="td11"><!--l. 978--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-2-2"
|
||||
class="td11"><!--l. 978--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x27-310007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-20-3-"><td style="white-space:normal; text-align:left;" id="TBL-20-3-1"
|
||||
class="td11"><!--l. 979--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">vmold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-20-3-2"
|
||||
class="td11"><!--l. 979--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">_base_vect_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
=======
|
||||
>>>>>>> development
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-20-4-"><td style="white-space:normal; text-align:left;" id="TBL-20-4-1"
|
||||
class="td11"><!--l. 980--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-4-2"
|
||||
class="td11"><!--l. 980--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal vector components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-20-5-"><td style="white-space:normal; text-align:left;" id="TBL-20-5-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
<!--l. 986--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.5 </span></span> <a
|
||||
id="x25-290005.9.5"></a><span
|
||||
class="cmr-12">Method: free</span><span
|
||||
class="cmr-12">_wrk</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 988--><p class="noindent" >
|
||||
<!--l. 989--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">free_wrk</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">)</span><br />
|
||||
</div>
|
||||
<!--l. 992--><p class="noindent" ><span
|
||||
class="cmr-12">Deallocate internal work vectors.</span>
|
||||
<!--l. 995--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-21" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-21-1g"><col
|
||||
id="TBL-21-1"><col
|
||||
id="TBL-21-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-21-1-"><td style="white-space:normal; text-align:left;" id="TBL-21-1-1"
|
||||
class="td11"><!--l. 998--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-21-1-2"
|
||||
class="td11"><!--l. 998--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-21-2-"><td style="white-space:normal; text-align:left;" id="TBL-21-2-1"
|
||||
class="td11"><!--l. 999--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-21-2-2"
|
||||
class="td11"><!--l. 999--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x27-310007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-21-3-"><td style="white-space:normal; text-align:left;" id="TBL-21-3-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-16-8-"><td style="white-space:normal; text-align:left;" id="TBL-16-8-1"
|
||||
class="td11"><!--l. 882--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-8-2"
|
||||
class="td11"><!--l. 882--><p class="noindent" ><span
|
||||
class="td11"><!--l. 886--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-8-2"
|
||||
class="td11"><!--l. 886--><p class="noindent" ><span
|
||||
class="cmr-12">The verbosity level of the description. Default value is 0. For</span>
|
||||
<span
|
||||
class="cmr-12">values higher than 0, it prints out further information, e.g., for</span>
|
||||
@@ -500,11 +171,10 @@ class="cmr-12">matrices on every process.</span>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-16-9-"><td style="white-space:normal; text-align:left;" id="TBL-16-9-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
>>>>>>> development
|
||||
|
||||
|
||||
|
||||
<!--l. 889--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 893--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu16.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -521,6 +191,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu15.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 889--><p class="indent" > <a
|
||||
<!--l. 893--><p class="indent" > <a
|
||||
id="tailuserhtmlsu15.html"></a>
|
||||
</body></html>
|
||||
|
||||
+57
-57
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 889--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 893--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu15.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
@@ -28,19 +28,19 @@ class="cmr-12">] </span></p></div>
|
||||
class="cmr-12">5.9 </span></span> <a
|
||||
id="x26-250005.9"></a><span
|
||||
class="cmr-12">Auxiliary Methods</span></h4>
|
||||
<!--l. 890--><p class="noindent" ><span
|
||||
<!--l. 894--><p class="noindent" ><span
|
||||
class="cmr-12">Various functionalities are implemented as additional methods of the preconditioner</span>
|
||||
<span
|
||||
class="cmr-12">object.</span>
|
||||
<!--l. 893--><p class="noindent" >
|
||||
<!--l. 897--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.1 </span></span> <a
|
||||
id="x26-260005.9.1"></a><span
|
||||
class="cmr-12">Method: dump</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 895--><p class="noindent" >
|
||||
<!--l. 896--><p class="noindent" ><span class="lstinline"></span><span
|
||||
<!--l. 899--><p class="noindent" >
|
||||
<!--l. 900--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
@@ -68,9 +68,9 @@ class="cmtt-12">,</span><span
|
||||
class="cmtt-12">global_num</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 899--><p class="noindent" ><span
|
||||
<!--l. 903--><p class="noindent" ><span
|
||||
class="cmr-12">Dump on file.</span>
|
||||
<!--l. 902--><p class="noindent" ><span
|
||||
<!--l. 906--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-17" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
@@ -78,9 +78,9 @@ cellspacing="0" cellpadding="0"
|
||||
id="TBL-17-1"><col
|
||||
id="TBL-17-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-17-1-"><td style="white-space:normal; text-align:left;" id="TBL-17-1-1"
|
||||
class="td11"><!--l. 905--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 909--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-17-1-2"
|
||||
class="td11"><!--l. 905--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 909--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
@@ -91,8 +91,8 @@ class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-17-2-"><td style="white-space:normal; text-align:left;" id="TBL-17-2-1"
|
||||
class="td11"><!--l. 906--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-2-2"
|
||||
class="td11"><!--l. 906--><p class="noindent" ><span
|
||||
class="td11"><!--l. 910--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-2-2"
|
||||
class="td11"><!--l. 910--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
@@ -100,9 +100,9 @@ class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-17-3-"><td style="white-space:normal; text-align:left;" id="TBL-17-3-1"
|
||||
class="td11"><!--l. 907--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 911--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-17-3-2"
|
||||
class="td11"><!--l. 907--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 911--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
@@ -119,8 +119,8 @@ class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-17-4-"><td style="white-space:normal; text-align:left;" id="TBL-17-4-1"
|
||||
class="td11"><!--l. 908--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-4-2"
|
||||
class="td11"><!--l. 908--><p class="noindent" ><span
|
||||
class="td11"><!--l. 912--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-4-2"
|
||||
class="td11"><!--l. 912--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
|
||||
@@ -134,15 +134,15 @@ class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-17-5-"><td style="white-space:normal; text-align:left;" id="TBL-17-5-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
<!--l. 915--><p class="noindent" >
|
||||
<!--l. 919--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.2 </span></span> <a
|
||||
id="x26-270005.9.2"></a><span
|
||||
class="cmr-12">Method: clone</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 917--><p class="noindent" >
|
||||
<!--l. 918--><p class="noindent" ><span class="lstinline"></span><span
|
||||
<!--l. 921--><p class="noindent" >
|
||||
<!--l. 922--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
@@ -157,9 +157,9 @@ class="cmtt-12">)</span><br />
|
||||
|
||||
|
||||
|
||||
<!--l. 921--><p class="noindent" ><span
|
||||
<!--l. 925--><p class="noindent" ><span
|
||||
class="cmr-12">Create a (deep) copy of the preconditioner object.</span>
|
||||
<!--l. 924--><p class="noindent" ><span
|
||||
<!--l. 928--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-18" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
@@ -167,9 +167,9 @@ cellspacing="0" cellpadding="0"
|
||||
id="TBL-18-1"><col
|
||||
id="TBL-18-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-1-"><td style="white-space:normal; text-align:left;" id="TBL-18-1-1"
|
||||
class="td11"><!--l. 927--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 931--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">pout</span> </td><td style="white-space:normal; text-align:left;" id="TBL-18-1-2"
|
||||
class="td11"><!--l. 927--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 931--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">amg_</span><span
|
||||
@@ -184,8 +184,8 @@ class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-2-"><td style="white-space:normal; text-align:left;" id="TBL-18-2-1"
|
||||
class="td11"><!--l. 928--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-2-2"
|
||||
class="td11"><!--l. 928--><p class="noindent" ><span
|
||||
class="td11"><!--l. 932--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-2-2"
|
||||
class="td11"><!--l. 932--><p class="noindent" ><span
|
||||
class="cmr-12">The copy of the preconditioner data structure. Note that </span><span
|
||||
class="cmti-12">x </span><span
|
||||
class="cmr-12">must</span>
|
||||
@@ -199,9 +199,9 @@ class="cmr-12">, single/double precision</span>
|
||||
class="cmr-12">version of AMG4PSBLAS under use.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-3-"><td style="white-space:normal; text-align:left;" id="TBL-18-3-1"
|
||||
class="td11"><!--l. 931--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 935--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-18-3-2"
|
||||
class="td11"><!--l. 931--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 935--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
@@ -212,8 +212,8 @@ class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-4-"><td style="white-space:normal; text-align:left;" id="TBL-18-4-1"
|
||||
class="td11"><!--l. 932--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-4-2"
|
||||
class="td11"><!--l. 932--><p class="noindent" ><span
|
||||
class="td11"><!--l. 936--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-4-2"
|
||||
class="td11"><!--l. 936--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
@@ -222,15 +222,15 @@ class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-5-"><td style="white-space:normal; text-align:left;" id="TBL-18-5-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
<!--l. 937--><p class="noindent" >
|
||||
<!--l. 941--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.3 </span></span> <a
|
||||
id="x26-280005.9.3"></a><span
|
||||
class="cmr-12">Method: sizeof</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 939--><p class="noindent" >
|
||||
<!--l. 940--><p class="noindent" ><span class="lstinline"></span><span
|
||||
<!--l. 943--><p class="noindent" >
|
||||
<!--l. 944--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">sz</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">=</span><span
|
||||
@@ -248,9 +248,9 @@ cellspacing="0" cellpadding="0"
|
||||
id="TBL-19-1"><col
|
||||
id="TBL-19-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-19-1-"><td style="white-space:normal; text-align:left;" id="TBL-19-1-1"
|
||||
class="td11"><!--l. 944--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 948--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">global</span> </td> <td style="white-space:normal; text-align:left;" id="TBL-19-1-2"
|
||||
class="td11"><!--l. 944--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 948--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">logical</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
@@ -258,8 +258,8 @@ class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-19-2-"><td style="white-space:normal; text-align:left;" id="TBL-19-2-1"
|
||||
class="td11"><!--l. 945--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-19-2-2"
|
||||
class="td11"><!--l. 945--><p class="noindent" ><span
|
||||
class="td11"><!--l. 949--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-19-2-2"
|
||||
class="td11"><!--l. 949--><p class="noindent" ><span
|
||||
class="cmr-12">Whether the global or local preconditioner memory occupation is</span>
|
||||
<span
|
||||
class="cmr-12">desired. Default: </span><span class="lstinline"></span><span
|
||||
@@ -272,7 +272,7 @@ class="cmr-12">.</span> </td
|
||||
class="td11"> </td> </tr></table>
|
||||
</div> <span
|
||||
class="cmr-12">Return memory footprint in bytes.</span>
|
||||
<!--l. 952--><p class="noindent" >
|
||||
<!--l. 956--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.4 </span></span> <a
|
||||
id="x26-290005.9.4"></a><span
|
||||
@@ -280,8 +280,8 @@ class="cmr-12">Method: allocate</span><span
|
||||
class="cmr-12">_wrk</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 954--><p class="noindent" >
|
||||
<!--l. 955--><p class="noindent" ><span class="lstinline"></span><span
|
||||
<!--l. 958--><p class="noindent" >
|
||||
<!--l. 959--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
@@ -294,7 +294,7 @@ class="cmtt-12"> </span><span
|
||||
class="cmtt-12">vmold</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 958--><p class="noindent" ><span
|
||||
<!--l. 962--><p class="noindent" ><span
|
||||
class="cmr-12">Allocate internal work vectors. Each application of the preconditioner uses a number of</span>
|
||||
<span
|
||||
class="cmr-12">work vectors which are allocated internally as necessary; therefore allocation and</span>
|
||||
@@ -326,7 +326,7 @@ class="cmr-12">argument to the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">apply</span>
|
||||
<span
|
||||
class="cmr-12">method.</span>
|
||||
<!--l. 974--><p class="noindent" ><span
|
||||
<!--l. 978--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-20" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
@@ -334,9 +334,9 @@ cellspacing="0" cellpadding="0"
|
||||
id="TBL-20-1"><col
|
||||
id="TBL-20-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-20-1-"><td style="white-space:normal; text-align:left;" id="TBL-20-1-1"
|
||||
class="td11"><!--l. 977--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 981--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-20-1-2"
|
||||
class="td11"><!--l. 977--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 981--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
@@ -347,8 +347,8 @@ class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-20-2-"><td style="white-space:normal; text-align:left;" id="TBL-20-2-1"
|
||||
class="td11"><!--l. 978--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-2-2"
|
||||
class="td11"><!--l. 978--><p class="noindent" ><span
|
||||
class="td11"><!--l. 982--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-2-2"
|
||||
class="td11"><!--l. 982--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
@@ -356,9 +356,9 @@ class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-20-3-"><td style="white-space:normal; text-align:left;" id="TBL-20-3-1"
|
||||
class="td11"><!--l. 979--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 983--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">vmold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-20-3-2"
|
||||
class="td11"><!--l. 979--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 983--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
@@ -375,15 +375,15 @@ class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-20-4-"><td style="white-space:normal; text-align:left;" id="TBL-20-4-1"
|
||||
class="td11"><!--l. 980--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-4-2"
|
||||
class="td11"><!--l. 980--><p class="noindent" ><span
|
||||
class="td11"><!--l. 984--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-4-2"
|
||||
class="td11"><!--l. 984--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal vector components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-20-5-"><td style="white-space:normal; text-align:left;" id="TBL-20-5-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
<!--l. 986--><p class="noindent" >
|
||||
<!--l. 990--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.5 </span></span> <a
|
||||
id="x26-300005.9.5"></a><span
|
||||
@@ -391,8 +391,8 @@ class="cmr-12">Method: free</span><span
|
||||
class="cmr-12">_wrk</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 988--><p class="noindent" >
|
||||
<!--l. 989--><p class="noindent" ><span class="lstinline"></span><span
|
||||
<!--l. 992--><p class="noindent" >
|
||||
<!--l. 993--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
@@ -402,9 +402,9 @@ class="cmtt-12">(</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">)</span><br />
|
||||
</div>
|
||||
<!--l. 992--><p class="noindent" ><span
|
||||
<!--l. 996--><p class="noindent" ><span
|
||||
class="cmr-12">Deallocate internal work vectors.</span>
|
||||
<!--l. 995--><p class="noindent" ><span
|
||||
<!--l. 999--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-21" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
@@ -412,9 +412,9 @@ cellspacing="0" cellpadding="0"
|
||||
id="TBL-21-1"><col
|
||||
id="TBL-21-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-21-1-"><td style="white-space:normal; text-align:left;" id="TBL-21-1-1"
|
||||
class="td11"><!--l. 998--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 1002--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-21-1-2"
|
||||
class="td11"><!--l. 998--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="td11"><!--l. 1002--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
@@ -425,8 +425,8 @@ class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-21-2-"><td style="white-space:normal; text-align:left;" id="TBL-21-2-1"
|
||||
class="td11"><!--l. 999--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-21-2-2"
|
||||
class="td11"><!--l. 999--><p class="noindent" ><span
|
||||
class="td11"><!--l. 1003--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-21-2-2"
|
||||
class="td11"><!--l. 1003--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
|
||||
@@ -45,11 +45,7 @@ class="cmr-12">As a minimal example consider the following:</span>
|
||||
<pre class="verbatim" id="verbatim-2">
|
||||
./configure --with-psblas=PSB-INSTALL-DIR
|
||||
</pre>
|
||||
<<<<<<< HEAD
|
||||
<!--l. 115--><p class="nopar" > <span
|
||||
=======
|
||||
<!--l. 127--><p class="nopar" > <span
|
||||
>>>>>>> development
|
||||
class="cmr-12">which assumes that the various MPI compilers and support libraries are available in</span>
|
||||
<span
|
||||
class="cmr-12">the standard directories on the system, and specifies only the PSBLAS install directory</span>
|
||||
@@ -4255,11 +4251,7 @@ class="cmr-12">might be configured with:</span>
|
||||
./configure --with-psblas=/opt/psblas-3.7/ \
|
||||
--with-umfpackincdir=/usr/include/suitesparse/
|
||||
</pre>
|
||||
<<<<<<< HEAD
|
||||
<!--l. 140--><p class="nopar" > <span
|
||||
=======
|
||||
<!--l. 152--><p class="nopar" > <span
|
||||
>>>>>>> development
|
||||
class="cmr-12">Once the configure script has completed execution, it will have generated the file</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">Make.inc</span></span></span> <span
|
||||
@@ -4296,11 +4288,7 @@ class="cmr-12">To build the library the user will now enter</span>
|
||||
<pre class="verbatim" id="verbatim-4">
|
||||
make
|
||||
</pre>
|
||||
<<<<<<< HEAD
|
||||
<!--l. 163--><p class="nopar" > <span
|
||||
=======
|
||||
<!--l. 175--><p class="nopar" > <span
|
||||
>>>>>>> development
|
||||
class="cmr-12">followed (optionally) by</span>
|
||||
|
||||
|
||||
@@ -4308,11 +4296,7 @@ class="cmr-12">followed (optionally) by</span>
|
||||
<pre class="verbatim" id="verbatim-5">
|
||||
make install
|
||||
</pre>
|
||||
<<<<<<< HEAD
|
||||
<!--l. 173--><p class="nopar" >
|
||||
=======
|
||||
<!--l. 185--><p class="nopar" >
|
||||
>>>>>>> development
|
||||
|
||||
|
||||
|
||||
|
||||
+150
-119
@@ -29,17 +29,21 @@ class="cmr-12">4.2 </span></span> <a
|
||||
id="x16-150004.2"></a><span
|
||||
class="cmr-12">GPU example</span></h4>
|
||||
<!--l. 422--><p class="noindent" ><span
|
||||
class="cmr-12">The code reported in Figure</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="#x16-15001r5"><span
|
||||
class="cmr-12">5</span><!--tex4ht:ref: fig:gpu-ex1 --></a> <span
|
||||
class="cmr-12">shows how to set up a program exploiting the combined</span>
|
||||
class="cmr-12">The code discussed here shows how to set up a program exploiting the combined GPU</span>
|
||||
<span
|
||||
class="cmr-12">GPU capabilities of PSBLAS and AMG4PSBLAS.</span>
|
||||
class="cmr-12">capabilities of PSBLAS and AMG4PSBLAS. The code example is available in the</span>
|
||||
<span
|
||||
class="cmr-12">source distribution directory </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">amg4psblas/examples/gpu</span></span></span><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 427--><p class="indent" > <span
|
||||
class="cmr-12">First of all, we need to include the appropriate modules and declare some auxiliary</span>
|
||||
<span
|
||||
class="cmr-12">variables:</span>
|
||||
|
||||
|
||||
|
||||
<!--l. 425--><p class="indent" > <a
|
||||
<!--l. 429--><p class="indent" > <a
|
||||
id="x16-15001r5"></a><hr class="float"><div class="float"
|
||||
>
|
||||
|
||||
@@ -47,126 +51,153 @@ class="cmr-12">GPU capabilities of PSBLAS and AMG4PSBLAS.</span>
|
||||
|
||||
<div class="center"
|
||||
>
|
||||
<<<<<<< HEAD
|
||||
<!--l. 44--><p class="noindent" >
|
||||
<!--l. 45--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">init</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">contxt</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">ptype</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">)</span></div>
|
||||
<!--l. 48--><p class="noindent" ><span
|
||||
class="cmr-12">This method allocates and initializes the preconditioner </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmr-12">, according to the</span>
|
||||
<span
|
||||
class="cmr-12">preconditioner type chosen by the user.</span>
|
||||
<!--l. 52--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-2" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-2-1g"><col
|
||||
id="TBL-2-1"><col
|
||||
id="TBL-2-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:normal; text-align:left;" id="TBL-2-1-1"
|
||||
class="td11"><!--l. 56--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">contxt</span> </td> <td style="white-space:normal; text-align:left;" id="TBL-2-1-2"
|
||||
class="td11"><!--l. 56--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_ctxt_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-2-"><td style="white-space:normal; text-align:left;" id="TBL-2-2-1"
|
||||
class="td11"><!--l. 57--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-2-2-2"
|
||||
class="td11"><!--l. 57--><p class="noindent" ><span
|
||||
class="cmr-12">The communication context.</span> </td></tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-3-"><td style="white-space:normal; text-align:left;" id="TBL-2-3-1"
|
||||
class="td11"><!--l. 58--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">ptype</span> </td> <td style="white-space:normal; text-align:left;" id="TBL-2-3-2"
|
||||
class="td11"><!--l. 58--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">character</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">len</span><span
|
||||
class="cmtt-12">=*),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span> <span
|
||||
class="cmr-12">.</span></td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-4-"><td style="white-space:normal; text-align:left;" id="TBL-2-4-1"
|
||||
class="td11"><!--l. 59--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-2-4-2"
|
||||
class="td11"><!--l. 59--><p class="noindent" ><span
|
||||
class="cmr-12">The type of preconditioner. Its values are specified in Table</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse4.html#x14-13015r1"><span
|
||||
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:normal; text-align:left;" id="TBL-2-5-1"
|
||||
class="td11"><!--l. 61--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-2-5-2"
|
||||
class="td11"><!--l. 61--><p class="noindent" ><span
|
||||
class="cmr-12">Note that strings are case insensitive.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-6-"><td style="white-space:normal; text-align:left;" id="TBL-2-6-1"
|
||||
class="td11"><!--l. 62--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-2-6-2"
|
||||
class="td11"><!--l. 62--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-7-"><td style="white-space:normal; text-align:left;" id="TBL-2-7-1"
|
||||
class="td11"><!--l. 63--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-2-7-2"
|
||||
class="td11"><!--l. 63--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x27-310007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-8-"><td style="white-space:normal; text-align:left;" id="TBL-2-8-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
=======
|
||||
<!--l. 437--><p class="noindent" >
|
||||
<!--l. 448--><p class="noindent" >
|
||||
<div class="minipage"><pre class="verbatim" id="verbatim-10">
|
||||
! build a one-level RAS with overlap 2 and ILU(0) on the local blocks.
|
||||
call P%init(’AS’,info)
|
||||
call P%set(’SUB_OVR’,2,info)
|
||||
call P%build(A,desc_A,info)
|
||||
... ...
|
||||
! solve Ax=b with preconditioned BiCGSTAB
|
||||
  call psb_krylov(’BICGSTAB’,A,P,b,x,tol,desc_A,info)
|
||||
program amg_dexample_gpu
|
||||
  use psb_base_mod
|
||||
  use amg_prec_mod
|
||||
  use psb_krylov_mod
|
||||
  use psb_util_mod
|
||||
  use psb_gpu_mod
|
||||
  use data_input
|
||||
  use amg_d_pde_mod
|
||||
  implicit none
|
||||
  .......
|
||||
  ! GPU variables
|
||||
  type(psb_d_hlg_sparse_mat) :: agmold
|
||||
  type(psb_d_vect_gpu)       :: vgmold
|
||||
  type(psb_i_vect_gpu)       :: igmold
|
||||
 
|
||||
</pre>
|
||||
<!--l. 448--><p class="nopar" ></div></div>
|
||||
<!--l. 467--><p class="nopar" ></div></div>
|
||||
<br /> <div class="caption"
|
||||
><span class="id">Listing 5: </span><span
|
||||
class="content">setup of a one-level Schwarz preconditioner.</span></div><!--tex4ht:label?: x16-15001r5 -->
|
||||
>>>>>>> development
|
||||
class="content">setup of a GPU-enabled test program part one.</span></div><!--tex4ht:label?: x16-15001r5 -->
|
||||
|
||||
|
||||
|
||||
</div><hr class="endfloat" />
|
||||
<!--l. 474--><p class="indent" > <span
|
||||
class="cmr-12">In this particular example we are choosing to employ a </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">HLG</span></span></span> <span
|
||||
class="cmr-12">data structure for</span>
|
||||
<span
|
||||
class="cmr-12">sparse matrices on GPUs; for more information please refer to the PSBLAS-EXT users’</span>
|
||||
<span
|
||||
class="cmr-12">guide.</span>
|
||||
<!--l. 478--><p class="indent" > <span
|
||||
class="cmr-12">We then have to initialize the GPU environment, and pass the appropriate MOLD</span>
|
||||
<span
|
||||
class="cmr-12">variables to the build methods (see also the PSBLAS and PSBLAS-EXT users’</span>
|
||||
<span
|
||||
class="cmr-12">guides).</span>
|
||||
|
||||
|
||||
|
||||
<!--l. 481--><p class="indent" > <a
|
||||
id="x16-15002r6"></a><hr class="float"><div class="float"
|
||||
>
|
||||
|
||||
|
||||
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 497--><p class="noindent" >
|
||||
<div class="minipage"><pre class="verbatim" id="verbatim-11">
|
||||
  call psb_init(ctxt)
|
||||
  call psb_info(ctxt,iam,np)
|
||||
  !
|
||||
  ! BEWARE: if you have NGPUS  per node, the default is to
|
||||
  ! attach to mod(IAM,NGPUS)
|
||||
  !
|
||||
  call psb_gpu_init(ictxt)
|
||||
  ......
|
||||
  t1 = psb_wtime()
|
||||
  call prec%smoothers_build(a,desc_a,info, amold=agmold, vmold=vgmold, imold=igmold)
|
||||
 
|
||||
</pre>
|
||||
<!--l. 512--><p class="nopar" ></div></div>
|
||||
<br /> <div class="caption"
|
||||
><span class="id">Listing 6: </span><span
|
||||
class="content">setup of a GPU-enabled test program part two.</span></div><!--tex4ht:label?: x16-15002r6 -->
|
||||
|
||||
|
||||
|
||||
</div><hr class="endfloat" />
|
||||
<!--l. 519--><p class="indent" > <span
|
||||
class="cmr-12">Finally, we convert the input matrix, the descriptor and the vectors to use a</span>
|
||||
<span
|
||||
class="cmr-12">GPU-enabled internal storage format. We then preallocate the preconditioner</span>
|
||||
<span
|
||||
class="cmr-12">workspace before entering the Krylov method. At the end of the code, we close the</span>
|
||||
<span
|
||||
class="cmr-12">GPU environment</span>
|
||||
|
||||
|
||||
|
||||
<!--l. 523--><p class="indent" > <a
|
||||
id="x16-15003r7"></a><hr class="float"><div class="float"
|
||||
>
|
||||
|
||||
|
||||
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 552--><p class="noindent" >
|
||||
<div class="minipage"><pre class="verbatim" id="verbatim-12">
|
||||
  call desc_a%cnv(mold=igmold)
|
||||
  call a%cscnv(info,mold=agmold)
|
||||
  call psb_geasb(x,desc_a,info,mold=vgmold)
|
||||
  call psb_geasb(b,desc_a,info,mold=vgmold)
|
||||
  !
|
||||
  ! iterative method parameters
|
||||
  !
|
||||
  call psb_barrier(ctxt)
|
||||
  call prec%allocate_wrk(info)
|
||||
  t1 = psb_wtime()
|
||||
  call psb_krylov(s_choice%kmethd,a,prec,b,x,s_choice%eps,&
|
||||
       & desc_a,info,itmax=s_choice%itmax,iter=iter,err=err,itrace=s_choice%itrace,&
|
||||
       & istop=s_choice%istopc,irst=s_choice%irst)
|
||||
  call prec%deallocate_wrk(info)
|
||||
  call psb_barrier(ctxt)
|
||||
  tslv = psb_wtime() - t1
|
||||
  ......
|
||||
  call psb_gpu_exit()
|
||||
  call psb_exit(ctxt)
|
||||
  stop
|
||||
 
|
||||
</pre>
|
||||
<!--l. 579--><p class="nopar" ></div></div>
|
||||
<br /> <div class="caption"
|
||||
><span class="id">Listing 7: </span><span
|
||||
class="content">setup of a GPU-enabled test program part three.</span></div><!--tex4ht:label?: x16-15003r7 -->
|
||||
|
||||
|
||||
|
||||
</div><hr class="endfloat" />
|
||||
<!--l. 587--><p class="indent" > <span
|
||||
class="cmr-12">It is very important to employ solvers that are suited to the GPU, i.e. solvers that</span>
|
||||
<span
|
||||
class="cmr-12">do NOT employ triangular system solve kernels. Solvers that satisfy this constraint</span>
|
||||
<span
|
||||
class="cmr-12">include:</span>
|
||||
<ul class="itemize1">
|
||||
<li class="itemize"><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">JACOBI</span></span></span>
|
||||
</li>
|
||||
<li class="itemize"><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">INVK</span></span></span>
|
||||
</li>
|
||||
<li class="itemize"><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">INVT</span></span></span>
|
||||
</li>
|
||||
<li class="itemize"><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">AINV</span></span></span></li></ul>
|
||||
<!--l. 596--><p class="noindent" ><span
|
||||
class="cmr-12">and their </span><span
|
||||
class="cmmi-12">ℓ</span><sub><span
|
||||
class="cmr-8">1</span></sub> <span
|
||||
class="cmr-12">variants.</span>
|
||||
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+358
-418
File diff suppressed because it is too large
Load Diff
+159
-19
@@ -419,41 +419,181 @@ call P%build(A,desc_A,info)
|
||||
|
||||
\subsection{GPU example\label{sec:gpu-example}}
|
||||
|
||||
The code reported in Figure~\ref{fig:gpu-ex1} shows how to set up a
|
||||
The code discussed here shows how to set up a
|
||||
program exploiting the combined GPU capabilities of PSBLAS and
|
||||
AMG4PSBLAS.
|
||||
AMG4PSBLAS. The code example is available in the source distribution
|
||||
directory \verb|amg4psblas/examples/gpu|.
|
||||
|
||||
First of all, we need to include the appropriate modules and
|
||||
declare some auxiliary variables:
|
||||
\begin{listing}[h!]
|
||||
\ifpdf
|
||||
\begin{minted}[breaklines=true,bgcolor=bg,fontsize=\small]{fortran}
|
||||
! build a one-level RAS with overlap 2 and ILU(0) on the local blocks.
|
||||
call P%init('AS',info)
|
||||
call P%set('SUB_OVR',2,info)
|
||||
call P%build(A,desc_A,info)
|
||||
... ...
|
||||
! solve Ax=b with preconditioned BiCGSTAB
|
||||
call psb_krylov('BICGSTAB',A,P,b,x,tol,desc_A,info)
|
||||
program amg_dexample_gpu
|
||||
use psb_base_mod
|
||||
use amg_prec_mod
|
||||
use psb_krylov_mod
|
||||
use psb_util_mod
|
||||
use psb_gpu_mod
|
||||
use data_input
|
||||
use amg_d_pde_mod
|
||||
implicit none
|
||||
.......
|
||||
! GPU variables
|
||||
type(psb_d_hlg_sparse_mat) :: agmold
|
||||
type(psb_d_vect_gpu) :: vgmold
|
||||
type(psb_i_vect_gpu) :: igmold
|
||||
\end{minted}
|
||||
\else
|
||||
\begin{center}
|
||||
\begin{minipage}{.90\textwidth}
|
||||
{\small
|
||||
\begin{verbatim}
|
||||
! build a one-level RAS with overlap 2 and ILU(0) on the local blocks.
|
||||
call P%init('AS',info)
|
||||
call P%set('SUB_OVR',2,info)
|
||||
call P%build(A,desc_A,info)
|
||||
... ...
|
||||
! solve Ax=b with preconditioned BiCGSTAB
|
||||
call psb_krylov('BICGSTAB',A,P,b,x,tol,desc_A,info)
|
||||
\end{verbatim}
|
||||
program amg_dexample_gpu
|
||||
use psb_base_mod
|
||||
use amg_prec_mod
|
||||
use psb_krylov_mod
|
||||
use psb_util_mod
|
||||
use psb_gpu_mod
|
||||
use data_input
|
||||
use amg_d_pde_mod
|
||||
implicit none
|
||||
.......
|
||||
! GPU variables
|
||||
type(psb_d_hlg_sparse_mat) :: agmold
|
||||
type(psb_d_vect_gpu) :: vgmold
|
||||
type(psb_i_vect_gpu) :: igmold
|
||||
|
||||
\end{verbatim}
|
||||
}
|
||||
\end{minipage}
|
||||
\end{center}
|
||||
\fi
|
||||
\caption{setup of a one-level Schwarz preconditioner.\label{fig:gpu-ex1}}
|
||||
\caption{setup of a GPU-enabled test program part one.\label{fig:gpu-ex1}}
|
||||
\end{listing}
|
||||
In this particular example we are choosing to employ a \verb|HLG| data
|
||||
structure for sparse matrices on GPUs; for more information please
|
||||
refer to the PSBLAS-EXT users' guide.
|
||||
|
||||
We then have to initialize the GPU environment, and pass the
|
||||
appropriate MOLD variables to the build methods (see also the PSBLAS
|
||||
and PSBLAS-EXT users' guides).
|
||||
\begin{listing}[h!]
|
||||
\ifpdf
|
||||
\begin{minted}[breaklines=true,bgcolor=bg,fontsize=\small]{fortran}
|
||||
call psb_init(ctxt)
|
||||
call psb_info(ctxt,iam,np)
|
||||
!
|
||||
! BEWARE: if you have NGPUS per node, the default is to
|
||||
! attach to mod(IAM,NGPUS)
|
||||
!
|
||||
call psb_gpu_init(ictxt)
|
||||
......
|
||||
t1 = psb_wtime()
|
||||
call prec%smoothers_build(a,desc_a,info, amold=agmold, vmold=vgmold, imold=igmold)
|
||||
|
||||
\end{minted}
|
||||
\else
|
||||
\begin{center}
|
||||
\begin{minipage}{.90\textwidth}
|
||||
{\small
|
||||
\begin{verbatim}
|
||||
call psb_init(ctxt)
|
||||
call psb_info(ctxt,iam,np)
|
||||
!
|
||||
! BEWARE: if you have NGPUS per node, the default is to
|
||||
! attach to mod(IAM,NGPUS)
|
||||
!
|
||||
call psb_gpu_init(ictxt)
|
||||
......
|
||||
t1 = psb_wtime()
|
||||
call prec%smoothers_build(a,desc_a,info, amold=agmold, vmold=vgmold, imold=igmold)
|
||||
|
||||
\end{verbatim}
|
||||
}
|
||||
\end{minipage}
|
||||
\end{center}
|
||||
\fi
|
||||
\caption{setup of a GPU-enabled test program part two.\label{fig:gpu-ex2}}
|
||||
\end{listing}
|
||||
Finally, we convert the input matrix, the descriptor and the vectors
|
||||
to use a GPU-enabled internal storage format.
|
||||
We then preallocate the preconditioner workspace before entering the
|
||||
Krylov method. At the end of the code, we close the GPU environment
|
||||
\begin{listing}[h!]
|
||||
\ifpdf
|
||||
\begin{minted}[breaklines=true,bgcolor=bg,fontsize=\small]{fortran}
|
||||
call desc_a%cnv(mold=igmold)
|
||||
call a%cscnv(info,mold=agmold)
|
||||
call psb_geasb(x,desc_a,info,mold=vgmold)
|
||||
call psb_geasb(b,desc_a,info,mold=vgmold)
|
||||
|
||||
!
|
||||
! iterative method parameters
|
||||
!
|
||||
call psb_barrier(ctxt)
|
||||
call prec%allocate_wrk(info)
|
||||
t1 = psb_wtime()
|
||||
call psb_krylov(s_choice%kmethd,a,prec,b,x,s_choice%eps,&
|
||||
& desc_a,info,itmax=s_choice%itmax,iter=iter,err=err,itrace=s_choice%itrace,&
|
||||
& istop=s_choice%istopc,irst=s_choice%irst)
|
||||
call prec%deallocate_wrk(info)
|
||||
call psb_barrier(ctxt)
|
||||
tslv = psb_wtime() - t1
|
||||
|
||||
......
|
||||
call psb_gpu_exit()
|
||||
call psb_exit(ctxt)
|
||||
stop
|
||||
|
||||
|
||||
\end{minted}
|
||||
\else
|
||||
\begin{center}
|
||||
\begin{minipage}{.90\textwidth}
|
||||
{\small
|
||||
\begin{verbatim}
|
||||
call desc_a%cnv(mold=igmold)
|
||||
call a%cscnv(info,mold=agmold)
|
||||
call psb_geasb(x,desc_a,info,mold=vgmold)
|
||||
call psb_geasb(b,desc_a,info,mold=vgmold)
|
||||
|
||||
!
|
||||
! iterative method parameters
|
||||
!
|
||||
call psb_barrier(ctxt)
|
||||
call prec%allocate_wrk(info)
|
||||
t1 = psb_wtime()
|
||||
call psb_krylov(s_choice%kmethd,a,prec,b,x,s_choice%eps,&
|
||||
& desc_a,info,itmax=s_choice%itmax,iter=iter,err=err,itrace=s_choice%itrace,&
|
||||
& istop=s_choice%istopc,irst=s_choice%irst)
|
||||
call prec%deallocate_wrk(info)
|
||||
call psb_barrier(ctxt)
|
||||
tslv = psb_wtime() - t1
|
||||
|
||||
......
|
||||
call psb_gpu_exit()
|
||||
call psb_exit(ctxt)
|
||||
stop
|
||||
|
||||
\end{verbatim}
|
||||
}
|
||||
\end{minipage}
|
||||
\end{center}
|
||||
\fi
|
||||
\caption{setup of a GPU-enabled test program part three.\label{fig:gpu-ex3}}
|
||||
\end{listing}
|
||||
|
||||
|
||||
It is very important to employ solvers that are suited
|
||||
to the GPU, i.e. solvers that do NOT employ triangular
|
||||
system solve kernels. Solvers that satisfy this constraint include:
|
||||
\begin{itemize}
|
||||
\item \verb|JACOBI|
|
||||
\item \verb|INVK|
|
||||
\item \verb|INVT|
|
||||
\item \verb|AINV|
|
||||
\end{itemize}
|
||||
and their $\ell_1$ variants.
|
||||
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
|
||||
@@ -88,8 +88,8 @@ terms: {\small
|
||||
}
|
||||
\pagebreak
|
||||
AMG4PSBLAS is distributed together with (a small part) of the graph-matching
|
||||
library MatchBox-P~\cite{MatchBoxP}. The relevant license is
|
||||
reproduced here:
|
||||
library MatchBox-P~\cite{MatchBoxP}. Per the license requirements, we reproduce
|
||||
the relative part here.
|
||||
{\small
|
||||
\begin{verbatim}
|
||||
// ***********************************************************************
|
||||
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
tmp/userguide.pdf
|
||||
@@ -202,7 +202,11 @@ been selected, the coarsest-level solver is changed to block-Jacobi,
|
||||
with the previously chosen solver applied to the local blocks.
|
||||
Likewise, the replicated layout can be used with any solver but SuperLu\_Dist and KRM;
|
||||
therefore, if SuperLu\_Dist or KRM have been previously set, the coarsest-level
|
||||
solver is changed to the default sequential solver.
|
||||
solver is changed to the default sequential solver.
|
||||
|
||||
In a parallel setting with many cores, we suggest to the users to change the default
|
||||
coarsest solver for using the KRM choice, i.e. a parallel distributed iterative solution of the
|
||||
coarsest system based on Krylov methods.
|
||||
|
||||
\textbf{Remark 4.} The argument \fortinline|idx| can be used to allow finer
|
||||
control for those solvers; for instance, by specifying the keyword
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
AMGDIR=../..
|
||||
AMGINCDIR=$(AMGDIR)/include
|
||||
include $(AMGINCDIR)/Make.inc.amg4psblas
|
||||
AMGMODDIR=$(AMGDIR)/modules
|
||||
AMGLIBDIR=$(AMGDIR)/lib
|
||||
AMG_LIBS=-L$(AMGLIBDIR) -lpsb_krylov -lamg_prec -lpsb_prec
|
||||
FINCLUDES=$(FMFLAG). $(FMFLAG)$(AMGMODDIR) $(FMFLAG)$(AMGINCDIR) $(PSBLAS_INCLUDES) $(FIFLAG).
|
||||
LINKOPT=
|
||||
|
||||
DGOBJS=amg_dexample_gpu.o data_input.o amg_dpde_mod.o
|
||||
|
||||
EXEDIR=./runs
|
||||
|
||||
all: amg_dexample_gpu
|
||||
|
||||
|
||||
amg_dexample_gpu: $(DGOBJS)
|
||||
$(FLINK) $(LINKOPT) $(DGOBJS) -o amg_dexample_gpu \
|
||||
$(AMG_LIBS) $(PSBLAS_LIBS) $(LDLIBS)
|
||||
/bin/mv amg_dexample_gpu $(EXEDIR)
|
||||
|
||||
amg_dexample_gpu.o: data_input.o amg_dpde_mod.o
|
||||
|
||||
clean:
|
||||
/bin/rm -f $(DGOBJS) *$(.mod) $(EXEDIR)/amg_dexample_gpu
|
||||
|
||||
lib:
|
||||
(cd ../../; make library)
|
||||
verycleanlib:
|
||||
(cd ../../; make veryclean)
|
||||
|
||||
@@ -0,0 +1,353 @@
|
||||
!
|
||||
!
|
||||
! AMG4PSBLAS version 1.0
|
||||
! Algebraic Multigrid Package
|
||||
! based on PSBLAS (Parallel Sparse BLAS version 3.7)
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
! Redistribution and use in source and binary forms, with or without
|
||||
! modification, are permitted provided that the following conditions
|
||||
! are met:
|
||||
! 1. Redistributions of source code must retain the above copyright
|
||||
! notice, this list of conditions and the following disclaimer.
|
||||
! 2. Redistributions in binary form must reproduce the above copyright
|
||||
! notice, this list of conditions, and the following disclaimer in the
|
||||
! documentation and/or other materials provided with the distribution.
|
||||
! 3. The name of the AMG4PSBLAS group or the names of its contributors may
|
||||
! not be used to endorse or promote products derived from this
|
||||
! software without specific written permission.
|
||||
!
|
||||
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
! PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AMG4PSBLAS GROUP OR ITS CONTRIBUTORS
|
||||
! BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
! File: amg_dexample_gpu.f90
|
||||
!
|
||||
! This sample program solves a linear system obtained by discretizing a
|
||||
! PDE with Dirichlet BCs. The solver is CG, coupled with one of the
|
||||
! following multi-level preconditioner, as explained in Section 4.1 of
|
||||
! the AMG4PSBLAS User's and Reference Guide:
|
||||
!
|
||||
! - choice = 1, the default multi-level preconditioner solver, i.e.,
|
||||
! V-cycle with decoupled smoothed aggregation, 1 hybrid forward/backward
|
||||
! GS sweep as pre/post-smoother and UMFPACK as coarsest-level
|
||||
! solver (Sec. 4.1, Listing 1)
|
||||
!
|
||||
! - choice = 2, a V-cycle preconditioner with 1 block-Jacobi sweep
|
||||
! (with ILU(0) on the blocks) as pre- and post-smoother, and 8 block-Jacobi
|
||||
! sweeps (with ILU(0) on the blocks) as coarsest-level solver (Sec. 4.1, Listing 2)
|
||||
!
|
||||
! - choice = 3, W-cycle preconditioner based on the coupled aggregation relying
|
||||
! on matching, with maximum size of aggregates equal to 8 and smoothed prolongators,
|
||||
! 2 hybrid forward/backward GS sweeps as pre/post-smoother, a distributed coarsest
|
||||
! matrix, and preconditioned Flexible Conjugate Gradient as coarsest-level solver
|
||||
! (Sec. 4.1, Listing 3)
|
||||
!
|
||||
! The matrix and the rhs are read from files (if an rhs is not available, the
|
||||
! unit rhs is set).
|
||||
!
|
||||
!
|
||||
! The PDE is a general second order equation in 3d
|
||||
!
|
||||
! a1 dd(u) a2 dd(u) a3 dd(u) b1 d(u) b2 d(u) b3 d(u)
|
||||
! - ------ - ------ - ------ + ----- + ------ + ------ + c u = f
|
||||
! dxdx dydy dzdz dx dy dz
|
||||
!
|
||||
! with Dirichlet boundary conditions
|
||||
! u = g
|
||||
!
|
||||
! on the unit cube 0<=x,y,z<=1.
|
||||
!
|
||||
!
|
||||
! Note that if b1=b2=b3=c=0., the PDE is the Laplace equation.
|
||||
!
|
||||
! In this sample program the index space of the discretized
|
||||
! computational domain is first numbered sequentially in a standard way,
|
||||
! then the corresponding vector is distributed according to a BLOCK
|
||||
! data distribution.
|
||||
!
|
||||
program amg_dexample_gpu
|
||||
use psb_base_mod
|
||||
use amg_prec_mod
|
||||
use psb_krylov_mod
|
||||
use psb_util_mod
|
||||
use psb_gpu_mod
|
||||
use data_input
|
||||
use amg_d_pde_mod
|
||||
implicit none
|
||||
|
||||
! input parameters
|
||||
|
||||
! sparse matrices
|
||||
type(psb_dspmat_type) :: A
|
||||
|
||||
! sparse matrices descriptor
|
||||
type(psb_desc_type):: desc_A
|
||||
|
||||
! preconditioner
|
||||
type(amg_dprec_type) :: P
|
||||
|
||||
! right-hand side, solution and residual vectors
|
||||
type(psb_d_vect_type) :: x, b, r
|
||||
! GPU variables
|
||||
type(psb_d_hlg_sparse_mat) :: agmold
|
||||
type(psb_d_vect_gpu) :: vgmold
|
||||
type(psb_i_vect_gpu) :: igmold
|
||||
|
||||
! solver and preconditioner parameters
|
||||
real(psb_dpk_) :: tol, err
|
||||
integer :: itmax, iter, istop
|
||||
integer :: nlev
|
||||
|
||||
! parallel environment parameters
|
||||
type(psb_ctxt_type) :: ctxt
|
||||
integer :: iam, np
|
||||
|
||||
! other variables
|
||||
integer :: choice
|
||||
integer :: i,info,j
|
||||
integer(psb_epk_) :: amatsize, precsize, descsize
|
||||
integer(psb_epk_) :: system_size
|
||||
integer :: idim, ierr, ircode
|
||||
real(psb_dpk_) :: resmx, resmxp
|
||||
real(psb_dpk_) :: t1, t2, tprec
|
||||
character(len=5) :: afmt='CSR'
|
||||
character(len=20) :: name, kmethod
|
||||
|
||||
! initialize the parallel environment
|
||||
|
||||
call psb_init(ctxt)
|
||||
call psb_info(ctxt,iam,np)
|
||||
!
|
||||
! BEWARE: if you have NGPUS per node, the default is to
|
||||
! attach to mod(IAM,NGPUS)
|
||||
!
|
||||
call psb_gpu_init(ictxt)
|
||||
|
||||
if (iam < 0) then
|
||||
! This should not happen, but just in case
|
||||
call psb_exit(ctxt)
|
||||
stop
|
||||
endif
|
||||
|
||||
name='amg_dexample_gpu'
|
||||
if(psb_get_errstatus() /= 0) goto 9999
|
||||
info=psb_success_
|
||||
call psb_set_errverbosity(2)
|
||||
!
|
||||
! Hello world
|
||||
!
|
||||
if (iam == psb_root_) then
|
||||
write(*,*) 'Welcome to AMG4PSBLAS version: ',amg_version_string_
|
||||
write(*,*) 'This is the ',trim(name),' sample program'
|
||||
end if
|
||||
write(*,*) 'Process ',iam,' running on device: ', psb_cuda_getDevice(),' out of', psb_cuda_getDeviceCount()
|
||||
write(*,*) 'Process ',iam,' device ', psb_cuda_getDevice(),' is a: ', trim(psb_gpu_DeviceName())
|
||||
|
||||
! get parameters
|
||||
|
||||
call get_parms(ctxt,choice,idim,itmax,tol)
|
||||
|
||||
! allocate and fill in the coefficient matrix, rhs and initial guess
|
||||
|
||||
call psb_barrier(ctxt)
|
||||
t1 = psb_wtime()
|
||||
call amg_gen_pde3d(ctxt,idim,a,b,x,desc_a,afmt,&
|
||||
& a1,a2,a3,b1,b2,b3,c,g,info)
|
||||
call psb_barrier(ctxt)
|
||||
t2 = psb_wtime() - t1
|
||||
if(info /= psb_success_) then
|
||||
info=psb_err_from_subroutine_
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
end if
|
||||
|
||||
if (iam == psb_root_) write(*,'("Overall matrix creation time : ",es12.5)')t2
|
||||
if (iam == psb_root_) write(*,'(" ")')
|
||||
|
||||
select case(choice)
|
||||
|
||||
case(1)
|
||||
|
||||
! initialize a V-cycle preconditioner with 4 Jacobi sweep
|
||||
! and 8 Jacobi sweeps as coarsest-level solver
|
||||
|
||||
call P%init(ctxt,'ML',info)
|
||||
call P%set('SMOOTHER_TYPE','JACOBI',info)
|
||||
call P%set('SMOOTHER_SWEEPS',4,info)
|
||||
call P%set('COARSE_SOLVE','JACOBI',info)
|
||||
call P%set('COARSE_SWEEPS',8,info)
|
||||
kmethod = 'CG'
|
||||
|
||||
case(2)
|
||||
|
||||
! initialize a V-cycle preconditioner based on the coupled aggregation relying on matching,
|
||||
! with maximum size of aggregates equal to 8 and smoothed prolongators,
|
||||
! Block-Jacobi smoother using approximate inverse INVK and
|
||||
! and 4 sweeps of INVK on he coarsest level
|
||||
|
||||
call P%init(ctxt,'ML',info)
|
||||
call P%set('PAR_AGGR_ALG','COUPLED',info)
|
||||
call P%set('AGGR_TYPE','MATCHBOXP',info)
|
||||
call P%set('AGGR_SIZE',8,info)
|
||||
call P%set('ML_CYCLE','WCYCLE',info)
|
||||
call P%set('SMOOTHER_SWEEPS',2,info)
|
||||
call P%set('SUB_SOLVE','INVK',info)
|
||||
call P%set('COARSE_SOLVE','INVK',info)
|
||||
call P%set('COARSE_MAT','DIST',info)
|
||||
kmethod = 'CG'
|
||||
|
||||
end select
|
||||
|
||||
call psb_barrier(ctxt)
|
||||
t1 = psb_wtime()
|
||||
|
||||
! build the preconditioner
|
||||
call P%hierarchy_build(A,desc_A,info)
|
||||
call P%smoothers_build(A,desc_A,info, amold=agmold, vmold=vgmold, imold=igmold)
|
||||
|
||||
tprec = psb_wtime()-t1
|
||||
call psb_amx(ctxt, tprec)
|
||||
|
||||
if (info /= psb_success_) then
|
||||
call psb_errpush(psb_err_from_subroutine_,name,a_err='amg_precbld')
|
||||
goto 9999
|
||||
end if
|
||||
|
||||
! set the solver parameters and the initial guess
|
||||
|
||||
call psb_geall(x,desc_A,info)
|
||||
call x%zero()
|
||||
call psb_geasb(x,desc_A,info)
|
||||
|
||||
! Convert A, DESC_A,X,B to a GPU-enabled format
|
||||
call desc_a%cnv(mold=igmold)
|
||||
call a%cscnv(info,mold=agmold)
|
||||
call psb_geasb(x,desc_a,info,mold=vgmold)
|
||||
call psb_geasb(b,desc_a,info,mold=vgmold)
|
||||
|
||||
|
||||
! solve Ax=b with preconditioned Krylov method
|
||||
|
||||
call psb_barrier(ctxt)
|
||||
call prec%allocate_wrk(info)
|
||||
t1 = psb_wtime()
|
||||
|
||||
call psb_krylov(kmethod,A,P,b,x,tol,desc_A,info,itmax,iter,err,itrace=1,istop=2)
|
||||
|
||||
t2 = psb_wtime() - t1
|
||||
call psb_amx(ctxt,t2)
|
||||
call prec%deallocate_wrk(info)
|
||||
|
||||
call psb_geall(r,desc_A,info)
|
||||
call r%zero()
|
||||
call psb_geasb(r,desc_A,info)
|
||||
call psb_geaxpby(done,b,dzero,r,desc_A,info)
|
||||
call psb_spmm(-done,A,x,done,r,desc_A,info)
|
||||
resmx = psb_genrm2(r,desc_A,info)
|
||||
resmxp = psb_geamax(r,desc_A,info)
|
||||
|
||||
amatsize = a%sizeof()
|
||||
descsize = desc_a%sizeof()
|
||||
precsize = p%sizeof()
|
||||
system_size = desc_a%get_global_rows()
|
||||
call psb_sum(ctxt,amatsize)
|
||||
call psb_sum(ctxt,descsize)
|
||||
call psb_sum(ctxt,precsize)
|
||||
|
||||
call P%descr(info)
|
||||
|
||||
if (iam == psb_root_) then
|
||||
write(*,'(" ")')
|
||||
write(*,'("Matrix from PDE example")')
|
||||
write(*,'("Computed solution on ",i8," processors")')np
|
||||
write(*,'("Linear system size : ",i12)') system_size
|
||||
write(*,'("Krylov method : ",a)') kmethod
|
||||
write(*,'("Iterations to convergence : ",i6)')iter
|
||||
write(*,'("Error estimate on exit : ",es12.5)')err
|
||||
write(*,'("Time to build prec. : ",es12.5)')tprec
|
||||
write(*,'("Time to solve system : ",es12.5)')t2
|
||||
write(*,'("Time per iteration : ",es12.5)')t2/(iter)
|
||||
write(*,'("Total time : ",es12.5)')t2+tprec
|
||||
write(*,'("Residual 2-norm : ",es12.5)')resmx
|
||||
write(*,'("Residual inf-norm : ",es12.5)')resmxp
|
||||
write(*,'("Total memory occupation for A : ",i12)')amatsize
|
||||
write(*,'("Total memory occupation for DESC_A : ",i12)')descsize
|
||||
write(*,'("Total memory occupation for PREC : ",i12)')precsize
|
||||
end if
|
||||
|
||||
call psb_gefree(b, desc_A,info)
|
||||
call psb_gefree(x, desc_A,info)
|
||||
call psb_spfree(A, desc_A,info)
|
||||
call P%free(info)
|
||||
call psb_cdfree(desc_A,info)
|
||||
call psb_gpu_exit()
|
||||
call psb_exit(ctxt)
|
||||
stop
|
||||
|
||||
9999 continue
|
||||
call psb_error(ctxt)
|
||||
|
||||
contains
|
||||
!
|
||||
! get parameters from standard input
|
||||
!
|
||||
subroutine get_parms(ctxt,choice,idim,itmax,tol)
|
||||
|
||||
implicit none
|
||||
|
||||
type(psb_ctxt_type) :: ctxt
|
||||
integer :: choice, idim, itmax
|
||||
real(psb_dpk_) :: tol
|
||||
integer :: iam, np, inp_unit
|
||||
character(len=1024) :: filename
|
||||
|
||||
call psb_info(ctxt,iam,np)
|
||||
|
||||
if (iam == psb_root_) then
|
||||
if (command_argument_count()>0) then
|
||||
call get_command_argument(1,filename)
|
||||
inp_unit = 30
|
||||
open(inp_unit,file=filename,action='read',iostat=info)
|
||||
if (info /= 0) then
|
||||
write(psb_err_unit,*) 'Could not open file ',filename,' for input'
|
||||
call psb_abort(ctxt)
|
||||
stop
|
||||
else
|
||||
write(psb_err_unit,*) 'Opened file ',trim(filename),' for input'
|
||||
end if
|
||||
else
|
||||
inp_unit=psb_inp_unit
|
||||
end if
|
||||
! read input parameters
|
||||
call read_data(choice,inp_unit)
|
||||
call read_data(idim,inp_unit)
|
||||
call read_data(itmax,inp_unit)
|
||||
call read_data(tol,inp_unit)
|
||||
if (inp_unit /= psb_inp_unit) then
|
||||
close(inp_unit)
|
||||
end if
|
||||
end if
|
||||
|
||||
call psb_bcast(ctxt,choice)
|
||||
call psb_bcast(ctxt,idim)
|
||||
call psb_bcast(ctxt,itmax)
|
||||
call psb_bcast(ctxt,tol)
|
||||
|
||||
end subroutine get_parms
|
||||
|
||||
end program amg_dexample_gpu
|
||||
@@ -0,0 +1,182 @@
|
||||
!
|
||||
! AMG4PSBLAS version 1.0
|
||||
! Algebraic Multigrid Package
|
||||
! based on PSBLAS (Parallel Sparse BLAS version 3.7)
|
||||
!
|
||||
! (C) Copyright 2020
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
! Redistribution and use in source and binary forms, with or without
|
||||
! modification, are permitted provided that the following conditions
|
||||
! are met:
|
||||
! 1. Redistributions of source code must retain the above copyright
|
||||
! notice, this list of conditions and the following disclaimer.
|
||||
! 2. Redistributions in binary form must reproduce the above copyright
|
||||
! notice, this list of conditions, and the following disclaimer in the
|
||||
! documentation and/or other materials provided with the distribution.
|
||||
! 3. The name of the AMG4PSBLAS group or the names of its contributors may
|
||||
! not be used to endorse or promote products derived from this
|
||||
! software without specific written permission.
|
||||
!
|
||||
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
! PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AMG4PSBLAS GROUP OR ITS CONTRIBUTORS
|
||||
! BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
module data_input
|
||||
|
||||
interface read_data
|
||||
module procedure read_char, read_int,&
|
||||
& read_double, read_single,&
|
||||
& string_read_char, string_read_int,&
|
||||
& string_read_double, string_read_single
|
||||
end interface read_data
|
||||
interface trim_string
|
||||
module procedure trim_string
|
||||
end interface
|
||||
|
||||
character(len=4096), private :: charbuf
|
||||
character, private, parameter :: def_marker="!"
|
||||
|
||||
contains
|
||||
|
||||
subroutine read_char(val,file,marker)
|
||||
character(len=*), intent(out) :: val
|
||||
integer, intent(in) :: file
|
||||
character(len=1), optional, intent(in) :: marker
|
||||
|
||||
read(file,'(a)')charbuf
|
||||
call read_data(val,charbuf,marker)
|
||||
|
||||
end subroutine read_char
|
||||
|
||||
subroutine read_int(val,file,marker)
|
||||
integer, intent(out) :: val
|
||||
integer, intent(in) :: file
|
||||
character(len=1), optional, intent(in) :: marker
|
||||
|
||||
read(file,'(a)')charbuf
|
||||
call read_data(val,charbuf,marker)
|
||||
|
||||
end subroutine read_int
|
||||
subroutine read_single(val,file,marker)
|
||||
use psb_base_mod
|
||||
real(psb_spk_), intent(out) :: val
|
||||
integer, intent(in) :: file
|
||||
character(len=1), optional, intent(in) :: marker
|
||||
|
||||
read(file,'(a)')charbuf
|
||||
call read_data(val,charbuf,marker)
|
||||
|
||||
end subroutine read_single
|
||||
subroutine read_double(val,file,marker)
|
||||
use psb_base_mod
|
||||
real(psb_dpk_), intent(out) :: val
|
||||
integer, intent(in) :: file
|
||||
character(len=1), optional, intent(in) :: marker
|
||||
|
||||
read(file,'(a)')charbuf
|
||||
call read_data(val,charbuf,marker)
|
||||
|
||||
end subroutine read_double
|
||||
|
||||
subroutine string_read_char(val,file,marker)
|
||||
character(len=*), intent(out) :: val
|
||||
character(len=*), intent(in) :: file
|
||||
character(len=1), optional, intent(in) :: marker
|
||||
character(len=1) :: marker_
|
||||
character(len=1024) :: charbuf
|
||||
integer :: idx
|
||||
if (present(marker)) then
|
||||
marker_ = marker
|
||||
else
|
||||
marker_ = def_marker
|
||||
end if
|
||||
read(file,'(a)')charbuf
|
||||
charbuf = adjustl(charbuf)
|
||||
idx=index(charbuf,marker_)
|
||||
if (idx == 0) idx = len(charbuf)+1
|
||||
read(charbuf(1:idx-1),'(a)') val
|
||||
end subroutine string_read_char
|
||||
|
||||
subroutine string_read_int(val,file,marker)
|
||||
integer, intent(out) :: val
|
||||
character(len=*), intent(in) :: file
|
||||
character(len=1), optional, intent(in) :: marker
|
||||
character(len=1) :: marker_
|
||||
character(len=1024) :: charbuf
|
||||
integer :: idx
|
||||
if (present(marker)) then
|
||||
marker_ = marker
|
||||
else
|
||||
marker_ = def_marker
|
||||
end if
|
||||
read(file,'(a)')charbuf
|
||||
charbuf = adjustl(charbuf)
|
||||
idx=index(charbuf,marker_)
|
||||
if (idx == 0) idx = len(charbuf)+1
|
||||
read(charbuf(1:idx-1),*) val
|
||||
end subroutine string_read_int
|
||||
subroutine string_read_single(val,file,marker)
|
||||
use psb_base_mod
|
||||
real(psb_spk_), intent(out) :: val
|
||||
character(len=*), intent(in) :: file
|
||||
character(len=1), optional, intent(in) :: marker
|
||||
character(len=1) :: marker_
|
||||
character(len=1024) :: charbuf
|
||||
integer :: idx
|
||||
if (present(marker)) then
|
||||
marker_ = marker
|
||||
else
|
||||
marker_ = def_marker
|
||||
end if
|
||||
read(file,'(a)')charbuf
|
||||
charbuf = adjustl(charbuf)
|
||||
idx=index(charbuf,marker_)
|
||||
if (idx == 0) idx = len(charbuf)+1
|
||||
read(charbuf(1:idx-1),*) val
|
||||
end subroutine string_read_single
|
||||
subroutine string_read_double(val,file,marker)
|
||||
use psb_base_mod
|
||||
real(psb_dpk_), intent(out) :: val
|
||||
character(len=*), intent(in) :: file
|
||||
character(len=1), optional, intent(in) :: marker
|
||||
character(len=1) :: marker_
|
||||
character(len=1024) :: charbuf
|
||||
integer :: idx
|
||||
if (present(marker)) then
|
||||
marker_ = marker
|
||||
else
|
||||
marker_ = def_marker
|
||||
end if
|
||||
read(file,'(a)')charbuf
|
||||
charbuf = adjustl(charbuf)
|
||||
idx=index(charbuf,marker_)
|
||||
if (idx == 0) idx = len(charbuf)+1
|
||||
read(charbuf(1:idx-1),*) val
|
||||
end subroutine string_read_double
|
||||
|
||||
function trim_string(string,marker)
|
||||
character(len=*), intent(in) :: string
|
||||
character(len=1), optional, intent(in) :: marker
|
||||
character(len=len(string)) :: trim_string
|
||||
character(len=1) :: marker_
|
||||
integer :: idx
|
||||
if (present(marker)) then
|
||||
marker_ = marker
|
||||
else
|
||||
marker_ = def_marker
|
||||
end if
|
||||
idx=index(string,marker_)
|
||||
trim_string = adjustl(string(idx:))
|
||||
end function trim_string
|
||||
end module data_input
|
||||
@@ -0,0 +1,4 @@
|
||||
1 ! Preconditioner choice
|
||||
10 ! IDIM; domain size is idim**3
|
||||
500 ! ITMAX
|
||||
1.d-6 ! EPS
|
||||
Reference in New Issue
Block a user