<div dir="ltr">I feel like this thread got a bit stalled. I'd like to pick it up and try to suggest a path forward.<div><br></div><div>I don't hear any real objections to the overall idea of having an LLVM subproject for parallelism runtimes and support libraries. I think we should get that created.</div><div><br></div><div>I don't actually see any real objections to StreamExecutor being one of the runtimes. There are some interesting questions however:</div><div>- Is there common code in the OpenMP runtime that could be unified with this?</div><div>- Could OpenMP end up using SE or some common shared library between them as a basis for offloading?</div><div>- Would instead it make more sense to have the OpenMP offload library be a plugin for StreamExecutor?</div><div><br></div><div>I don't know the answer to any of these really, but I also don't think that they should prevent us from making progress here. And I think if anything, they'll become easier to answer if we do.</div><div><br></div><div>So my suggestion would be:</div><div>1) Create the broader scoped LLVM subproject, including writing up its charter, scope, plans, etc.</div><div><br></div><div>2) Add stream executor to it</div><div><br></div><div>3) Initially, leave the OpenMP offloading stuff targeted at OpenMP. Then, as it evolves, consider moving it to be another runtime in the broad project if and when it makes sense.</div><div><br></div><div>4) As both OpenMP and SE evolve and are used some in the project, evaluate whether there is a common core that makes sense to extract. If so, do it and rebase them appropriately.</div><div><br></div><div><br></div><div>Does this make sense? Are there objections to moving forward here?</div></div>