Christos Margiolas
2015-Jun-06 10:42 UTC
[LLVMdev] Supporting heterogeneous computing in llvm, follow up.
Hello, As I first e-mailed yesterday, I have been working on a Heterogeneous Execution Engine (Hexe) that provides compiler and runtime support for the automatic and transparent offloading of loop and function workloads to accelerators. Hexe is composed of the following: a) Analysis and Transformation Passes for extracting loops or functions for offloading. b) A runtime library that handles scheduling, data sharing and coherency between the host and accelerator sides. 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. I have prepared a presentation that I would like to share. It provides a high level overview of the work. You can find it here: https://drive.google.com/file/d/0B5GasMlWJhTOb2tXTDZsal9qclE/view?usp=sharing In the next days I will push patches on phabricator, so people can give detailed feedback on the code and design. This may also help with coming up strategies on what needs to be done or changed. Regards Chris -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150606/d9e45fdb/attachment.html>
Eric Christopher
2015-Jun-06 19:30 UTC
[LLVMdev] Supporting heterogeneous computing in llvm, follow up.
Hi Christos, I've taken a look at your slide deck and have been thinking about how to do this for a while as well. I definitely think this is a good start and am looking forward to the patches. I think getting the right compilation strategy is going to be important here and it's going to take quite a bit of thought to work through what you've got. The patches are likely going to illuminate this quite a bit more. I'm also curious about any syntactic sugar (ala cuda/etc) that you're thinking about here. There are some reasonable starts in llvm already for opencl/cuda and I'm curious how you see this extending those efforts in a more general fashion. I'm looking forward to more work along these lines. Thanks! -eric On Sat, Jun 6, 2015 at 3:45 AM Christos Margiolas <chrmargiolas at gmail.com> wrote:> Hello, > > As I first e-mailed yesterday, I have been working on a Heterogeneous > Execution Engine (Hexe) that provides compiler and runtime support for the > automatic and transparent offloading of loop and function workloads to > accelerators. > > Hexe is composed of the following: > a) Analysis and Transformation Passes for extracting loops or functions > for offloading. > b) A runtime library that handles scheduling, data sharing and coherency > between the > host and accelerator sides. > 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. > > I have prepared a presentation that I would like to share. It provides a > high level overview of the work. You can find it here: > > https://drive.google.com/file/d/0B5GasMlWJhTOb2tXTDZsal9qclE/view?usp=sharing > <https://urldefense.proofpoint.com/v2/url?u=https-3A__drive.google.com_file_d_0B5GasMlWJhTOb2tXTDZsal9qclE_view-3Fusp-3Dsharing&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=t542M_R9-hujomeI8c5bhqxLWhU4TYoljPwY_9i-x-U&s=XK0h3MbI-JivGXCxAI6Po54lQf_K9wx0d3GrzZ7D1SE&e=> > > In the next days I will push patches on phabricator, so people can give > detailed feedback on the code and design. This may also help with coming up > strategies on what needs to be done or changed. > > Regards > Chris > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150606/632ea77b/attachment.html>
Heinrich Riebler
2015-Jun-08 14:11 UTC
[LLVMdev] Supporting heterogeneous computing in llvm, follow up.
Hello Chris, your work sounds very interesting. We are working on something quite similar. Our system, called BAAR (Binary Acceleration at Runtime), analyzes an application in LLVM IR at runtime, identifies hotspots and generates parallelized and vectorized implementations on-the-fly. Afterwards the offloading is done transparently. In contrast to your work, we are targeting the Intel Xeon Phi accelerator (Intel Many Integrated Core Architecture; MIC). To detect suitable loops we are using Polly and to get the binary for the accelerator we are leveraging the Intel compilers. The overall architecture is basically client/server-style. You can find more details in our publication. The project is open source, available at https://github.com/pc2/baar We are looking forward to hear and see more from Hexe. Regards, Heinrich
Christos Margiolas
2015-Jun-09 07:34 UTC
[LLVMdev] Supporting heterogeneous computing in llvm, follow up.
Hi Eric, I agree that handling offloading and multiple architectures can be tricky and the design needs to be careful. I believe my design makes some sense :) however I don't "sell" it as a final solution. Many issues need to be considered and examined carefully. Apologies for delaying the patches. I am presenting at a conference this week so I have to prepare a presentation etc. On Sat, Jun 6, 2015 at 12:30 PM, Eric Christopher <echristo at gmail.com> wrote:> Hi Christos, > > I've taken a look at your slide deck and have been thinking about how to > do this for a while as well. I definitely think this is a good start and am > looking forward to the patches. I think getting the right compilation > strategy is going to be important here and it's going to take quite a bit > of thought to work through what you've got. The patches are likely going to > illuminate this quite a bit more. I'm also curious about any syntactic > sugar (ala cuda/etc) that you're thinking about here. There are some > reasonable starts in llvm already for opencl/cuda and I'm curious how you > see this extending those efforts in a more general fashion. > > I'm looking forward to more work along these lines. > > Thanks! > > -eric > > On Sat, Jun 6, 2015 at 3:45 AM Christos Margiolas <chrmargiolas at gmail.com> > wrote: > >> Hello, >> >> As I first e-mailed yesterday, I have been working on a Heterogeneous >> Execution Engine (Hexe) that provides compiler and runtime support for the >> automatic and transparent offloading of loop and function workloads to >> accelerators. >> >> Hexe is composed of the following: >> a) Analysis and Transformation Passes for extracting loops or functions >> for offloading. >> b) A runtime library that handles scheduling, data sharing and coherency >> between the >> host and accelerator sides. >> 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. >> >> I have prepared a presentation that I would like to share. It provides a >> high level overview of the work. You can find it here: >> >> https://drive.google.com/file/d/0B5GasMlWJhTOb2tXTDZsal9qclE/view?usp=sharing >> <https://urldefense.proofpoint.com/v2/url?u=https-3A__drive.google.com_file_d_0B5GasMlWJhTOb2tXTDZsal9qclE_view-3Fusp-3Dsharing&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=t542M_R9-hujomeI8c5bhqxLWhU4TYoljPwY_9i-x-U&s=XK0h3MbI-JivGXCxAI6Po54lQf_K9wx0d3GrzZ7D1SE&e=> >> >> In the next days I will push patches on phabricator, so people can give >> detailed feedback on the code and design. This may also help with coming up >> strategies on what needs to be done or changed. >> >> Regards >> Chris >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150609/2b321ac6/attachment.html>
Christos Margiolas
2015-Jul-08 00:25 UTC
[LLVMdev] Supporting heterogeneous computing in llvm, follow up.
Hi Heinrich, It looks quite interesting and I am definitely interested in auto-parallelization and auto-vectorization for Hexe. My code is on phabricator, however I have just organized it as two huge patches for now and I need to provide more information about it. thanks, chris On Mon, Jun 8, 2015 at 3:11 PM, Heinrich Riebler < heinrich.riebler at uni-paderborn.de> wrote:> Hello Chris, > > your work sounds very interesting. > > We are working on something quite similar. Our system, called BAAR > (Binary Acceleration at Runtime), analyzes an application in LLVM IR at > runtime, identifies hotspots and generates parallelized and vectorized > implementations on-the-fly. Afterwards the offloading is done > transparently. > In contrast to your work, we are targeting the Intel Xeon Phi accelerator > (Intel Many Integrated Core Architecture; MIC). To detect suitable loops we > are using Polly and to get the binary for the accelerator we are leveraging > the Intel compilers. The overall architecture is basically > client/server-style. > > You can find more details in our publication. The project is open source, > available at https://github.com/pc2/baar > > We are looking forward to hear and see more from Hexe. > > Regards, > Heinrich > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150708/a9f5959f/attachment.html>