<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hi All,<div><br></div><div>Ok -- sounds like there's enough interest to keep going with these status updates. You can expect update #2 in a couple of days. :)</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Nice idea! - might even be worth spinning up a separate channel on the Discord for the JIT?</blockquote><div><br></div><div>Seems reasonable to me. There has been a lot of JIT discussion in #llvm -- it might be nice to move it to a #jit channel to maximize the signal-to-noise ratio.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">My use case for ORC is an expression-evaluator library I'm working on called JitCat (<a href="http://www.jitcat.org/" target="_blank">www.jitcat.org</a>)...<br></blockquote><div><br></div><div>Sounds very cool! </div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">I'm for the most part just a lowly user of ORC but I try to contribute here and there when I can. Mostly by nagging about COFF support through bug reports ;-). </blockquote><div><br></div><div> Anything you can contribute (bug reports included) is very welcome. Debugging and development for Windows is *extra* welcome, since I don't have a windows box to develop or test with.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">One thing that will be useful (and was done to some extent with ORCv1) is to expose ORCv2's API via C-compatible bindings such that code from languages other than C++ (Rust for me) can effectively use it, including things such as the equivalent of -march=native and introspection such that the supported SIMD widths can be detected. I'm planning on using ORC to compile shaders for Kazan, the GPU driver that I'm writing for libre-riscv's hybrid cpu/gpu.</blockquote><div><br></div><div></div><div>That's a really good point. And timely: We need an ORCv2 C API before we can kill off ORCv1. We should use <a href="http://llvm.org/PR31103">http://llvm.org/PR31103</a> to track this (hopefully we can finally close it). If you're interested in this work please CC yourself on that bug.</div><div><br></div><div>There are two approaches we can take to C bindings for ORCv2. The first one I'll call "wrap LLJIT", and it's pretty much what it sounds like: We provide an API for initializing an LLJITBuilder, and accessing methods in the resulting LLJIT object. This would provide a similar level of functionality to the ExecutionEngine bindings, and also enable basic lazy compilation. The second approach would be to wrap the lower level APIs (ExecutionSession, MaterializationUnit, etc.) to allow clients to build their own JIT instances in C. These approaches aren't mutually exclusive, and the best way forward is probably to start with the first approach, then add elements from the second over time.</div><div><br></div><div>Any volunteers to work on this? I need to finish the new initializer work before I can tackle this, so I might be a while yet.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">As a starter using LLVM JIT to improve OLAP execution engine performance, I'm very glad to hear that. I can't find some useful document help me get start to use the new ORC JIT API quickly. Only can find some examples how to use it, but don't know the internal from low level, and very blurred to design a clearly JIT toolset. Hope more tutorials add in and help ORC JIT more easy to adoption. </blockquote><div><br></div><div>Ok. Which tutorials have you been following? If possible, could you write some notes on where you got stuck, or where the design was difficult to follow? That will help us determine where the documentation and tutorials could most benefit from improvement.</div><div><br></div><div>-- Lang.</div></div></div></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jan 17, 2020 at 11:35 PM guangnan he <<a href="mailto:gnhe2009@gmail.com">gnhe2009@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hi, Lang</div><div>As a starter using LLVM JIT to improve OLAP execution engine performance, I'm very glad to hear that. I can't find some useful document help me get start to use the new ORC JIT API quickly. Only can find some examples how to use it, but don't know the internal from low level, and very blurred to design a clearly JIT toolset. Hope more tutorials add in and help ORC JIT more easy to adoption. <br></div><div>Big thanks. <br></div><div><br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Jacob Lifshay via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> 于2020年1月17日周五 下午11:38写道:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="auto"><div>Thank you for creating weekly updates, they will be quite useful, since previously ORC development seemed rather opaque.<div dir="auto"><br></div><div dir="auto">One thing that will be useful (and was done to some extent with ORCv1) is to expose ORCv2's API via C-compatible bindings such that code from languages other than C++ (Rust for me) can effectively use it, including things such as the equivalent of -march=native and introspection such that the supported SIMD widths can be detected. I'm planning on using ORC to compile shaders for Kazan, the GPU driver that I'm writing for libre-riscv's hybrid cpu/gpu.</div><div dir="auto"><br></div><div dir="auto">Jacob Lifshay</div></div></div>
_______________________________________________<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="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr"><div dir="ltr"><div>Guang-Nan He<br><br></div></div></div>
</blockquote></div>