<div dir="ltr">If you can pack and unpack the global data (there are a few ways of doing that in AMPI), it should work, I believe. Further, even without migration, since you over-subscribe and each MPI rank in AMPI is implemented as a thread, you would need to guarantee that each thread in a physical processor has its own copy of the "global" variables. You could use TLS, for instance to privatize this global data. There some provision for that in AMPI, however, as far as I can tell it requires static compilation.</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Feb 3, 2015 at 10:37 AM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
> On Feb 2, 2015, at 11:27 PM, Jed Brown <<a href="mailto:jed@jedbrown.org">jed@jedbrown.org</a>> wrote:<br>
><br>
> Barry Smith <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>> writes:<br>
>>   Way more complicated then needed :-)<br>
><br>
> Heh, I was just spelling it out.<br>
><br>
>>> If AMPI creates threads dynamically,<br>
>><br>
>>  How could it possibly create threads dynamically and still be<br>
>>  running in the MPI 1 model of a consistent number of MPI "processes"<br>
>>  at all times?<br>
><br>
> I don't know, but it seems plausible that it would over-subscribe<br>
<br>
</span>  It definitely over-subscribes.<br>
<span class=""><br>
> and<br>
> then dynamically migrate MPI ranks around.<br>
<br>
</span>   Yes "cheating" with out global data structures won't work if it migrates the MPI ranks around but I can't image how it would do that.<br>
<br>
<br>
</blockquote></div><br></div>