Update description of internals.

newG2L
Salvatore Filippone 4 years ago
parent e64d52cbc2
commit 734041d90f

@ -156,7 +156,7 @@ subroutine psi_graph_fnd_owner(idx,iprc,idxmap,info)
call psb_errpush(psb_err_from_subroutine_,name,a_err='psb_realloc') call psb_errpush(psb_err_from_subroutine_,name,a_err='psb_realloc')
goto 9999 goto 9999
end if end if
iprc(:) = -1 iprc(:) = -1
n_answers = 0 n_answers = 0
! !
! Start from the adjacncy list ! Start from the adjacncy list
@ -167,7 +167,9 @@ subroutine psi_graph_fnd_owner(idx,iprc,idxmap,info)
call psb_realloc(nadj,ladj,info) call psb_realloc(nadj,ladj,info)
! !
! Throughout the subroutine, nqries is the number of local inquiries ! Throughout the subroutine, nqries is the number of local inquiries
! that have not been answered yet ! that have not been answered yet, stored in idx(n_aswers+1:)
! idx(1:n_answers) and iprc(1:n_answers) are queries that have
! already been answered; n_answers is updated by psi_adj_fnd_sweep.
! !
nqries = nv - n_answers nqries = nv - n_answers
nqries_max = nqries nqries_max = nqries
@ -186,7 +188,8 @@ subroutine psi_graph_fnd_owner(idx,iprc,idxmap,info)
maxspace = nt*locr_max maxspace = nt*locr_max
if (tmpv(4) > 0) maxspace = min(maxspace,tmpv(4)) if (tmpv(4) > 0) maxspace = min(maxspace,tmpv(4))
maxspace = max(maxspace,np) maxspace = max(maxspace,np)
if (trace.and.(me == 0)) write(0,*) ' Through graph_fnd_owner with maxspace:',maxspace,maxspace/np if (trace.and.(me == 0)) write(0,*) ' Through graph_fnd_owner with maxspace:',&
& maxspace, maxspace/np
if (do_timings) call psb_tic(idx_sweep0) if (do_timings) call psb_tic(idx_sweep0)
if ((tmpv(1) > 0).and.(tmpv(2) >0)) then if ((tmpv(1) > 0).and.(tmpv(2) >0)) then
! !
@ -194,8 +197,10 @@ subroutine psi_graph_fnd_owner(idx,iprc,idxmap,info)
! !
if (debugsz) write(0,*) me,' Initial sweep on user-defined topology',nqries if (debugsz) write(0,*) me,' Initial sweep on user-defined topology',nqries
nsampl_in = min(nqries,max(1,(maxspace+max(1,nadj)-1))/(max(1,nadj))) nsampl_in = min(nqries,max(1,(maxspace+max(1,nadj)-1))/(max(1,nadj)))
if (trace.and.(me == 0)) write(0,*) ' Initial sweep on user-defined topology',nsampl_in if (trace.and.(me == 0)) write(0,*) ' Initial sweep on user-defined topology',&
call psi_adj_fnd_sweep(idx,iprc,ladj,idxmap,nsampl_in,n_answers) & nsampl_in
ipnt = n_answers + 1
call psi_adj_fnd_sweep(idx(ipnt:),iprc(ipnt:),ladj,idxmap,nsampl_in,n_answers)
call idxmap%xtnd_p_adjcncy(ladj) call idxmap%xtnd_p_adjcncy(ladj)
nqries = nv - n_answers nqries = nv - n_answers
nqries_max = nqries nqries_max = nqries
@ -223,7 +228,7 @@ subroutine psi_graph_fnd_owner(idx,iprc,idxmap,info)
! Choose a sample, should it be done in this simplistic way? ! Choose a sample, should it be done in this simplistic way?
! Note: nsampl_in is a hint, not an absolute, hence nsampl_out ! Note: nsampl_in is a hint, not an absolute, hence nsampl_out
! !
ipnt = 1 ipnt = n_answers + 1
call psi_get_sample(ipnt, idx,iprc,tidx,tsmpl,nsampl_in,nsampl_out, pad=.true.) call psi_get_sample(ipnt, idx,iprc,tidx,tsmpl,nsampl_in,nsampl_out, pad=.true.)
nsampl_in = min(nsampl_out,nsampl_in) nsampl_in = min(nsampl_out,nsampl_in)
if (debugsz) write(0,*) me,' From first sampling ',nsampl_in if (debugsz) write(0,*) me,' From first sampling ',nsampl_in
@ -269,7 +274,8 @@ subroutine psi_graph_fnd_owner(idx,iprc,idxmap,info)
! call psb_min(ctxt,mnnsin) ! call psb_min(ctxt,mnnsin)
! write(0,*) me, ' mxnsin ',mxnsin ! write(0,*) me, ' mxnsin ',mxnsin
if (trace.and.(me == 0)) write(0,*) ' Further sweep',nsampl_in, mxnsin, mnnsin if (trace.and.(me == 0)) write(0,*) ' Further sweep',nsampl_in, mxnsin, mnnsin
if (mxnsin>0) call psi_adj_fnd_sweep(idx(n_answers+1:),iprc(n_answers+1:),ladj,& ipnt = n_answers + 1
if (mxnsin>0) call psi_adj_fnd_sweep(idx(ipnt:),iprc(ipnt:),ladj,&
& idxmap,nsampl_in,n_answers) & idxmap,nsampl_in,n_answers)
call idxmap%xtnd_p_adjcncy(ladj) call idxmap%xtnd_p_adjcncy(ladj)

Loading…
Cancel
Save