<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: arial,helvetica,sans-serif; font-size: 10pt; color: #000000'>I think that we should settle on a name and move on with this. Furthermore, I think that something broad, like 'parallel', is a good term for this. 'compiler-rt' is also broad (there are lots of different runtime libraries in it). I think that we, the larger LLVM community, want the SE developers and the lib*offload developers to form a mutually-collaborating part of the LLVM community, and so putting those two libraries in the same LLVM project makes sense. This will make it easy for, and will encourage, developers of both libraries to pay attention to commits to both libraries.<br><br>Given the nature of parallel-programming models, however, we don't want this to be too restricted in scope. Non-accelerator-based parallel programming runtimes can also potentially have a place here.<br><br>Thanks again,<br>Hal<br><br><hr id="zwchr"><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px; color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;"><b>From: </b>"via Openmp-dev" <openmp-dev@lists.llvm.org><br><b>To: </b>"Chandler Carruth" <chandlerc@gmail.com>, "Carlo Bertolli" <cbertol@us.ibm.com>, "Andrey Bokhanko" <andreybokhanko@gmail.com><br><b>Cc: </b>"llvm-dev" <llvm-dev@lists.llvm.org>, "cfe-dev" <cfe-dev@lists.llvm.org>, openmp-dev@lists.llvm.org<br><b>Sent: </b>Wednesday, May 11, 2016 3:53:42 AM<br><b>Subject: </b>Re: [Openmp-dev] [llvm-dev] [cfe-dev] RFC: Proposing an LLVM subproject for parallelism runtime and support libraries<br><br>
<div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">Ok at the end of the day why are you </div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">#1 fighting about the name? The names proposed aren't misleading. If it all comes down to feelings we're at an en passe of 2 vs 1 </div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">#2 why is having more projects with clear scopes a bad thing?</div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">------</div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">I can contribute at least 7 years of hands on accelerator library design experience across multiple accelerators and various programming models.. This of course doesn't make me "right" but I view things from a much larger picture than just SE.</div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">The build doesn't have to be complicated at all. It would be along the same lines as lldb or compiler-rt. This is an implementation detail and to me is a weak reason to not have focused projects. (yes I do love and advocate tightly coupled when it makes sense)</div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">Clear goals and mission means less confusion. It can always be expanded later. Right now we have 3.5 things which can more or less be contributed to the project.</div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">Intel offload library </div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">Your SE thing</div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">I can contribute an API for review which may help things work together in the future. (This is more long term) </div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">3.5 - the ocl runtime author works for Google btw</div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">They will all start disconnected but long term could slowly start to work together..</div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">A programming model is not a small scoped project.. it's like saying ocl, omp and other stuff should all be grouped together. SE is a programming model and if it's successful would need the same level of support as say cuda.</div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">Personally, I think your idea is good but there's many questions and on its own SE hasn't reached a level of maturity both technically and user adoption to warrant extreme views.</div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">OpenMP F2F meetings have like 50 companies and organizations represented. OpenACC has maybe 15 and 3 implementors. SE has.... </div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">Does Google have a products page talking about SE? Has there been any announcement of support? Docs and examples... I have asked many legitimate questions and so far not received solid answers..</div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><span style=""><br></span></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><span style="">In contrast.. look at how Apple handled the launch of SWIFT or go back 8 years and NVIDIA cuda.. or way back in1996 with SGI + OpenMP.. </span></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">More below and sorry if quotes are messed up</div> <div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><br style=""></div> <div style="font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"></div> <table style="background-color: white; border-spacing: 0px;" width="100%"> <tbody><tr><td colspan="2" style="background-color: rgb(255, 255, 255);"> <div style="border-style: solid none none; border-top: 1pt solid rgb(181, 196, 223); padding: 3pt 0in 0in; font-family: Tahoma,'BB Alpha Sans','Slate Pro'; font-size: 10pt;"> <div><b>From: </b>Chandler Carruth</div><div><b>Sent: </b>Wednesday, May 11, 2016 13:47</div><div><b>To: </b>cbergstrom@pathscale.com; Carlo Bertolli; Andrey Bokhanko</div><div><b>Cc: </b>llvm-dev; cfe-dev; openmp-dev@lists.llvm.org</div><div><b>Subject: </b>Re: [llvm-dev] [Openmp-dev] [cfe-dev] RFC: Proposing an LLVM subproject for parallelism runtime and support libraries</div></div></td></tr></tbody></table><div style="border-style: solid none none; border-top: 1pt solid rgb(186, 188, 209); background-color: rgb(255, 255, 255);"></div><br><div id="_originalContent" style=""><div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Tue, May 10, 2016 at 7:11 PM <<a href="mailto:cbergstrom@pathscale.com" target="_blank">cbergstrom@pathscale.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div style="background-color: rgb(255, 255, 255);" lang="en-US"> <div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">The words to describe what you're referring to are onload vs offloading. It's a very frequent term in networking as well as computation.</div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">Accelerator lib... feels odd</div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">What about computation lib?</div></div></blockquote><div><br></div><div>I don't find that any more clear.</div><div> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div style="background-color: rgb(255, 255, 255);" lang="en-US"><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">Sorry on phone and can't quote your text, but about math libraries and c++ standard..</div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">Math libs *really* need their own home, source repo and project page. Unix philosophy, do one thing and do it well.. I'm not a big fan of bucket of soup project.</div></div></blockquote><div><br></div><div>I agree with you about the overarching philosophy, but I don't think it applies well to subprojects of LLVM.</div><div><br></div><div>We should have *libraries* that do one thing and do them well. These libraries can have their own webpage and information, no problem. But they're all part of LLVM, and I'd like to keep the infrastructure as simple as possible. I really strongly feel like we should have a common home for these things that provides an umbrella of infrastructure, and then dedicated and specific information for the particular components.</div><div>>>></div><div>Simple infrastructure is possible with what I'm talking about. What you're saying is like clang+llvm+lldb should al be one repo, but the REALITY is they are 3 separate. Complete-rt has its own home.. it shares a mailing list because it's low volume..</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div style="background-color: rgb(255, 255, 255);" lang="en-US"><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"> At the target layer depending on it may be nice but not required. This is a big and wholly complex problem on its own. Do you write it in CUDA, OCL, asm, C.. is it just to provide vector versions of functions or what about transcendentals... what about cuFFTW alternative. then we go into accuracy vs speed discussions.. </div></div></blockquote><div><br></div><div>A lot of this is implementation questions. I think the mechanism of implementation should be largely based on what Clang and LLVM support well as that's the specific audience. I don't have strong opinions past that.</div><div><br></div><div>>>>></div><div>My view is something which plays nice at a slightly higher level.. clang and llvm support is Tier 1 and others contributing patches to play nice with others is welcomed. Would you disagree with that? </div><div><span style=""><br></span></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div style="background-color: rgb(255, 255, 255);" lang="en-US"><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">C++-standard... why would this live anywhere except libc++? Should filesystem be in compiler-rt instead?</div></div></blockquote><div><br></div><div>I'm not talking about the actual implementation of the C++ standard library, but the underlying *infrastructure* that is used. That infrastructure should be shared for lots of parallel programming workflows, one of which might be libc++'s APIs and others might be any of the other programmer interfaces here.</div><div><br></div><div>As a concrete example, you might want to use stream executor under the hood to implement some parts of the C++ standard library's parallel extensions.</div><div> </div><div>>>>>></div><div>I'm not opposed to it but...</div><div>I'm doubtful that SE would be the best target for implementing this. I won't go into specifics for why right now.</div><div><span style=""><br></span></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div style="background-color: rgb(255, 255, 255);" lang="en-US"><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">----</div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">To add more complexity to the conversation.. what about debugging and profiling api.. from a tools perspective it should likely be exposed from the runtime.</div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">You can call this a 'lib' but will it ever be a runtime?</div></div></blockquote><div><br></div><div>If there are runtime library components to support profiling and debugging, they should go there if they are parallel specific. We certainly have generic profiling libraries in compiler-rt.</div><div><br></div><div>I guess I'm not seeing the problem here. But I also suspect that we can cross this bridge when we get there. I'm currently not specifically interested in these pieces, I've mentioned the specific and concrete use cases I have in mind.</div><div><br></div><div><span style="">>>>></span></div><div><span style="">My concrete vision is </span></div><div><span style="">SE is a programming model and needs a dedicated home. It can start under liboffload but gradually needs to be refactored. This is the same as OMP.</span></div><div><span style=""><br></span></div><div><span style="">#2 SE, OMP and others long term target liboffload which then handles the target specific stuff. Be that AVX512/vec onload/offload or GPU..</span></div><div><span style=""><br></span></div><div><span style="">Liboffload will have many backends (nvidia/intel/amd) and many consumers (omp/se/etc)</span></div><div><span style=""><br></span></div><div><span style="">Are you strongly against this?</span></div><div><span style=""><br></span></div><div><span style=""><br></span></div><div><span style=""><br></span></div></div></div></div><br>_______________________________________________<br>Openmp-dev mailing list<br>Openmp-dev@lists.llvm.org<br>http://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev<br></blockquote><br><br><br>-- <br><div><span name="x"></span>Hal Finkel<br>Assistant Computational Scientist<br>Leadership Computing Facility<br>Argonne National Laboratory<span name="x"></span><br></div></div></body></html>