<div dir="ltr">Thanks for the comments. I'm going to submit this as there seem to be no objections.</div><br><div class="gmail_quote"><div dir="ltr">On Wed, Dec 12, 2018 at 10:37 PM David Greene <<a href="mailto:dag@cray.com">dag@cray.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">+1.  Great work!<br>
<br>
                            -David<br>
<br>
Andrea Di Biagio via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> writes:<br>
<br>
> Thanks Clement for working on this.<br>
><br>
> I like the idea of moving the core abstractions of llvm-mca in<br>
> llvm/lib, as it potentially enables a number of interesting use cases<br>
> and future developments.<br>
><br>
> As you wrote, the patch is very simple (a pretty mechanical change).<br>
> From my point of view, this all looks good. Let see if other people<br>
> have the same opinion on this.<br>
><br>
> -Andrea<br>
><br>
> On Wed, Dec 12, 2018 at 11:58 AM Clement Courbet <<a href="mailto:courbet@google.com" target="_blank">courbet@google.com</a>><br>
> wrote:<br>
><br>
>         (on the correct mailing list)<br>
><br>
>     <br>
>         Hi all,<br>
><br>
>     tl;dr: We'd like to propose moving tools/llvm-mca/lib into lib/MCA<br>
>     and create a new MCA library in LLVM.<br>
><br>
>     llvm-mca has recently been split into its core part and the tool<br>
>     part.<br>
><br>
>     *       The core part simulates the execution of a basic block of<br>
>       machine instructions as modeled by the llvm SchedModel.<br>
><br>
>     *       The tool part deals with the plumbing and interacting with<br>
>       the user.<br>
><br>
>     The core part can be used by parts of LLVM that deal with cost<br>
>     modeling (e.g. scheduling and vectorization). MCA provides a more<br>
>     realistic target for optimization than the heuristics typically<br>
>     used to drive these passes. We think that using approaches based<br>
>     on fine-grained cost modeling can greatly improve the performance<br>
>     of critically hot code, by trading compile time for performance.<br>
><br>
>     As an example of how MCA can be used to improve scheduling, we<br>
>     have built a prototype machine scheduler that optimizes the<br>
>     simulated latency of a block of code under the constraints of the<br>
>     scheduling DAG. We've had interesting wins of 2-3% on assembly<br>
>     kernels for webp and gemmlowp*.<br>
><br>
>     The patch is completely mechanical and can be seen here. It only<br>
>     moves the files and updates all references.<br>
><br>
>     We'd like to hear if there are any things comments/objections to<br>
>     this change.<br>
><br>
>     Thanks !<br>
><br>
>     *note: We did this before llvm-mca was released and were using a<br>
>     different simulator, but the idea remains the same.<br>
><br>
>     <br>
>     On Wed, Dec 12, 2018 at 11:44 AM Clement Courbet<br>
>     <<a href="mailto:courbet@google.com" target="_blank">courbet@google.com</a>> wrote:<br>
>     <br>
>     <br>
>                 Hi all,<br>
><br>
>         tl;dr: We'd like to propose moving tools/llvm-mca/lib into<br>
>         lib/MCA and create a new MCA library in LLVM.<br>
><br>
>         llvm-mca has recently been split into its core part and the<br>
>         tool part.<br>
><br>
>         *           The core part simulates the execution of a basic<br>
>           block of machine instructions as modeled by the llvm<br>
>           SchedModel.<br>
><br>
>         *           The tool part deals with the plumbing and<br>
>           interacting with the user.<br>
><br>
>         The core part can be used by parts of LLVM that deal with cost<br>
>         modeling (e.g. scheduling and vectorization). MCA provides a<br>
>         more realistic target for optimization than the heuristics<br>
>         typically used to drive these passes. We think that using<br>
>         approaches based on fine-grained cost modeling can greatly<br>
>         improve the performance of critically hot code, by trading<br>
>         compile time for performance.<br>
><br>
>         As an example of how MCA can be used to improve scheduling, we<br>
>         have built a prototype machine scheduler that optimizes the<br>
>         simulated latency of a block of code under the constraints of<br>
>         the scheduling DAG. We've had interesting wins of 2-3% on<br>
>         assembly kernels for webp and gemmlowp*.<br>
><br>
>         The patch is completely mechanical and can be seen here. It<br>
>         only moves the files and updates all references.<br>
><br>
>         We'd like to hear if there are any things comments/objections<br>
>         to this change.<br>
><br>
>         Thanks !<br>
><br>
>         *note: We did this before llvm-mca was released and were using<br>
>         a different simulator, but the idea remains the same.<br>
><br>
><br>
> _______________________________________________<br>
> LLVM Developers mailing list<br>
> <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
> <a 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>