<div>Hi,Darius,</div>Thank you and this really makes sense. I still have one question. Is it possible for a MPICH programmer to know which configuration is using, e.g. posix shared memory,  sys V shared memory or disabled?<div>
<br></div><div>Best Regards,</div><div>Shigang.<br><br><div class="gmail_quote">On Mon, Oct 15, 2012 at 10:18 AM, Darius Buntinas <span dir="ltr"><<a href="mailto:buntinas@mcs.anl.gov" target="_blank">buntinas@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"><br>
MPICH configure will try to use posix shared memory (i.e., mmapping a file), and if that fails it will try to use sysv shared memory (i.e., shmat).  If that fails, I think configure aborts (but it may just disable shared memory, I'm not sure).  Sysv shared memory typically has tight limits on the amount of shared memory that can be allocated per process and per node, so you don't really want to use that.<br>

<br>
At init time, the processes query the process manager for the topology (i.e., which processes are on which nodes), and based on that decide which pairs of processes should communicate using shared memory and which should use the network.<br>

<br>
Currently collectives are implemented using point-to-point messages, so some messages will go over shared memory and some over the network.  The communication patterns used by the collectives are optimized to take the topology into account.  MPICH does have an interface to allow implementors to override the default collective algorithms, such as using shared memory, but we haven't done this yet.<br>

<span class="HOEnZb"><font color="#888888"><br>
-d<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
On Oct 14, 2012, at 8:31 PM, Shigang Li wrote:<br>
<br>
> Dear Sir or Madam,<br>
><br>
> I'm a student from UIUC, and have some questions about communication optimizations on shared memory in state-of-art mpich2.<br>
><br>
> 1) When configure mpich2, does it support shared memory optimization in default? If so, can it select the communication pattern automatically according to hardware architecture? For example in a SMPs cluster, using shared memory optimization within a node and using socket cross nodes?<br>

><br>
> 2) What about collective communication on shared memory? Is it implemented on top of the optimized point to point communication or use other mechanisms?<br>
><br>
> Best Regards,<br>
> Shigang.<br>
<br>
</div></div></blockquote></div><br></div>