From c2621c6b28b504fad9b3813b7457be31d255373c Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Thu, 2 Jul 2020 15:52:26 +0200 Subject: [PATCH] Redefined interface(s) of sort_dl --- base/internals/psi_crea_index.f90 | 2 +- base/internals/psi_sort_dl.f90 | 29 ++++++++++++++++++++++++++--- base/modules/psi_i_mod.F90 | 12 ++++++++++-- 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/base/internals/psi_crea_index.f90 b/base/internals/psi_crea_index.f90 index 68bcbd20..6731b0ea 100644 --- a/base/internals/psi_crea_index.f90 +++ b/base/internals/psi_crea_index.f90 @@ -134,7 +134,7 @@ subroutine psi_i_crea_index(desc_a,index_in,index_out,nxch,nsnd,nrcv,info) !!$ ! ....now i can sort dependency lists. if (do_timings) call psb_toc(idx_phase21) if (do_timings) call psb_tic(idx_phase22) - call psi_sort_dl(dl_ptr,c_dep_list,length_dl,ictxt,info) + call psi_sort_dl(me,np,dl_ptr,c_dep_list,length_dl,info) if (info /= 0) then write(0,*) me,trim(name),' From sort_dl ',info end if diff --git a/base/internals/psi_sort_dl.f90 b/base/internals/psi_sort_dl.f90 index c4e3ea07..77357c9e 100644 --- a/base/internals/psi_sort_dl.f90 +++ b/base/internals/psi_sort_dl.f90 @@ -77,8 +77,8 @@ ! node in the dependency list for the current one * ! * !********************************************************************** -subroutine psi_i_csr_sort_dl(dl_ptr,c_dep_list,l_dep_list,ictxt,info) - use psi_mod, psb_protect_name => psi_i_csr_sort_dl +subroutine psi_i_csr_sort_dl_ctxt(dl_ptr,c_dep_list,l_dep_list,ictxt,info) + use psi_mod, psb_protect_name => psi_i_csr_sort_dl_ctxt use psb_const_mod use psb_error_mod use psb_sort_mod @@ -97,6 +97,29 @@ subroutine psi_i_csr_sort_dl(dl_ptr,c_dep_list,l_dep_list,ictxt,info) info = 0 call psb_info(ictxt,me,np) + + call psi_sort_dl(me,np,dl_ptr,c_dep_list,l_dep_list,info) + +end subroutine psi_i_csr_sort_dl_ctxt + +subroutine psi_i_csr_sort_dl_np(me,np,dl_ptr,c_dep_list,l_dep_list,info) + use psi_mod, psb_protect_name => psi_i_csr_sort_dl_np + use psb_const_mod + use psb_error_mod + use psb_sort_mod + implicit none + + integer(psb_ipk_), intent(inout) :: c_dep_list(:), dl_ptr(0:), l_dep_list(0:) + integer(psb_ipk_), intent(in) :: me,np + integer(psb_ipk_), intent(out) :: info + ! Local variables + integer(psb_ipk_), allocatable :: dg(:), dgp(:),& + & idx(:), upd(:), edges(:,:), ich(:) + integer(psb_ipk_) :: i, j, nedges, ip1, ip2, nch, ip, iedge,& + & i1, ix, ist, iswap(2) + logical :: internal_error + + nedges = size(c_dep_list) allocate(dg(0:np-1),dgp(nedges),edges(2,nedges),upd(0:np-1),& @@ -234,4 +257,4 @@ subroutine psi_i_csr_sort_dl(dl_ptr,c_dep_list,l_dep_list,ictxt,info) end if end do -end subroutine psi_i_csr_sort_dl +end subroutine psi_i_csr_sort_dl_np diff --git a/base/modules/psi_i_mod.F90 b/base/modules/psi_i_mod.F90 index 5eebad41..1c51812d 100644 --- a/base/modules/psi_i_mod.F90 +++ b/base/modules/psi_i_mod.F90 @@ -95,14 +95,22 @@ module psi_i_mod end interface interface psi_sort_dl - subroutine psi_i_csr_sort_dl(dl_ptr,c_dep_list,l_dep_list,ictxt,info) + subroutine psi_i_csr_sort_dl_ctxt(dl_ptr,c_dep_list,l_dep_list,ictxt,info) import implicit none integer(psb_ipk_), intent(in) :: c_dep_list(:), dl_ptr(0:) integer(psb_ipk_), intent(inout) :: l_dep_list(0:) integer(psb_ipk_) :: ictxt integer(psb_ipk_) :: info - end subroutine psi_i_csr_sort_dl + end subroutine psi_i_csr_sort_dl_ctxt + subroutine psi_i_csr_sort_dl_np(me,np,dl_ptr,c_dep_list,l_dep_list,info) + import + implicit none + integer(psb_ipk_), intent(in) :: c_dep_list(:), dl_ptr(0:) + integer(psb_ipk_), intent(inout) :: l_dep_list(0:) + integer(psb_ipk_) :: me,np + integer(psb_ipk_) :: info + end subroutine psi_i_csr_sort_dl_np end interface interface psi_extract_dep_list