title: Sending partial MPI messages
body: <p>To avoid allocating an intermediary buffer, it makes sense in my application that my <code>MPI_Recv</code> receives one single big array, but on the sending side, the data is non-contiguous, and I'd like it to make the data available to the network interface as soon as it is possible to organize it. Something like this:</p>
  
  <pre><code>MPI_Request reqs[N];
  for(/* each one of my N chunks */) {
      partial_send(chunk, &amp;reqs[chunk-&gt;idx]);
  }
  
  MPI_Waitall(N, reqs, MPI_STATUSES_IGNORE);
  </code></pre>
  
  <p>Or even better for me, do like in POSIX's <code>writev</code> function:</p>
  
  <pre><code>/* Precalculate this. */
  struct iovec iov[N];
  for(/* each one of my N chunks */) {
      iov[chunk-&gt;idx].iov_base = chunk-&gt;ptr;
      iov[chunk-&gt;idx].iov_len = chunk-&gt;len;
  }
  
  /* Done every time I need to send. */
  MPI_Request req;
  chunked_send(iov, &amp;req);
  MPI_Wait(req, MPI_STATUS_IGNORE);
  </code></pre>
  
  <p>Is such a thing possible in MPI?</p>