mirror of
https://github.com/sfilippone/psblas3.git
synced 2026-10-24 14:51:49 +00:00
New get_a2av_alg() in place of conditional compilation
This commit is contained in:
@@ -104,9 +104,17 @@ module psb_desc_const_mod
|
||||
integer(psb_ipk_), parameter :: psb_hash_bits = 16
|
||||
integer(psb_ipk_), parameter :: psb_max_hash_bits = 22
|
||||
integer(psb_ipk_), parameter :: psb_hash_size = 2**psb_hash_bits, psb_hash_mask=psb_hash_size-1
|
||||
integer(psb_ipk_), parameter :: psb_default_large_threshold=1*1024*1024
|
||||
integer(psb_ipk_), parameter :: psb_hpnt_nentries_ = 7
|
||||
|
||||
integer(psb_ipk_), parameter :: psb_default_large_threshold=1*1024*1024
|
||||
!
|
||||
! Choice of algorithm for sparse matrix A2AV
|
||||
!
|
||||
integer(psb_ipk_), parameter :: psb_sp_a2av_smpl_triad_ = 1
|
||||
integer(psb_ipk_), parameter :: psb_sp_a2av_smpl_v_ = 2
|
||||
integer(psb_ipk_), parameter :: psb_sp_a2av_mpi_ = 3
|
||||
integer(psb_ipk_), parameter :: psb_sp_a2av_alg_min_ = psb_sp_a2av_smpl_triad_
|
||||
integer(psb_ipk_), parameter :: psb_sp_a2av_alg_max_ = psb_sp_a2av_mpi_
|
||||
|
||||
!
|
||||
! Constants for desc_a handling
|
||||
!
|
||||
|
||||
@@ -294,7 +294,15 @@ module psb_desc_mod
|
||||
module procedure psb_l_cd_set_large_threshold
|
||||
end interface psb_cd_set_large_threshold
|
||||
#endif
|
||||
|
||||
|
||||
interface psb_set_sp_a2av_alg
|
||||
module procedure psb_m_set_sp_a2av_alg, psb_e_set_sp_a2av_alg
|
||||
end interface psb_set_sp_a2av_alg
|
||||
|
||||
interface psb_get_sp_a2av_alg
|
||||
module procedure psb_m_get_sp_a2av_alg
|
||||
end interface psb_get_sp_a2av_alg
|
||||
|
||||
private :: nullify_desc, cd_get_fmt,&
|
||||
& cd_l2gs1, cd_l2gs2, cd_l2gv1, cd_l2gv2, cd_g2ls1,&
|
||||
& cd_g2ls2, cd_g2lv1, cd_g2lv2, cd_g2ls1_ins,&
|
||||
@@ -302,10 +310,33 @@ module psb_desc_mod
|
||||
|
||||
|
||||
integer(psb_lpk_), private, save :: cd_large_threshold = psb_default_large_threshold
|
||||
|
||||
integer(psb_ipk_), private, save :: sp_a2av_alg = psb_sp_a2av_smpl_triad_
|
||||
|
||||
contains
|
||||
|
||||
function psb_m_get_sp_a2av_alg() result(val)
|
||||
implicit none
|
||||
integer(psb_mpk_) :: val
|
||||
val = sp_a2av_alg
|
||||
end function psb_m_get_sp_a2av_alg
|
||||
|
||||
subroutine psb_m_set_sp_a2av_alg(val)
|
||||
implicit none
|
||||
integer(psb_mpk_), intent(in) :: val
|
||||
|
||||
if ((psb_sp_a2av_alg_min_ <= val).and.(val<=psb_sp_a2av_alg_max_)) &
|
||||
& sp_a2av_alg = val
|
||||
end subroutine psb_m_set_sp_a2av_alg
|
||||
|
||||
subroutine psb_e_set_sp_a2av_alg(val)
|
||||
implicit none
|
||||
integer(psb_epk_), intent(in) :: val
|
||||
|
||||
if ((psb_sp_a2av_alg_min_ <= val).and.(val<=psb_sp_a2av_alg_max_)) &
|
||||
& sp_a2av_alg = val
|
||||
end subroutine psb_e_set_sp_a2av_alg
|
||||
|
||||
|
||||
function psb_cd_sizeof(desc) result(val)
|
||||
implicit none
|
||||
!....Parameters...
|
||||
|
||||
Reference in New Issue
Block a user