<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: How many ways to send?</title>
	<atom:link href="http://blogs.cisco.com/performance/how-many-ways-to-send/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.cisco.com/performance/how-many-ways-to-send/</link>
	<description></description>
	<lastBuildDate>Sat, 25 May 2013 02:09:43 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>By: Jeff Squyres</title>
		<link>http://blogs.cisco.com/performance/how-many-ways-to-send/#comment-548877</link>
		<dc:creator>Jeff Squyres</dc:creator>
		<pubDate>Mon, 13 Feb 2012 22:19:40 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.cisco.com/?p=60815#comment-548877</guid>
		<description><![CDATA[Ah yes, these are more good reasons why buffered sends are evil.  :-)

Down with bsend!]]></description>
		<content:encoded><![CDATA[<p>Ah yes, these are more good reasons why buffered sends are evil.  <img src='http://blogs.cisco.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Down with bsend!
<p class="comment-like"><img class="comment-like-btn" title="Vote" onclick="cl_like_this('http://blogs.cisco.com/wp-admin/admin-ajax.php',548877)" src="http://blogs.cisco.com/wp-content/plugins/comments-likes/images/like.png" />&nbsp;&nbsp;&nbsp;<span id="comment-like-cnt-548877">0</span> likes</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Fab Tillier</title>
		<link>http://blogs.cisco.com/performance/how-many-ways-to-send/#comment-548872</link>
		<dc:creator>Fab Tillier</dc:creator>
		<pubDate>Mon, 13 Feb 2012 22:04:05 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.cisco.com/?p=60815#comment-548872</guid>
		<description><![CDATA[There are other issues outside of performance why buffered sends are evil.  A buffered send can complete to the application immediately, having been successfully copied to the internal buffer space specified via MPI_BUFFER_ATTACH.  If a matching receive is never posted at the peer, there is no way for the application to reclaim that used buffer space - there&#039;s no way of cancelling the request since it has already completed locally.  There is also no way for the application to detect when it is safe to call MPI_BUFFER_DETACH.  The normal options for apps to track (and cancel) their non-blocking send requests don&#039;t work when using MPI_BSEND.  Note that I single out MPI_BSEND here because there are cancelation semantics defined for the non-blocking variants.]]></description>
		<content:encoded><![CDATA[<p>There are other issues outside of performance why buffered sends are evil.  A buffered send can complete to the application immediately, having been successfully copied to the internal buffer space specified via MPI_BUFFER_ATTACH.  If a matching receive is never posted at the peer, there is no way for the application to reclaim that used buffer space &#8211; there&#8217;s no way of cancelling the request since it has already completed locally.  There is also no way for the application to detect when it is safe to call MPI_BUFFER_DETACH.  The normal options for apps to track (and cancel) their non-blocking send requests don&#8217;t work when using MPI_BSEND.  Note that I single out MPI_BSEND here because there are cancelation semantics defined for the non-blocking variants.
<p class="comment-like"><img class="comment-like-btn" title="Vote" onclick="cl_like_this('http://blogs.cisco.com/wp-admin/admin-ajax.php',548872)" src="http://blogs.cisco.com/wp-content/plugins/comments-likes/images/like.png" />&nbsp;&nbsp;&nbsp;<span id="comment-like-cnt-548872">0</span> likes</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff Squyres</title>
		<link>http://blogs.cisco.com/performance/how-many-ways-to-send/#comment-548469</link>
		<dc:creator>Jeff Squyres</dc:creator>
		<pubDate>Sun, 12 Feb 2012 17:06:58 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.cisco.com/?p=60815#comment-548469</guid>
		<description><![CDATA[They are evil for the following reasons:

 * Buffered sends *force* an extra copy of the outgoing message (i.e., a copy from your buffer to the interner MPI buffer).
 * This copy not only takes up resources (memory), it also takes *time*.
 * The internal memory was also allocated by the user, which may not be optimal for the network transport that will be used for the message transfer.
 * Consider if you use a buffered send for a very large message.  The MPI must first copy that message before it can send it.
 * Some MPI implementations may do copies (depending on the underlying network transport), in which case they&#039;ll likely have a good scheme for pipelined copies and sending.  

In short, memory copies are not necessarily evil, but if they&#039;re employed, it&#039;s much better to let the underlying MPI implementation *choose* to do that, and therefore use all of its available optimizations (e.g., using special memory, pipelined copies overlapping with sending, using its own limits for buffered resources, etc.).]]></description>
		<content:encoded><![CDATA[<p>They are evil for the following reasons:</p>
<p> * Buffered sends *force* an extra copy of the outgoing message (i.e., a copy from your buffer to the interner MPI buffer).<br />
 * This copy not only takes up resources (memory), it also takes *time*.<br />
 * The internal memory was also allocated by the user, which may not be optimal for the network transport that will be used for the message transfer.<br />
 * Consider if you use a buffered send for a very large message.  The MPI must first copy that message before it can send it.<br />
 * Some MPI implementations may do copies (depending on the underlying network transport), in which case they&#8217;ll likely have a good scheme for pipelined copies and sending.  </p>
<p>In short, memory copies are not necessarily evil, but if they&#8217;re employed, it&#8217;s much better to let the underlying MPI implementation *choose* to do that, and therefore use all of its available optimizations (e.g., using special memory, pipelined copies overlapping with sending, using its own limits for buffered resources, etc.).
<p class="comment-like"><img class="comment-like-btn" title="Vote" onclick="cl_like_this('http://blogs.cisco.com/wp-admin/admin-ajax.php',548469)" src="http://blogs.cisco.com/wp-content/plugins/comments-likes/images/like.png" />&nbsp;&nbsp;&nbsp;<span id="comment-like-cnt-548469">0</span> likes</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brock Palen</title>
		<link>http://blogs.cisco.com/performance/how-many-ways-to-send/#comment-548348</link>
		<dc:creator>Brock Palen</dc:creator>
		<pubDate>Sun, 12 Feb 2012 01:00:45 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.cisco.com/?p=60815#comment-548348</guid>
		<description><![CDATA[Why are buffered sends evil?]]></description>
		<content:encoded><![CDATA[<p>Why are buffered sends evil?
<p class="comment-like"><img class="comment-like-btn" title="Vote" onclick="cl_like_this('http://blogs.cisco.com/wp-admin/admin-ajax.php',548348)" src="http://blogs.cisco.com/wp-content/plugins/comments-likes/images/like.png" />&nbsp;&nbsp;&nbsp;<span id="comment-like-cnt-548348">0</span> likes</p>
]]></content:encoded>
	</item>
</channel>
</rss>
