Jeff Squyres wrote:
>Yes, I think the mmap code in the sm btl actually has a sync point inside add_procs that when the root allocs and sets up the area, it'll locally broadcast a "yes, we're good -- mmap attach and let's continue" or "bad things happened; sm btl is broke" message.
Yes, that's great. But my point was that (it used to be that) after
that point, processes would start eating chunks out of that shared area
and for large proc counts the last allocations would fail. (The size of
the shared area was poorly chosen and happened to be insufficient.) So,
despite the sync point you describe, some procs would succeed at
mca_btl_sm_add_procs() while others would not. This particular case is
now, I believe, resolved. It just seemed at the time like a case where
the upper layers were making assumptions that were inconsistent with
what the sm BTL was providing.
>But I am not confident about the other BTLs.
>On Jun 2, 2010, at 12:51 PM, Eugene Loh wrote:
>>George Bosilca wrote:
>>>We did assume that at least the errors are symmetric, i.e. if A fails
>>>to connect to B then B will fail when trying to connect to A.
>>I've not been following this thread closely, but thought I'd add a comment.
>>It used to be that the sm BTL could fail asymmetrically. A shared
>>memory could be allocated and processes start to allocate resources
>>within shared memory. At some point, the shared area would be
>>exhausted. So, some processes were set up to communicate to others, but
>>the others would not be able to communicate back via the same BTL. I
>>think this led to much brokenness. (E.g., how would a process return a
>>sm fragment to a sender?)
>>At this point, my recollection of those issues is very fuzzy.
>>In any case, I think those issues went away with the shared-memory work
>>I did a while back. The size of the area is now computed to be large
>>enough that each process's initial allocation would succeed.