title: Boost MPI blocks on split call
body: <p>I setup a Beowulf cluster with 3 VMs with MPICH and Boost on each machine.
  My programs are working fine on my cluster but when I try to use boost::split, execution blocks indefinitely.</p>
  
  <p>Take the following code:</p>
  
  <pre><code>#include &lt;boost/mpi.hpp&gt;
  #include &lt;iostream&gt;
  
  namespace  mpi = boost::mpi;
  
  int main (int argc , char* argv[])
  {
      mpi::environment env(argc,argv);
      mpi::communicator world;
  
      int group_id = world.rank()%3;
  
      mpi::communicator local = world.split(group_id);
  
      std::cout  &lt;&lt; "I am process " &lt;&lt; world.rank() &lt;&lt; " of " &lt;&lt; world.size() &lt;&lt; "." &lt;&lt; std::endl;
  
      std::cout  &lt;&lt; "I am sub-process " &lt;&lt; local.rank() &lt;&lt; " of " &lt;&lt; local.size() &lt;&lt; "." &lt;&lt; std::endl;
  
  
  
      return 0;
  }
  </code></pre>
  
  <p>When executed on the cluster, nothing happens.
  But if I execute it only on a single node (and let say with -np 9), it works just fine :</p>
  
  <pre><code>I am process 5 of 9.
  I am process 2 of 9.
  I am process 3 of 9.
  I am process 1 of 9.
  I am process 6 of 9.
  I am process 7 of 9.
  I am process 0 of 9.
  I am process 4 of 9.
  I am sub-process 2 of 3.
  I am sub-process 0 of 3.
  I am sub-process 1 of 3.
  I am sub-process 2 of 3.
  I am sub-process 1 of 3.
  I am sub-process 1 of 3.
  I am sub-process 0 of 3.
  I am process 8 of 9.
  I am sub-process 2 of 3.
  I am sub-process 0 of 3.
  </code></pre>
  
  <p>Removing the boost::split call makes the example to execute as intended over the 3 nodes, so the call to split is clearly guilty here.</p>
  
  <p>Any idea what I'm doing wrong with boost::split ?</p>