<div dir="ltr">Hi Gerolf, <div><br></div><div>Thanks for the interest. I agree that this project may help in different directions and this is the reason I tried to keep it modular and independent of particular use cases. </div><div><br></div><div>--chris  </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jun 5, 2015 at 3:14 PM, Gerolf Hoflehner <span dir="ltr"><<a href="mailto:ghoflehner@apple.com" target="_blank">ghoflehner@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Hi Christos,<div><br></div><div>your idea can certainly go very far, and the capability of extracting and executing one loop nest at a time should enable progress in multiple directions, among them fast performance evaluation of loop transformations and benefits of accelerators. It could also be useful for measuring and tuning off-loading overhead.</div><div><br></div><div>Cheers</div><div><span class="HOEnZb"><font color="#888888">Gerolf</font></span><div><div class="h5"><br><div><blockquote type="cite"><div>On Jun 5, 2015, at 3:01 AM, Christos Margiolas <<a href="mailto:chrmargiolas@gmail.com" target="_blank">chrmargiolas@gmail.com</a>> wrote:</div><br><div><div dir="ltr">Hi Gerolf, <div><br></div><div>LLVM already has a Utility class for extracting loops to functions. However extracting code to a different module is something that is missing I think. Supporting a homogeneous variant is something I have considered and in fact the debug plugin I have written is a homogeneous variant. I "offload" to the same architecture. The idea could be further extended in a scheme where the offloaded code is loaded in a third process and the main process performs remote process calls. This would probably require extensive data transfers across the address spaces or a Memory Allocator that operates across the processes by using Inter-process shared memory.</div><div><br></div><div>--chris</div><div> </div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 4, 2015 at 5:57 PM, Gerolf Hoflehner <span dir="ltr"><<a href="mailto:ghoflehner@apple.com" target="_blank">ghoflehner@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Hi,<div><br></div><div>I can see even the homogenous variant of this to be useful. Just having the capability of extracting loops and wrapping them into functions and/or modules could help speeding up performance analysis and experiments. It would also help with testing the basic infrastructure + heterogenous environments.</div><div><br></div><div><br></div><div>Cheers</div><div>Gerolf</div><div><br><div><blockquote type="cite"><div><div><div>On Jun 4, 2015, at 5:35 PM, Christos Margiolas <<a href="mailto:chrmargiolas@gmail.com" target="_blank">chrmargiolas@gmail.com</a>> wrote:</div><br></div></div><div><div><div><div dir="ltr"><span style="font-size:12.8000001907349px">Hello All,</span><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">The last two months I have been working on the design and implementation of a heterogeneous execution engine for LLVM. I started this project as an intern at the Qualcomm Innovation Center and I believe it can be useful to different people and use cases. I am planning to share more details and a set of patches in the next </div><div style="font-size:12.8000001907349px">days. However, I would first like to see if there is an interest for this. </div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">The project is about providing compiler and runtime support for the automatic and transparent offloading of loop or function workloads to accelerators. </div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">It is composed of the following:</span></div><div style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">a) Compiler and Transformation Passes for extracting loops or functions for offloading.</span><br></div><div style="font-size:12.8000001907349px">b) A runtime library that handles scheduling, data sharing and coherency between the</div><div style="font-size:12.8000001907349px">host and accelerator sides.</div><div style="font-size:12.8000001907349px">c) A modular codebase and design. Adaptors specialize the code transformations for the target accelerators. Runtime plugins manage the interaction with the different accelerator environments.</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">So far, this work so far supports the Qualcomm DSP accelerator  but I am planning to extend it to support OpenCL accelerators. I have also developed a debug port where I can test the passes and the runtime without requiring an accelerator.</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">The project is still in early R&D stage and I am looking forward for feedback and to gauge  the interest level. I am willing to continue working on this as an open source project and bring it to the right shape so it can be merged with the LLVM tree. </div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">Regards,</div><div style="font-size:12.8000001907349px">Chris</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">P.S. I intent to join the llvm social in Bay Area tonight and I will be more than happy to talk about it.</div></div></div></div>
_______________________________________________<br>LLVM Developers mailing list<br><a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu/" target="_blank">http://llvm.cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br></div></blockquote></div><br></div></div></blockquote></div><br></div>
</div></blockquote></div><br></div></div></div></div></blockquote></div><br></div>