<div dir="ltr">It is cheap for contiguous buffers.  It may not be cheap for iovecs.  I don't know what the restrictions on iovecs are, but I wonder if the alias check is O(count^2) for the iov functions.  Jim Dinan wrote an optimized version of alias checking in ARMCI-MPI; it may be better than O(n^2).  In any case, it is added complexity for a questionable use case.<div><br></div><div>Jeff</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Nov 11, 2015 at 12:12 PM, Sur, Sayantan <span dir="ltr"><<a href="mailto:sayantan.sur@intel.com" target="_blank">sayantan.sur@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div style="word-wrap:break-word;color:rgb(0,0,0);font-size:14px;font-family:Calibri,sans-serif">
<div>
<div>In either case, we should clarify in the man pages (if not already clear) about aliasing. I agree with Jeff that if there is no need for atomics using aliased buffers, then we shouldn’t define it either. I know the check for aliased buffers is cheap, but
 why have that check at all, if no use case exists?</div>
<div>
<div></div>
</div>
</div>
<div><br>
</div>
<span>
<div style="font-family:Calibri;font-size:12pt;text-align:left;color:black;BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;PADDING-BOTTOM:0in;PADDING-LEFT:0in;PADDING-RIGHT:0in;BORDER-TOP:#b5c4df 1pt solid;BORDER-RIGHT:medium none;PADDING-TOP:3pt">
<span style="font-weight:bold">From: </span><<a href="mailto:ofiwg-bounces@lists.openfabrics.org" target="_blank">ofiwg-bounces@lists.openfabrics.org</a>> on behalf of Jeff Hammond <<a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a>><br>
<span style="font-weight:bold">Date: </span>Wednesday, November 11, 2015 at 12:07 PM<br>
<span style="font-weight:bold">To: </span>"Dave Goodell (dgoodell)" <<a href="mailto:dgoodell@cisco.com" target="_blank">dgoodell@cisco.com</a>><br>
<span style="font-weight:bold">Cc: </span>"<a href="mailto:ofiwg@lists.openfabrics.org" target="_blank">ofiwg@lists.openfabrics.org</a>" <<a href="mailto:ofiwg@lists.openfabrics.org" target="_blank">ofiwg@lists.openfabrics.org</a>><br>
<span style="font-weight:bold">Subject: </span>Re: [ofiwg] allowing aliasing in fetch atomics?<br>
</div><div><div class="h5">
<div><br>
</div>
<blockquote style="BORDER-LEFT:#b5c4df 5 solid;PADDING:0 0 0 5;MARGIN:0 0 0 5">
<div>
<div>
<div dir="ltr">Sure, and every C compiler out there can do multiple version code generation such that no code should ever show a benefit with restrict.
<div><br>
The fundamental idea here is that allowing aliasing is a bad semantic and there should be a compelling reason for supporting it.  The higher level models that informed the design of OFI either explicitly prohibit aliasing (MPI RMA and UPC) or their APIs make
 it impossible (SHMEM).</div>
<div><br>
</div>
<div>If there is client that requires this semantic, I'd like to understand why it is permitted to burden OFI rather than requiring that client to do its own buffering.</div>
<div><br>
</div>
<div>I am still investing Jianxin's comment on the ticket wherein MPI was affected by this.  I do not understand how a correct MPI program would encounter an issue here.</div>
<div><br>
</div>
<div>Jeff</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Wed, Nov 11, 2015 at 11:34 AM, Dave Goodell (dgoodell)
<span dir="ltr"><<a href="mailto:dgoodell@cisco.com" target="_blank">dgoodell@cisco.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span>On Nov 11, 2015, at 2:01 PM, Jeff Hammond <<a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a>> wrote:<br>
><br>
> Why do memcpy and memmove both exist?  Why did C99 introduce restrict?  Why does Fortran prohibit aliasing?<br>
><br>
> I have measured the benefits of restrict semantics w.r.t. vectorization many times in the past, enough that I did not bother to benchmark this specific case.<br>
<br>
</span>But you already offered a fix for that issue, which was to just have two versions of the implementation to handle aliased/non-aliased.  The overlap check is pretty cheap.<br>
<span><font color="#888888"><br>
-Dave<br>
<br>
</font></span></blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div>Jeff Hammond<br>
<a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a><br>
<a href="http://jeffhammond.github.io/" target="_blank">http://jeffhammond.github.io/</a></div>
</div>
</div>
</div>
</blockquote>
</div></div></span>
</div>

</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Jeff Hammond<br><a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a><br><a href="http://jeffhammond.github.io/" target="_blank">http://jeffhammond.github.io/</a></div>
</div>