mirror of
https://github.com/sfilippone/psblas3.git
synced 2026-10-16 19:02:09 +00:00
New structure for A2A and graph_fnd_owner
New implementation for A2A: use mpi_allgather and mpi_reduce_scatter, with two variants: one for variable inputs, one for fixed size inputs. Modified graph_fnd_owner to pass padded and uniform sized input to A2A.
This commit is contained in:
@@ -285,14 +285,6 @@ module psb_desc_mod
|
||||
module procedure psb_cdfree
|
||||
end interface psb_free
|
||||
|
||||
interface psb_cd_set_maxspace
|
||||
module procedure psb_cd_set_maxspace
|
||||
end interface psb_cd_set_maxspace
|
||||
|
||||
interface psb_cd_get_maxspace
|
||||
module procedure psb_cd_get_maxspace
|
||||
end interface psb_cd_get_maxspace
|
||||
|
||||
interface psb_cd_set_large_threshold
|
||||
module procedure psb_i_cd_set_large_threshold
|
||||
end interface psb_cd_set_large_threshold
|
||||
@@ -310,7 +302,6 @@ module psb_desc_mod
|
||||
|
||||
|
||||
integer(psb_lpk_), private, save :: cd_large_threshold = psb_default_large_threshold
|
||||
integer(psb_ipk_), private, save :: cd_maxspace = -1
|
||||
|
||||
|
||||
contains
|
||||
@@ -362,21 +353,6 @@ contains
|
||||
integer(psb_lpk_) :: val
|
||||
val = cd_large_threshold
|
||||
end function psb_cd_get_large_threshold
|
||||
|
||||
|
||||
subroutine psb_cd_set_maxspace(ith)
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ith
|
||||
if (ith > 0) then
|
||||
cd_maxspace = ith
|
||||
end if
|
||||
end subroutine psb_cd_set_maxspace
|
||||
|
||||
function psb_cd_get_maxspace() result(val)
|
||||
implicit none
|
||||
integer(psb_ipk_) :: val
|
||||
val = cd_maxspace
|
||||
end function psb_cd_get_maxspace
|
||||
|
||||
function psb_cd_is_large_size(m) result(val)
|
||||
use psb_penv_mod
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!!$
|
||||
!
|
||||
!
|
||||
!
|
||||
! package: psb_indx_map_mod
|
||||
@@ -278,13 +278,14 @@ module psb_indx_map_mod
|
||||
end interface
|
||||
|
||||
interface
|
||||
subroutine psi_a2a_fnd_owner(idx,iprc,idxmap,info)
|
||||
subroutine psi_a2a_fnd_owner(idx,iprc,idxmap,info,samesize)
|
||||
import :: psb_indx_map, psb_ipk_, psb_lpk_
|
||||
implicit none
|
||||
integer(psb_lpk_), intent(in) :: idx(:)
|
||||
integer(psb_ipk_), allocatable, intent(out) :: iprc(:)
|
||||
class(psb_indx_map), intent(in) :: idxmap
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
logical, intent(in), optional :: samesize
|
||||
end subroutine psi_a2a_fnd_owner
|
||||
end interface
|
||||
|
||||
@@ -311,6 +312,25 @@ module psb_indx_map_mod
|
||||
end subroutine psi_graph_fnd_owner
|
||||
end interface
|
||||
|
||||
interface psb_cd_set_maxspace
|
||||
module procedure psb_cd_set_maxspace
|
||||
end interface psb_cd_set_maxspace
|
||||
|
||||
interface psb_cd_get_maxspace
|
||||
module procedure psb_cd_get_maxspace
|
||||
end interface psb_cd_get_maxspace
|
||||
|
||||
interface psb_cd_set_samplesize
|
||||
module procedure psb_cd_set_samplesize
|
||||
end interface psb_cd_set_samplesize
|
||||
|
||||
interface psb_cd_get_samplesize
|
||||
module procedure psb_cd_get_samplesize
|
||||
end interface psb_cd_get_samplesize
|
||||
|
||||
integer(psb_ipk_), private, save :: cd_maxspace = -1
|
||||
integer(psb_ipk_), private, save :: samplesize = 32
|
||||
|
||||
integer, parameter :: psi_symm_flag_norv_ = 0
|
||||
integer, parameter :: psi_symm_flag_inrv_ = 1
|
||||
interface psi_symm_dep_list
|
||||
@@ -363,7 +383,36 @@ contains
|
||||
val = 'Unknown ?'
|
||||
end select
|
||||
end function psi_get_adj_alg_fmt
|
||||
|
||||
|
||||
subroutine psb_cd_set_maxspace(ith)
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ith
|
||||
if (ith > 0) then
|
||||
cd_maxspace = ith
|
||||
end if
|
||||
end subroutine psb_cd_set_maxspace
|
||||
|
||||
function psb_cd_get_maxspace() result(val)
|
||||
implicit none
|
||||
integer(psb_ipk_) :: val
|
||||
val = cd_maxspace
|
||||
end function psb_cd_get_maxspace
|
||||
|
||||
|
||||
subroutine psb_cd_set_samplesize(ith)
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ith
|
||||
if (ith > 0) then
|
||||
samplesize = ith
|
||||
end if
|
||||
end subroutine psb_cd_set_samplesize
|
||||
|
||||
function psb_cd_get_samplesize() result(val)
|
||||
implicit none
|
||||
integer(psb_ipk_) :: val
|
||||
val = samplesize
|
||||
end function psb_cd_get_samplesize
|
||||
|
||||
|
||||
!>
|
||||
!! \memberof psb_indx_map
|
||||
|
||||
Reference in New Issue
Block a user