<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Apr 18, 2014 at 5:24 AM, Joerg Sonnenberger <span dir="ltr"><<a href="mailto:joerg@britannica.bec.de" target="_blank">joerg@britannica.bec.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On Thu, Apr 17, 2014 at 04:21:46PM +0400, Kostya Serebryany wrote:<br>
> - sharded counters: each counter represented as N counters sitting in<br>
> different cache lines. Every thread accesses the counter with index TID%N.<br>
> Solves the problem partially, better with larger values of N, but then<br>
> again it costs RAM.<br>
<br>
</div>I'd strongly go with this schema with one tweak. Use the stack pointer<br>
as base value with some fudging to not just use the lowest bits. It is<br>
typically easier to get.<br></blockquote><div><br></div><div>Indeed, several middle bits of %sp may be used instead of TID%N.</div><div>This would heavily depend on the pthread implementation (how it allocates stacks) though.</div>
<div>It may be tricky to come up with the same constant scheme across all platforms. </div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class="HOEnZb"><font color="#888888"><br>
Joerg<br>
</font></span><div class="HOEnZb"><div class="h5">_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</div></div></blockquote></div><br></div></div>