<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Hi Lang,<br>
<br>
> That suggests an optimization quality issue, rather than
compile-time overhead<br>
<br>
Yes that makes sense. The long running applications (6+ hours) JIT
the rules once (taking a few seconds) and then run the generated
machine code for hours. With no additional JIT'ing.<br>
<br>
> if we can configure the CodeGen pipeline properly we can get
the performance back to the same level as the legacy JIT.<br>
<br>
Sounds great. Happy to help with whatever is needed.<br>
<br>
Speaking of which:<br>
<br>
We generate low overhead profiling code as part of the generated IR.
We use it for identifying performance bottlenecks in the higher
level (before IR) optimizing stages.<br>
<br>
So I think it would be possible for me to identify a function that
runs much slower in 3.7.1. than in 3.5.2. And extract the IR.<br>
<br>
Would that help?<br>
<br>
Cheers<br>
Morten<br>
<br>
<div class="moz-cite-prefix">On 05/02/16 13:46, Lang Hames wrote:<br>
</div>
<blockquote
cite="mid:CALLttgqa7G6TQbyojfKVTWq5LrmkhX-ZHHHdRn1ejvughyTEiA@mail.gmail.com"
type="cite">
<div dir="ltr">Hi Morten,
<div><br>
</div>
<div>> <span style="font-size:13px">Here are the results (for
a small but representational run):</span></div>
<div><span style="font-size:13px"><br>
</span></div>
<div>That suggests an optimization quality issue, rather than
compile-time overhead. That's good news - I'd take it as a
good sign that the MC and linking overhead aren't a big deal
either, and if we can configure the CodeGen pipeline properly
we can get the performance back to the same level as the
legacy JIT.</div>
<div><br>
</div>
<div>Cheers,</div>
<div>Lang.</div>
<div><br>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Thu, Feb 4, 2016 at 6:41 PM, Morten
Brodersen via llvm-dev <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:llvm-dev@lists.llvm.org" target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a></a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF"> Hi Keno,<br>
<br>
Thanks for the fast ISel suggestion.<br>
<br>
Here are the results (for a small but representational
run):<br>
<br>
LLVM 3.5.2 (old JIT): 4m44s<br>
<br>
LLVM 3.7.1 (MCJit) no fast ISel: 7m31s<br>
<br>
LLVM 3.7.1 (MCJit) fast ISel: 7m39s<br>
<br>
So not much of a difference unfortunately.
<div>
<div class="h5"><br>
<br>
<div>On 05/02/16 11:05, Keno Fischer wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Yes, unfortunately, this is very much
known. Over in the julia project, we've recently
gone through this and taken the hit (after doing
some work to fix the very extreme corner cases
that we were hitting). We're not entirely sure why
the slowdown is this noticable, but at least in
our case, profiling didn't reveal any remaining
low hanging fruits that are responsible. One thing
you can potentially try if you haven't yet is to
enable fast ISel and see if that brings you closer
to the old runtimes.</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Thu, Feb 4, 2016 at
7:00 PM, Morten Brodersen via llvm-dev <span
dir="ltr"><<a moz-do-not-send="true"
href="mailto:llvm-dev@lists.llvm.org"
target="_blank">llvm-dev@lists.llvm.org</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0
0 0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">Hi All,<br>
<br>
We recently upgraded a number of applications
from LLVM 3.5.2 (old JIT) to LLVM 3.7.1
(MCJit).<br>
<br>
We made the minimum changes needed for the
switch (no changes to the IR generated or the
IR optimizations applied).<br>
<br>
The resulting code pass all tests (8000+).<br>
<br>
However the runtime performance dropped
significantly: 30% to 40% for all
applications.<br>
<br>
The applications I am talking about optimize
airline rosters and pairings. LLVM is used for
compiling high level business rules to
efficient machine code.<br>
<br>
A typical optimization run takes 6 to 8 hours.
So a 30% to 40% reduction in speed has real
impact (=> we can't upgrade from 3.5.2).<br>
<br>
We have triple checked and reviewed the
changes we made from old JIT to MCJIt. We also
tried different ways to optimize the IR.<br>
<br>
However all results indicate that the
performance drop happens in the (black box) IR
to machine code stage.<br>
<br>
So my question is if the runtime performance
reduction is known/expected for MCJit vs. old
JIT? Or if we might be doing something wrong?<br>
<br>
If you need more information, in order to
understand the issue, please tell us so that
we can provide you with more details.<br>
<br>
Thanks<br>
Morten<br>
<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a moz-do-not-send="true"
href="mailto:llvm-dev@lists.llvm.org"
target="_blank">llvm-dev@lists.llvm.org</a><br>
<a moz-do-not-send="true"
href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev"
rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
</div>
</div>
</div>
<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a moz-do-not-send="true"
href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a moz-do-not-send="true"
href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev"
rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
<br>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
</body>
</html>