<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Thanks for this Benoit. I will investigate.<br>
    <br>
    Cheers<br>
    Morten<br>
    <br>
    <div class="moz-cite-prefix">On 06/02/16 01:34, Benoit Belley wrote:<br>
    </div>
    <blockquote cite="mid:D2DA193F.60D8D%25benoit.belley@autodesk.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <div>
        <div>Hi Morten,</div>
        <div><br>
        </div>
        <div>We have experienced a similar slow down in execution
          performance when upgrading to LLVM 3.7. The issue for us was
          that our front-end was emitting alloca instruction in
          non-entry basic blocks. After fixing the generation of LLVM IR
          in our front-end, we got similar or better performant with
          LLVM 3.7. See:</div>
        <div><br>
        </div>
        <div><a moz-do-not-send="true"
            href="http://llvm.org/docs/Frontend/PerformanceTips.html#use-of-allocas">http://llvm.org/docs/Frontend/PerformanceTips.html#use-of-allocas</a></div>
        <div><br>
        </div>
        <div>Maybe, this is something that you can double check.</div>
        <div><br>
        </div>
        <div>Here’s a detailed explanation of the cause of the slowdown:</div>
        <div><br>
        </div>
        <blockquote style="margin:0 0 0 40px; border:none; padding:0px;">
          <div>
            <pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);">With LLVM 3.7, We have noticed that the MemCpy pass will attempt to copy LLVM struct using moves that are as large as possible. For example, a struct of 3 floats is copied using a 64-bit and a 32-bit move. It is therefore important that such a struct be aligned on 8-byte boundary, not just 4 bytes! Else, one runs the risk of triggering store-forwarding failure pipelining stalls (which we did encountered really badly with one of our internal performance benchmark). It is therefore important that the SROA pass correctly eliminates the load/store to the alloca memory regions.</pre>
          </div>
        </blockquote>
        <div>Benoit</div>
        <div><br>
        </div>
        <div><br>
        </div>
        <div>
          <p class="MsoNormal" style="margin: 0in 0in 0.0001pt;
            font-size: 11pt; "><b><span style="font-size: 9pt;
                font-family: Arial, sans-serif; color: rgb(99, 99, 99);">Benoit
                Belley</span></b><span style="font-size: 9pt; "><o:p></o:p></span></p>
          <p class="MsoNormal" style="margin: 0in 0in 0.0001pt;
            font-size: 11pt; "><span style="font-size: 7.5pt;
              font-family: Arial, sans-serif; color: rgb(146, 147,
              150);">Sr Principal Developer</span><span
              style="font-size: 7.5pt; font-family: Arial, sans-serif;"><o:p></o:p></span></p>
          <p class="MsoNormal" style="margin: 0in 0in 0.0001pt;
            font-size: 11pt; "><span style="font-size: 7.5pt;
              font-family: Arial, sans-serif; color: rgb(146, 147,
              150);">M&E-Product Development Group</span><span
              style="font-size: 7.5pt; font-family: Arial, sans-serif;"><o:p></o:p></span></p>
          <p class="MsoNormal" style="margin: 0in 0in 0.0001pt;
            font-size: 11pt; "><span style="font-size: 7.5pt;
              font-family: Arial, sans-serif;"> </span></p>
          <p class="MsoNormal" style="margin: 0in 0in 0.0001pt;
            font-size: 11pt; "><b><span style="font-size: 7pt;
                font-family: Arial, sans-serif; color: rgb(146, 147,
                150);">MAIN</span></b><span style="font-size: 7.5pt;
              font-family: Arial, sans-serif; color: rgb(146, 147,
              150);"> +1 514 393 1616</span><span style="font-size:
              7.5pt; font-family: Arial, sans-serif;"><o:p></o:p></span></p>
          <p class="MsoNormal" style="margin: 0in 0in 0.0001pt;
            font-size: 11pt; "><b><span style="font-size: 7pt;
                font-family: Arial, sans-serif; color: rgb(146, 147,
                150);">DIRECT</span></b><span style="font-size: 7.5pt;
              font-family: Arial, sans-serif; color: rgb(146, 147,
              150);"> +1 438 448 6304</span></p>
          <p class="MsoNormal" style="margin: 0in 0in 0.0001pt;
            font-size: 11pt; "><b><span style="font-size: 7pt;
                font-family: Arial, sans-serif; color: rgb(146, 147,
                150);">FAX</span></b><span style="font-size: 7.5pt;
              font-family: Arial, sans-serif; color: rgb(146, 147,
              150);"> +1 514 393 0110</span><span style="font-size:
              7.5pt; font-family: Arial, sans-serif;"><o:p></o:p></span></p>
          <p class="MsoNormal" style="margin: 0in 0in 0.0001pt;
            font-size: 11pt; "><span style="font-size: 7.5pt;
              font-family: Arial, sans-serif;"> </span></p>
          <p class="MsoNormal" style="margin: 0in 0in 0.0001pt;
            font-size: 11pt; "><a moz-do-not-send="true"
              href="http://twitter.com/autodesk" style="color: purple; "><span
                style="font-size: 7.5pt; font-family: Arial, sans-serif;
                color: rgb(146, 147, 150);">Twitter</span></a><span
              style="font-size: 7.5pt; font-family: Arial, sans-serif;
              color: rgb(146, 147, 150);"><o:p></o:p></span></p>
          <p class="MsoNormal" style="margin: 0in 0in 0.0001pt;
            font-size: 11pt; "><a moz-do-not-send="true"
              href="https://www.facebook.com/Autodesk" style="color:
              purple; "><span style="font-size: 7.5pt; font-family:
                Arial, sans-serif; color: rgb(146, 147, 150);">Facebook</span></a><span
              style="font-size: 7.5pt; font-family: Arial, sans-serif;
              color: rgb(146, 147, 150);"><o:p></o:p></span></p>
          <p class="MsoNormal" style="margin: 0in 0in 0.0001pt;
            font-size: 11pt; "><span style="font-size: 7.5pt;
              font-family: Arial, sans-serif;"> </span></p>
          <p class="MsoNormal" style="margin: 0in 0in 0.0001pt;
            font-size: 11pt; "><b><span style="font-size: 7.5pt;
                font-family: Arial, sans-serif; color: rgb(146, 147,
                150);">Autodesk, Inc.</span></b><span style="font-size:
              7.5pt; font-family: Arial, sans-serif;"><o:p></o:p></span></p>
          <p class="MsoNormal" style="margin: 0in 0in 0.0001pt;
            font-size: 11pt; "><span style="font-size: 7.5pt;
              font-family: Arial, sans-serif; color: rgb(146, 147,
              150);">10 Duke Street</span><span style="font-size: 7.5pt;
              font-family: Arial, sans-serif;"><o:p></o:p></span></p>
          <p class="MsoNormal" style="margin: 0in 0in 0.0001pt;
            font-size: 11pt; "><span style="font-size: 7.5pt;
              font-family: Arial, sans-serif; color: rgb(146, 147,
              150);">Montreal, Quebec, Canada H3C 2L7</span><span
              style="font-size: 7.5pt; font-family: Arial, sans-serif;"><o:p></o:p></span></p>
          <p class="MsoNormal" style="margin: 0in 0in 0.0001pt;
            font-size: 11pt; "><a moz-do-not-send="true"
              href="http://www.autodesk.com/" style="color: purple; "><span
                style="font-size: 7.5pt; font-family: Arial, sans-serif;
                color: rgb(146, 147, 150);">www.autodesk.com</span></a><span
              style="color: rgb(146, 147, 150); "><o:p></o:p></span></p>
          <p class="MsoNormal" style="margin: 0in 0in 0.0001pt;
            font-size: 11pt; "><span style="font-size: 7.5pt;
              font-family: Arial, sans-serif; color: rgb(146, 147,
              150);"> </span></p>
          <p class="MsoNormal" style="margin: 0in 0in 0.0001pt;
            font-size: 11pt; "><img id="Picture_x0020_1"
              src="cid:part5.02050202.00080405@constrainttechnologies.com"
              alt="Description: Email_Signature_Logobar"
              type="image/png" height="41" width="283" border="0"><o:p></o:p></p>
          <div style="font-family: Calibri; font-size: medium; ">
            <p class="MsoNormal" style="margin: 0in 0in 0.0001pt;
              font-size: 11pt; font-family: Calibri, sans-serif; ">
              <span style="font-size: 11.5pt; "> </span></p>
          </div>
        </div>
      </div>
      <div><br>
      </div>
      <span id="OLK_SRC_BODY_SECTION">
        <div style="font-family:Calibri; font-size:11pt;
          text-align:left; color:black; BORDER-BOTTOM: medium none;
          BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; PADDING-LEFT:
          0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid;
          BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
          <span style="font-weight:bold">From: </span>llvm-dev <<a
            moz-do-not-send="true"
            href="mailto:llvm-dev-bounces@lists.llvm.org"><a class="moz-txt-link-abbreviated" href="mailto:llvm-dev-bounces@lists.llvm.org">llvm-dev-bounces@lists.llvm.org</a></a>>
          on behalf of Morten Brodersen via llvm-dev <<a
            moz-do-not-send="true" href="mailto:llvm-dev@lists.llvm.org"><a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a></a>><br>
          <span style="font-weight:bold">Reply-To: </span>Morten
          Brodersen <<a moz-do-not-send="true"
            href="mailto:Morten.Brodersen@constrainttec.com">Morten.Brodersen@constrainttec.com</a>><br>
          <span style="font-weight:bold">Date: </span>jeudi 4 février
          2016 22:39<br>
          <span style="font-weight:bold">To: </span>llvm-dev <<a
            moz-do-not-send="true" href="mailto:llvm-dev@lists.llvm.org"><a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a></a>><br>
          <span style="font-weight:bold">Subject: </span>Re: [llvm-dev]
          MCJit Runtine Performance<br>
        </div>
        <div><br>
        </div>
        <blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE"
          style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0
          0 0 5;">
          <div>
            <div text="#000000" bgcolor="#FFFFFF">Hi Lang,<br>
              <br>
              > MCJIT does not compile lazily (though it sounds like
              that's not an issue here?)<br>
              <br>
              That is not an issue here since the code JIT's once (a few
              secs) and then run the generated machine code for hours.<br>
              <br>
              > Morten - Can you share any test cases that
              demonstrate the slowdown. I'd love to take a look at this.<br>
              <br>
              The code is massive so not practical. However I will try
              and extract an example function that demonstrates the
              difference (as per previous email).<br>
              <br>
              <div class="moz-cite-prefix">On 05/02/16 11:52, Lang Hames
                wrote:<br>
              </div>
              <blockquote
