<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p><br>
</p>
<div class="moz-cite-prefix">On 10/25/2017 12:32 PM, Evgeny
Astigeevich wrote:<br>
</div>
<blockquote cite="mid:48B6D095-87E9-458F-8CE8-F1509F8F5167@arm.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Title" content="">
<meta name="Keywords" content="">
<meta name="Generator" content="Microsoft Word 15 (filtered
medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Courier New";
panose-1:2 7 3 9 2 2 5 2 4 4;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p
{mso-style-priority:99;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0in;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier",serif;}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:"Courier",serif;}
span.EmailStyle20
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:windowtext;
font-weight:normal;
font-style:normal;}
span.EmailStyle21
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;
font-weight:normal;
font-style:normal;}
span.msoIns
{mso-style-type:export-only;
mso-style-name:"";
text-decoration:underline;
color:teal;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:595.0pt 842.0pt;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style>
<div class="WordSection1">
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Hi
Hal,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">I
quickly checked the execution profile. It is real. The code
changed significantly. A number of the hottest regions
changed. I’ll compare IRs.</span></p>
</div>
</blockquote>
<br>
Thanks. Obviously a 1000% execution performance regression seems
problematic.<br>
<br>
-Hal<br>
<br>
<blockquote cite="mid:48B6D095-87E9-458F-8CE8-F1509F8F5167@arm.com"
type="cite">
<div class="WordSection1">
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">JFYI
FreeBench/fourinarow time graph:
<a moz-do-not-send="true"
href="http://lnt.llvm.org/db_default/v4/nts/graph?highlight_run=76922&plot.1604615=1349.1604615.3">http://lnt.llvm.org/db_default/v4/nts/graph?highlight_run=76922&plot.1604615=1349.1604615.3</a>
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Its
graph in our LNT is more stable.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Thanks,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Evgeny<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div style="border:none;border-top:solid #B5C4DF
1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span
style="font-size:12.0pt;color:black">From: </span></b><span
style="font-size:12.0pt;color:black">Hal Finkel
<a class="moz-txt-link-rfc2396E" href="mailto:hfinkel@anl.gov"><hfinkel@anl.gov></a><br>
<b>Organization: </b>Argonne National Laboratory<br>
<b>Date: </b>Wednesday, 25 October 2017 at 18:14<br>
<b>To: </b>Evgeny Astigeevich
<a class="moz-txt-link-rfc2396E" href="mailto:Evgeny.Astigeevich@arm.com"><Evgeny.Astigeevich@arm.com></a>, Chandler Carruth
<a class="moz-txt-link-rfc2396E" href="mailto:chandlerc@gmail.com"><chandlerc@gmail.com></a><br>
<b>Cc: </b>llvm-dev <a class="moz-txt-link-rfc2396E" href="mailto:llvm-dev@lists.llvm.org"><llvm-dev@lists.llvm.org></a>, nd
<a class="moz-txt-link-rfc2396E" href="mailto:nd@arm.com"><nd@arm.com></a><br>
<b>Subject: </b>Re: [llvm-dev] RFC: Switching to the new
pass manager by default<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p><o:p> </o:p></p>
<div>
<p class="MsoNormal">On 10/25/2017 12:10 PM, Evgeny
Astigeevich via llvm-dev wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Hi
Chandler,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">I
ran the LNT benchmarks and SPEC2k6.train on AArch64
Cortex-A57. I used revisions: Clang 316561, LLVM 316563.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Options:
-O3 -mcpu=cortex-a57 -fomit-frame-pointer
-fexperimental-new-pass-manager</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Regressions:
execution time increase</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">LNT</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">MultiSource/Benchmarks/FreeBench/fourinarow/fourinarow
1018.58%</span><o:p></o:p></p>
</blockquote>
<p class="MsoNormal"><br>
How real is this?<br>
<br>
-Hal<br>
<br>
<br>
<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">MultiSource/Benchmarks/Fhourstones/fhourstones
9.06%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">MultiSource/Benchmarks/Ptrdist/yacr2/yacr2
7.23%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">MultiSource/Benchmarks/Olden/perimeter/perimeter
6.87%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">MultiSource/Benchmarks/MiBench/consumer-typeset/consumer-typeset
6.02%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">MultiSource/Benchmarks/Trimaran/enc-pc1/enc-pc1
5.59%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">MultiSource/Benchmarks/ASC_Sequoia/AMGmk/AMGmk
5.03%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">SPEC2k6</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">453.povray
17.11%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">482.sphinx3
3.44%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">444.namd
2.89%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Improvements:
execution time decrease</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">LNT</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">MultiSource/Benchmarks/BitBench/uudecode/uudecode
-50.90%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">SingleSource/Benchmarks/Adobe-C++/loop_unroll
-27.75%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">SingleSource/Benchmarks/Misc/perlin
-21.35%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">MultiSource/Benchmarks/Olden/em3d/em3d
-19.12%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">MultiSource/Benchmarks/tramp3d-v4/tramp3d-v4
-8.58%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">SingleSource/Benchmarks/McGill/chomp
-6.33%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">MultiSource/Benchmarks/sim/sim
-5.41%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">MultiSource/Applications/ClamAV/clamscan
-3.11%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">MultiSource/Benchmarks/TSVC/Symbolics-dbl/Symbolics-dbl
-2.81%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">SPEC2k6</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">429.mcf
-5.18%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">473.astar
-2.65%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">400.perlbench
-1.90%</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">There
are also code sizes increases/decreases. The maximum
increase is 18.98%. The maximum decrease is 25.65%.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Thanks,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Evgeny
Astigeevich</span><o:p></o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF
1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span
style="font-size:12.0pt;color:black">From: </span></b><span
style="font-size:12.0pt;color:black">llvm-dev
<a moz-do-not-send="true"
href="mailto:llvm-dev-bounces@lists.llvm.org"><llvm-dev-bounces@lists.llvm.org></a>
on behalf of Chandler Carruth via llvm-dev
<a moz-do-not-send="true"
href="mailto:llvm-dev@lists.llvm.org"><llvm-dev@lists.llvm.org></a><br>
<b>Reply-To: </b>Chandler Carruth <a
moz-do-not-send="true"
href="mailto:chandlerc@gmail.com"><chandlerc@gmail.com></a><br>
<b>Date: </b>Wednesday, 18 October 2017 at 07:51<br>
<b>To: </b>llvm-dev <a moz-do-not-send="true"
href="mailto:llvm-dev@lists.llvm.org"><llvm-dev@lists.llvm.org></a><br>
<b>Subject: </b>[llvm-dev] RFC: Switching to the new
pass manager by default</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Greetings everyone! <o:p></o:p></p>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">The new pass manager is getting
extremely close to the point where I'm not aware of any
significant outstanding work needed, and I'd like to see
what else would be needed to enable it by default. Here
are the current functionality I'm aware of outstanding:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">1) Does not do non-trivial loop
unswitching. Majority of this is in
<a moz-do-not-send="true"
href="https://reviews.llvm.org/D34200">https://reviews.llvm.org/D34200</a> but
will need one or two small follow-ups.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">2) Currently, sanitizers don't work
correctly with it. Thanks to the work of others, the
missing infrastructure has been added and I'll send a
patch to wire this up this week.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">3) Missing support for 'optnone'.
I've been working on this, but the existing testing
wasn't as thorough as I wanted, so it is going slowly.
I've got about 1/4 of this implemented and should have
patches this week or next.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">4) Missing opt-bisect (or similar)
facility. This looks pretty trivial to add, but I've not
even started. If anyone is interested in it, go for it.
We might even be able to do something simpler using the
generic debug counters and get equivalent functionality.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">... that's it?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Optimization quality / run-time
performance:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">- We've been using it at Google
extensively and are very happy with the optimization
quality. Benchmarks look *very* good here.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">- More data from other users would be
important.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">- You can try it out with
`-fexperimental-new-pass-manager` to Clang<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Compile-time performance:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">- Sometimes *much* better due to
cached analyses.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">- Sometimes worse, typically due to
more / different inlining in turn running main pipeline
(GVN + InstCombine) more times or over more code.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">- Overall somewhat a wash, but the
increased compile times typically due to the optimizer
"trying" harder, so not too concerning on our end.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">- Again, more feedback from other
users good: `-fexperimental-new-pass-manager` to Clang<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Once the four missing things land,
I'll also happily work on collecting some of the basics
on the test-suite and CTMark. But I suspect more "in the
wild" data would really be useful here given the
significance of the change.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Thoughts? What else (beyond the four
items above and feedback on run-time and compile-time)
would folks like to see?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Once this happens, I'll also be
preparing some batch, mechanical updates to the test
suite to primarily use the new pass manager. Also there
is lots of documentation updates that will be needed
here.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">-Chandler<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">PS: I'll be sending a note to cfe-dev
as a "heads up" about this discussion as in some ways,
the default flip is mostly a Clang default flip. But
hopefully our doc updates will trigger this being
"perceived" as the default for other frontends, and I'll
try to reach out to other major frontends as well (Swift
and Rust are on my radar, and I've already started
talking with Philip Reames about their Falcon JIT).<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><br>
<br>
<br>
<o:p></o:p></p>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>LLVM Developers mailing list<o:p></o:p></pre>
<pre><a moz-do-not-send="true" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><o:p></o:p></pre>
<pre><a moz-do-not-send="true" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><o:p></o:p></pre>
</blockquote>
<p class="MsoNormal"><br>
<br>
<o:p></o:p></p>
<pre>-- <o:p></o:p></pre>
<pre>Hal Finkel<o:p></o:p></pre>
<pre>Lead, Compiler Technology and Programming Languages<o:p></o:p></pre>
<pre>Leadership Computing Facility<o:p></o:p></pre>
<pre>Argonne National Laboratory<o:p></o:p></pre>
</div>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory</pre>
</body>
</html>