[cfe-dev] [Openmp-dev] RFC: Proposing an LLVM subproject for parallelism runtime and support libraries

Jason Henline via cfe-dev cfe-dev at lists.llvm.org
Mon Mar 28 09:37:06 PDT 2016

I did a more thorough read through liboffload and wrote up a more detailed
doc describing how StreamExecutor platforms relate to libomptarget RTL
interfaces. The doc also describes why the lack of support for streams in
libomptarget makes it impossible to implement some of the most important
StreamExecutor platforms in terms of libomptarget (
When I was originally optimistic about using liboffload to implement
StreamExecutor platforms, I was not aware of this issue with streams.
Thanks to Carlo Bertolli for bringing this to my attention.

After having looked in detail at the liboffload code, it sounds like the
best thing to do at this point is to keep StreamExecutor and liboffload
separate, but to leave the door open to implement future StreamExecutor
platforms in terms of liboffload. From the recent messages on this subject
from Carlo and Andrey it seems like there is a general consensus on this,
so I would like to move forward with the StreamExecutor project in this

On Tue, Mar 15, 2016 at 5:09 PM Jason Henline <jhen at google.com> wrote:

> I created a GitHub repo that contains the documentation I have been
> creating for StreamExecutor. https://github.com/henline/streamexecutordoc
> It contains the design docs from the original email in this thread, and it
> contains a new doc I just made that gives a more detailed sketch of the
> StreamExecutor platform plugin interface. This shows which methods must be
> implemented to support a new platform in StreamExecutor, or to provide a
> new implementation for an existing platform (e.g. using liboffload to
> implement the CUDA platform).
> I wrote up this doc in response to a lot of good questions I am getting
> about the details of how StreamExecutor might work with the code OpenMP
> already has in place.
> Best Regards,
> -Jason
> On Tue, Mar 15, 2016 at 12:28 PM Andrey Bokhanko <andreybokhanko at gmail.com>
> wrote:
>> Hola Chandler,
>> On Tue, Mar 15, 2016 at 1:44 PM, Chandler Carruth via Openmp-dev <
>> openmp-dev at lists.llvm.org> wrote:
>>> It seems like if the OpenMP folks want to add a liboffload plugin to
>>> StreamExecutor, that would be an awesome additional platform, but I don't
>>> see why we need to force the coupling here.
>> Let me give you a reason: while user-facing sides of StreamExecutor and
>> OpenMP are quite different (and each warrants its place under the sun!),
>> internal SE's offloading interface and liboffload are doing exactly the
>> same thing. Why we want to duplicate code? As previous replies
>> demonstrated, SE can't serve OpenMP's needs, while liboffload API seems to
>> be general enough to serve SE well (though this has to be verified, of
>> course -- as I understand, Jason is going to do this).
>> Sure, there is no "must have need" to couple SE and liboffload, but this
>> sounds like a solid software engineering decision to me. Or, quoting Jason,
>> who said this much better than me:
>> > Although OpenMP and StreamExecutor support different programming models,
>> > some of the work they perform under the hood will likely be very
>> similar.
>> > By sharing code and domain expertise, both projects will be improved and
>> > strengthened as their capabilities are expanded. The StreamExecutor
>> > community looks forward to much collaboration and discussion with OpenMP
>> > about the best places and ways to cooperate.
>> Espere veure't demà!
>> Yours,
>> Andrey
>> =====
>> Enginyer de Software
>> Intel Compiler Team
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160328/116d5405/attachment.html>

More information about the cfe-dev mailing list