[llvm-dev] Multi-Threading Compilers

Nicholas Krause via llvm-dev llvm-dev at lists.llvm.org
Fri Feb 28 08:35:06 PST 2020



On 2/28/20 12:56 AM, Chris Lattner wrote:
> On Feb 27, 2020, at 9:44 PM, Nicholas Krause <xerofoify at gmail.com 
> <mailto:xerofoify at gmail.com>> wrote:
>> On 2/28/20 12:19 AM, Chris Lattner wrote:
>>> Hi Nicholas,
>>>
>>> You might want to check out MLIR: its pass manager is already 
>>> automatically and implicitly multithreaded.
>>>
>>> -Chris
>> Chris,
>>
>> I was aware that LLVM was moving to MLIR at some point due to this. 
>> I've curious as
>> to how MLIR deals with IPO as that's the problem I was running into. 
>> Even if you have
>> pipelines what guarantees do we have about IPO or are there any. For 
>> example if an
>> analysis pass runs after a loop pass for heuristics to get good 
>> data,  does MLIR ensure
>> that?   The problem isn't getting a pipeline as much as IPO issues in 
>> terms of rescheduling
>> in a pipeline or incorrectly splitting up into pipelines. I yet to 
>> find a good solution on the
>> GCC side as well and it seems that there will be issues with this no 
>> matter what, not
>> sure of what trade offs the LLVM side is willing to make.
>
> Hi Nicholas,
>
> It is very difficult to mix things like loop passes and IPO passes in 
> any system, unless one is prepared to preserve the analysis results 
> that the other depend on.  One nice thing about MLIR is that it 
> defines this away, by allowing explicit representation of loops in the 
> IR.  This means that it isn’t an analysis pass that gets “invalidated” 
> like the existing LLVM LoopInfo analysis pass.  It is just 
> structurally impossible for this to happen.  I don’t think that all of 
> the AnalysisPass’s in LLVM have been super successful.
>
>> The other issues is that graph data structures to my knowledge do not 
>> allow insertion
>> of multiple nodes at the same time or how to scale the graphs for 
>> callers or SSA. Not
>> sure if you guys have encapsulated the operators and data structures 
>> in a series of
>> classes as that would be the first part. The other part is figuring 
>> out how to link and
>> interact with build systems to launch threads from make -j or other 
>> similar things.
>
> Yeah, MLIR handles that by factoring global use-def chains on symbols 
> (e.g. functions) as being different than local use-def chains. This 
> makes it much more efficient. You can find more information on MLIR 
> symbols here <https://mlir.llvm.org/docs/SymbolsAndSymbolTables/>.
>
>> Thanks for the notice about MLIR through maybe my IPO is not really there
>> but after reading parts of it seems to be a issue through a little 
>> smaller still
>> and thanks for the  prompt response,
>
> Sure, happy to help.  It would be great to see a GIMPLE dialect in 
> MLIR someday :-)
>
> -Chris
Chris,

I asked the GCC what they want to do about MLIR and am waiting for a 
reply. Anyhow what is the status and
what parts are we planning to move to MLIR in LLVM/Clang.  I've not seen 
any discussion on that other than
starting to plan for it.  Perhaps we should start a wiki page for that 
as I don't think all parts need to be MLIR.
I don't have access to writing for the wiki so unfortunately I can't 
start writing it up unless I get access.

Regards and this is one reason you do your research before writing a 
multi-threading program a lot of the
research or work has been done at this point,
Nick
>
>>
>> Nick
>>>> On Feb 27, 2020, at 7:05 PM, Nicholas Krause via llvm-dev 
>>>> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>>>>
>>>> Greetings All,
>>>>
>>>> For the last few months since the GCC Cauldron I've been 
>>>> researching/helping out
>>>> plan for multi-threading GCC. I've posted my GCC ideas here:
>>>> https://docs.google.com/document/d/1po_RRgSCtRyYgMHjV0itW8iOzJXpTdHYIpC9gUMjOxk/edit
>>>>
>>>> as I've heard there is interest on the LLVM side as well. I've 
>>>> talked to some of the IBM folks from
>>>> the Toronto area about it face to face due to them having more 
>>>> middle end and back end knowledge
>>>> then me.
>>>>
>>>> Not sure if anyone is interested in my ideas or wants me to extend 
>>>> my help on the LLVM side,
>>>>
>>>> Nick
>>>> _______________________________________________
>>>> LLVM Developers mailing list
>>>> llvm-dev at lists.llvm.org
>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200228/a50b3cb3/attachment.html>


More information about the llvm-dev mailing list