<div dir="ltr">I had suggested having size metrics from somewhat larger applications such as Chrome, Webkit, or Firefox; clang itself; and maybe some of our internal binaries with rough size brackets?</div><br><div class="gmail_quote"><div dir="ltr">On Wed, Feb 1, 2017 at 4:33 PM Dehao Chen <<a href="mailto:dehao@google.com">dehao@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg">With the new data points, any comments on whether this can justify setting fully inline threshold to 300 (or any other number) in O2? I can collect more data points if it's helpful.<div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Thanks,</div><div class="gmail_msg">Dehao</div></div><div class="gmail_extra gmail_msg"><br class="gmail_msg"><div class="gmail_quote gmail_msg">On Tue, Jan 31, 2017 at 3:20 PM, Dehao Chen <span dir="ltr" class="gmail_msg"><<a href="mailto:dehao@google.com" class="gmail_msg" target="_blank">dehao@google.com</a>></span> wrote:<br class="gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg">Recollected the data from trunk head with stddev data and more threshold data points attached:<div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Performance:</div><div class="gmail_msg">
        
        
        
        



<table cellspacing="0" border="0" class="gmail_msg">
        <colgroup span="6" width="85" class="gmail_msg"></colgroup>
        <tbody class="gmail_msg"><tr class="gmail_msg">
                <td height="17" align="left" class="gmail_msg"><br class="gmail_msg"></td>
                <td align="left" class="gmail_msg">stddev/mean</td>
                <td align="right" class="gmail_msg">300</td>
                <td align="right" class="gmail_msg">450</td>
                <td align="right" class="gmail_msg">600</td>
                <td align="right" class="gmail_msg">750</td>
        </tr>
        <tr class="gmail_msg">
                <td height="17" align="right" class="gmail_msg">403</td>
                <td align="right" class="gmail_msg">0.37%</td>
                <td align="right" class="gmail_msg">0.11%</td>
                <td align="right" class="gmail_msg">0.11%</td>
                <td align="right" class="gmail_msg">0.09%</td>
                <td align="right" class="gmail_msg">0.79%</td>
        </tr>
        <tr class="gmail_msg">
                <td height="17" align="right" class="gmail_msg">433</td>
                <td align="right" class="gmail_msg">0.14%</td>
                <td align="right" class="gmail_msg">0.51%</td>
                <td align="right" class="gmail_msg">0.25%</td>
                <td align="right" class="gmail_msg">-0.63%</td>
                <td align="right" class="gmail_msg">-0.29%</td>
        </tr>
        <tr class="gmail_msg">
                <td height="17" align="right" class="gmail_msg">445</td>
                <td align="right" class="gmail_msg">0.08%</td>
                <td align="right" class="gmail_msg">0.48%</td>
                <td align="right" class="gmail_msg">0.89%</td>
                <td align="right" class="gmail_msg">0.12%</td>
                <td align="right" class="gmail_msg">0.83%</td>
        </tr>
        <tr class="gmail_msg">
                <td height="17" align="right" class="gmail_msg">447</td>
                <td align="right" class="gmail_msg">0.16%</td>
                <td align="right" class="gmail_msg">3.50%</td>
                <td align="right" class="gmail_msg">2.69%</td>
                <td align="right" class="gmail_msg">3.66%</td>
                <td align="right" class="gmail_msg">3.59%</td>
        </tr>
        <tr class="gmail_msg">
                <td height="17" align="right" class="gmail_msg">453</td>
                <td align="right" class="gmail_msg">0.11%</td>
                <td align="right" class="gmail_msg">1.49%</td>
                <td align="right" class="gmail_msg">0.45%</td>
                <td align="right" class="gmail_msg">-0.07%</td>
                <td align="right" class="gmail_msg">0.78%</td>
        </tr>
        <tr class="gmail_msg">
                <td height="17" align="right" class="gmail_msg">464</td>
                <td align="right" class="gmail_msg">0.17%</td>
                <td align="right" class="gmail_msg">0.75%</td>
                <td align="right" class="gmail_msg">1.80%</td>
                <td align="right" class="gmail_msg">1.86%</td>
                <td align="right" class="gmail_msg">1.54%</td>
        </tr>
</tbody></table><br class="gmail_msg"></div><div class="gmail_msg">Code size:</div><div class="gmail_msg">
        
        
        
        