cite="mid:CALLttgrYxh61zpK0q-v-Ng-bidwpazPvmU3yYuF5XaLq6T7m_A@mail.gmail.com"
                type="cite">
                <div dir="ltr">These are some pretty extreme slowdowns.
                  The legacy JIT shared the code generator with MCJIT,
                  and as far as I'm aware there were really only three
                  main differences:
                  <div><br>
                  </div>
                  <div>1) The legacy JIT used a custom instruction
                    encoder, whereas MCJIT uses MC.</div>
                  <div>2) (Related to 1) MCJIT needs to perform runtime
                    linking of the object files produced by MC.</div>
                  <div>3) MCJIT does not compile lazily (though it
                    sounds like that's not an issue here?)</div>
                  <div><br>
                  </div>
                  <div>Keno - did you ever look at the codegen pipeline
                    construction for the legacy JIT vs MCJIT? Are we
                    choosing different passes?</div>
                  <div><br>
                  </div>
                  <div>Morten - Can you share any test cases that
                    demonstrate the slowdown. I'd love to take a look at
                    this.</div>
                  <div><br>
                  </div>
                  <div>Cheers,</div>
                  <div>Lang.</div>
                </div>
                <div class="gmail_extra"><br>
                  <div class="gmail_quote">On Thu, Feb 4, 2016 at 4:16
                    PM, Hal Finkel via llvm-dev <span dir="ltr">
                      <<a moz-do-not-send="true"
                        class="moz-txt-link-abbreviated"
                        href="mailto:llvm-dev@lists.llvm.org">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">
                      <span class="">----- Original Message -----<br>
                        > From: "Keno Fischer via llvm-dev" <<a
                          moz-do-not-send="true"
                          class="moz-txt-link-abbreviated"
                          href="mailto:llvm-dev@lists.llvm.org"><a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a></a>><br>
                        > To: "Morten Brodersen" <<a
                          moz-do-not-send="true"
                          href="mailto:Morten.Brodersen@constrainttec.com"><a class="moz-txt-link-abbreviated" href="mailto:Morten.Brodersen@constrainttec.com">Morten.Brodersen@constrainttec.com</a></a>><br>
                        > Cc: "llvm-dev" <<a
                          moz-do-not-send="true"
                          href="mailto:llvm-dev@lists.llvm.org"><a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a></a>><br>
                        > Sent: Thursday, February 4, 2016 6:05:29 PM<br>
                        > Subject: Re: [llvm-dev] MCJit Runtine
                        Performance<br>
                        ><br>
                        ><br>
                        ><br>
                        > Yes, unfortunately, this is very much
                        known. Over in the julia<br>
                        > project, we've recently gone through this
                        and taken the hit (after<br>
                        > doing some work to fix the very extreme
                        corner cases that we were<br>
                        > hitting). We're not entirely sure why the
                        slowdown is this<br>
                        > noticable, but at least in our case,
                        profiling didn't reveal any<br>
                        > remaining low hanging fruits that are
                        responsible. One thing you can<br>
                        > potentially try if you haven't yet is to
                        enable fast ISel and see if<br>
                        > that brings you closer to the old runtimes.<br>
                        <br>
                      </span>And maybe the register allocator? Are you
                      using the greedy one or the linear one? Are there
                      any other MI-level optimizations running?<br>
                      <br>
                       -Hal<br>
                      <div class="HOEnZb">
                        <div class="h5"><br>
                          ><br>
                          ><br>
                          > On Thu, Feb 4, 2016 at 7:00 PM, Morten
                          Brodersen via llvm-dev <<br>
                          > <a moz-do-not-send="true"
                            href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>
                          > wrote:<br>
                          ><br>
                          ><br>
                          > Hi All,<br>
                          ><br>
                          > We recently upgraded a number of
                          applications from LLVM 3.5.2 (old<br>
                          > JIT) to LLVM 3.7.1 (MCJit).<br>
                          ><br>
                          > We made the minimum changes needed for
                          the switch (no changes to the<br>
                          > 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<br>
                          > all applications.<br>
                          ><br>
                          > The applications I am talking about
                          optimize airline rosters and<br>
                          > pairings. LLVM is used for compiling high
                          level business rules to<br>
                          > efficient machine code.<br>
                          ><br>
                          > A typical optimization run takes 6 to 8
                          hours. So a 30% to 40%<br>
                          > 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<br>
                          > to MCJIt. We also tried different ways to
                          optimize the IR.<br>
                          ><br>
                          > However all results indicate that the
                          performance drop happens in the<br>
                          > (black box) IR to machine code stage.<br>
                          ><br>
                          > So my question is if the runtime
                          performance reduction is<br>
                          > known/expected for MCJit vs. old JIT? Or
                          if we might be doing<br>
                          > something wrong?<br>
                          ><br>
                          > If you need more information, in order to
                          understand the issue,<br>
                          > 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">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>
                          ><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>
                          <br>
                        </div>
                      </div>
                      <span class="HOEnZb"><font color="#888888">--<br>
                          Hal Finkel<br>
                          Assistant Computational Scientist<br>
                          Leadership Computing Facility<br>
                          Argonne National Laboratory<br>
                        </font></span>
                      <div class="HOEnZb">
                        <div class="h5">_______________________________________________<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>
                        </div>
                      </div>
                    </blockquote>
                  </div>
                  <br>
                </div>
              </blockquote>
              <br>
            </div>
          </div>
        </blockquote>
      </span>
    </blockquote>
    <br>
  </body>
</html>