You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
You could have set a different layout (mapping of physical to logical tasks) when you initialize the ensemble handles. There is a note in ensemble manager that you should no do this.
! Optional layout_type argument to assign how my_pe is related to my_task_id
! layout_type can be set individually for each ensemble handle. It is not advisable to do this
! because get_obs_ens assumes that the layout is the same for each ensemble handle.
if(.not. present(layout_type) ) then
ens_handle%layout_type = layout ! namelist option
else
ens_handle%layout_type = layout_type
endif
Q. Why even have layout as an option, many parts of the code assume the layout is the same for ens, obs_ens, and qc_obs_ens? "Do not shoot your self in the foot with this foot gun we have provided"
Thoughts:
Distribution type has been unused for 20 years. I think it is time for it to go. If you did need this functionally is this where you would put it today?
map_pe_to_task is crazy annoying to have to call. Something should be taking care of that for me, e.g the mpi_utils or the ensemble manager or another layer.
I agree that map_pe_to_task should not be part of the ensemble manager
everything else being equal.
I do not want to be so fast in getting rid of the layout. I can think of
reasons why it would be needed to avoid load balancing issues and we
definitely confronted them before. As noted in the discussion, I don't
think that we changed all the mappings, but maybe we did.
However, I can think of good reasons why we might want different mappings.
In particular, if we ever implemented observation groupings to either do
correlated error or to allow increased parallelism by the methods covered
in Anderson, Kershaw and Collins, we would need to stash groups of obs
together for performance.
If the capability is currently not fully supported, I would vote for
keeping the ability in the ensemble_manager but temporarily disabling its
use, rather than pulling it out. It doesn't seem to be very intrusive to me.
I think it is good to get all the terminology and assumptions in the code listed before any changes, in fact before even speccing out changes.
e.g. I'm assuming you are not talking about different distributions of copies, only distributions of vars.
I believe the load balancing issues you're thinking of: all elements in a column ending up on the same processor ( unlucky number of tasks vs x*y grid cells) was "fixed" by using a different number of tasks. I may be missing other cases though.
Activity
jlaucar commentedon Aug 13, 2026
hkershaw-brown commentedon Aug 13, 2026
@jlaucar are you talking about the layout_type or the distribution_type?
hkershaw-brown commentedon Aug 13, 2026
I think it is good to get all the terminology and assumptions in the code listed before any changes, in fact before even speccing out changes.
e.g. I'm assuming you are not talking about different distributions of copies, only distributions of vars.
I believe the load balancing issues you're thinking of: all elements in a column ending up on the same processor ( unlucky number of tasks vs x*y grid cells) was "fixed" by using a different number of tasks. I may be missing other cases though.
jlaucar commentedon Aug 13, 2026
[-]ensemble manager[/-][+] ensemble manager: layout, layout_type, distribution_type[/+]