<table cellspacing="0" border="0" class="gmail_msg">
        <colgroup span="5" width="85" class="gmail_msg"></colgroup>
        <tbody class="gmail_msg"><tr class="gmail_msg">
                <td height="17" align="left" class="gmail_msg"><br class="gmail_msg"></td>
                <td align="right" class="gmail_msg">300</td>
                <td align="right" class="gmail_msg">450</td>
                <td align="right" class="gmail_msg">600</td>
                <td align="right" class="gmail_msg">750</td>
        </tr>
        <tr class="gmail_msg">
                <td height="17" align="right" class="gmail_msg">403</td>
                <td align="right" class="gmail_msg">0.56%</td>
                <td align="right" class="gmail_msg">2.41%</td>
                <td align="right" class="gmail_msg">2.74%</td>
                <td align="right" class="gmail_msg">3.75%</td>
        </tr>
        <tr class="gmail_msg">
                <td height="17" align="right" class="gmail_msg">433</td>
                <td align="right" class="gmail_msg">0.96%</td>
                <td align="right" class="gmail_msg">2.84%</td>
                <td align="right" class="gmail_msg">4.19%</td>
                <td align="right" class="gmail_msg">4.87%</td>
        </tr>
        <tr class="gmail_msg">
                <td height="17" align="right" class="gmail_msg">445</td>
                <td align="right" class="gmail_msg">2.16%</td>
                <td align="right" class="gmail_msg">3.62%</td>
                <td align="right" class="gmail_msg">4.48%</td>
                <td align="right" class="gmail_msg">5.88%</td>
        </tr>
        <tr class="gmail_msg">
                <td height="17" align="right" class="gmail_msg">447</td>
                <td align="right" class="gmail_msg">2.96%</td>
                <td align="right" class="gmail_msg">5.09%</td>
                <td align="right" class="gmail_msg">6.74%</td>
                <td align="right" class="gmail_msg">8.89%</td>
        </tr>
        <tr class="gmail_msg">
                <td height="17" align="right" class="gmail_msg">453</td>
                <td align="right" class="gmail_msg">0.94%</td>
                <td align="right" class="gmail_msg">1.67%</td>
                <td align="right" class="gmail_msg">2.73%</td>
                <td align="right" class="gmail_msg">2.96%</td>
        </tr>
        <tr class="gmail_msg">
                <td height="17" align="right" class="gmail_msg">464</td>
                <td align="right" class="gmail_msg">8.02%</td>
                <td align="right" class="gmail_msg">13.50%</td>
                <td align="right" class="gmail_msg">20.51%</td>
                <td align="right" class="gmail_msg">26.59%</td>
        </tr>
</tbody></table><br class="gmail_msg"></div><div class="gmail_msg">Compile time is proportional in the experiments and more noisy, so I did not include it.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">We have >2% speedup on some google internal benchmarks when switching the threshold from 150 to 300.</div><span class="m_1694617720154745241HOEnZb gmail_msg"><font color="#888888" class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Dehao</div></font></span></div><div class="m_1694617720154745241HOEnZb gmail_msg"><div class="m_1694617720154745241h5 gmail_msg"><div class="gmail_extra gmail_msg"><br class="gmail_msg"><div class="gmail_quote gmail_msg">On Mon, Jan 30, 2017 at 5:06 PM, Chandler Carruth <span dir="ltr" class="gmail_msg"><<a href="mailto:chandlerc@google.com" class="gmail_msg" target="_blank">chandlerc@google.com</a>></span> wrote:<br class="gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg"><div class="gmail_quote gmail_msg"><span class="gmail_msg"><div dir="ltr" class="gmail_msg">On Mon, Jan 30, 2017 at 4:59 PM Mehdi Amini <<a href="mailto:mehdi.amini@apple.com" class="gmail_msg" target="_blank">mehdi.amini@apple.com</a>> wrote:<br class="gmail_msg"></div></span><span class="gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><blockquote type="cite" class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><br class="gmail_msg"></div></blockquote></div></div><div style="word-wrap:break-word" class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><blockquote type="cite" class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><div class="gmail_quote m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><blockquote class="gmail_quote m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr" class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><div class="gmail_quote m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655m_-6293897042106820945h5 m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><blockquote class="gmail_quote m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655m_-6293897042106820945m_-4486181801685859403gmail_msg m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg" style="word-wrap:break-word"><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655m_-6293897042106820945m_-4486181801685859403gmail_msg m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655m_-6293897042106820945m_-4486181801685859403gmail_msg m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><br class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655m_-6293897042106820945m_-4486181801685859403gmail_msg m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"></div><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655m_-6293897042106820945m_-4486181801685859403gmail_msg m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg">Another question is about PGO integration: is it already hooked there? Should we have a more aggressive threshold in a hot function? (Assuming we’re willing to spend some binary size there but not on the cold path).</div></div></div></blockquote><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><br class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"></div></div></div><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg">I would even wire the *unrolling* the other way: just suppress unrolling in cold paths to save binary size. rolled loops seem like a generally good thing in cold code unless they are having some larger impact (IE, the loop itself is more expensive than the unrolled form).</div></div></div></blockquote><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><br class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"></div><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><br class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"></div><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg">Agree that we could suppress unrolling in cold path to save code size. But that's orthogonal with the propose here. This proposal focuses on O2 performance: shall we have different (higher) fully unroll threshold than dynamic/partial unroll.</div></div></div></blockquote><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><br class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"></div></div></div><div style="word-wrap:break-word" class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg">I agree that this is (to some extent) orthogonal, and it makes sense to me to differentiate the threshold for full unroll and the dynamic/partial case.</div></div></div></blockquote><div class="gmail_msg"><br class="gmail_msg"></div></span><div class="gmail_msg">There is one issue that makes these not orthogonal.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">If even *static* profile hints will reduce some of the code size increase caused by higher unrolling thresholds for non-cold code, we should factor that into the tradeoff in picking where the threshold goes.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">However, getting PGO into the full unroller is currently challenging outside of the new pass manager. We already have some unfortunate hacks around this in LoopUnswitch that are making the port of it to the new PM more annoying.</div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><blockquote type="cite" class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><div class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><div class="gmail_quote m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><blockquote class="gmail_quote m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr" class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><div class="gmail_quote m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"><span class="m_1694617720154745241m_6119381627642025574m_-8823773316722963655gmail_msg gmail_msg"></span></div></div></blockquote></div></div></blockquote></div></div></blockquote></div></div>
</blockquote></div><br class="gmail_msg"></div>
</div></div></blockquote></div><br class="gmail_msg"></div>
</blockquote></div>