<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>