<div dir="ltr">I created a GitHub repo that contains the documentation I have been creating for StreamExecutor. <a href="https://github.com/henline/streamexecutordoc">https://github.com/henline/streamexecutordoc</a><div><br></div><div>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).</div><div><br></div><div>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.</div><div><br></div><div>Best Regards,</div><div>-Jason</div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Mar 15, 2016 at 12:28 PM Andrey Bokhanko <<a href="mailto:andreybokhanko@gmail.com">andreybokhanko@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hola Chandler,</div><div dir="ltr"><div><br></div><div>On Tue, Mar 15, 2016 at 1:44 PM, Chandler Carruth via Openmp-dev <span dir="ltr"><<a href="mailto:openmp-dev@lists.llvm.org" target="_blank">openmp-dev@lists.llvm.org</a>></span> wrote:<br></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><span><div dir="ltr">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.<br></div></span><div><br></div></div></div></blockquote><div><br></div></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>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).</div><div><br></div><div>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:</div></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><span style="color:rgb(0,0,0);white-space:pre-wrap"><br></span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap">> Although OpenMP and StreamExecutor support different programming models,</span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap">> some of the work they perform under the hood will likely be very similar.</span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap">> By sharing code and domain expertise, both projects will be improved and</span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap">> strengthened as their capabilities are expanded. The StreamExecutor</span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap">> community looks forward to much collaboration and discussion with OpenMP</span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap">> about the best places and ways to cooperate.</span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap"><br></span></div></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><font color="#000000"><span style="white-space:pre-wrap">Espere veure't demà!</span></font><br></div><div><font color="#000000"><span style="white-space:pre-wrap"><br></span></font></div><div><font color="#000000"><span style="white-space:pre-wrap">Yours,</span></font></div><div><font color="#000000"><span style="white-space:pre-wrap">Andrey</span></font></div><div><font color="#000000"><span style="white-space:pre-wrap">=====</span></font></div><div><font color="#000000"><span style="white-space:pre-wrap">Enginyer de Software</span><br></font></div><div><font color="#000000"><span style="white-space:pre-wrap">Intel Compiler Team</span></font></div><div><font color="#000000"><span style="white-space:pre-wrap"><br></span></font></div></div></div></div>
</blockquote></div>