!!!!!!!!!!!!!!!Begin comparison of globalsegmaps
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | othercomp | |||
type(GlobalSegMap), | intent(in) | :: | GSMap | |||
integer, | intent(in) | :: | mycomm | |||
type(Router), | intent(out) | :: | Rout | |||
character(len=*), | intent(in), | optional | :: | name |
determine the global segments on this processor just once, so the info be used repeatedly below same code was used in m_GlobalToLocal - should make a subroutine...
determine the possibly overlapping segments in RGSMap that are local to each proc
count number of potentially overlapping remote segments and which and how many processes hold these
number of potentially overlapping segments in RGSMap local to proc and mapping from processes that hold these to actual process id
build list of potentially overlapping remote segments
original size of rgs_lb()/ub() was (r_ngseg,nprocs) at the cost of looping to compute it (within GlobalSegMap_max_nlseg), reduced size to (r_max_nlseg,nprocs) then further reduced to (max_rgs_count,feas_nprocs)
(note: redefining rgs_count to be indexed as 1:feas_nprocs instead of as 1:nprocs) !!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!
pull this out of the loop to vectorize !!!!!!!!!!!!!!!!!!end of search through remote GSMap
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(GlobalSegMap), | intent(in) | :: | inGSMap | |||
type(GlobalSegMap), | intent(in) | :: | inRGSMap | |||
integer, | intent(in) | :: | mycomm | |||
type(Router), | intent(out) | :: | Rout | |||
character(len=*), | intent(in), | optional | :: | name |