[PATCH 0/6] Parallelize Intra-Procedural Optimizations using the LTO Engine.

Giuliano Belinassi giuliano.belinassi@usp.br
Sat Aug 22 21:04:48 GMT 2020

Hi, Josh

On 08/21, Josh Triplett wrote:
> On Thu, Aug 20, 2020 at 07:00:13PM -0300, Giuliano Belinassi wrote:
> > This patch series add a new flag "-fparallel-jobs=" to control if the
> > compiler should try to compile the current file in parallel.
> [...]
> > Bootstrapped and Regtested on Linux x86_64.
> > 
> > Giuliano Belinassi (6):
> >   Modify gcc driver for parallel compilation
> >   Implement a new partitioner for parallel compilation
> >   Implement fork-based parallelism engine
> >   Add `+' for Jobserver Integration
> >   Add invoke documentation
> >   New tests for parallel compilation feature
> Very nice!

Thank you for your interest in this :)

> I'm interested in testing this on a highly parallel system. What
> baseline do these patches apply to?  They don't seem to apply to GCC
> trunk.

Hummm, this was supposed to work on trunk out of the box. However,
there is a high probability that I messed up something while rebasing.
I will post a version 2 of it when I get more comments and when I fix
the Makefile issue that Joseph pointed out in other e-mail.

If you want to test it on a high parallel system, I think it will be
cool to see how it behaves also when --param=promote-statics=1, as it
increases parallelism opportunity. :)

> Also, I tried to bootstrap the current tip of the devel/autopar_devel
> branch, but ended up with compiler segfaults that all look like this:
> ../../gcc/zlib/compress.c:86:1: internal compiler error: Segmentation fault
>    86 | }
>       | ^

Well, there was once a bug in this branch when compiling with -flto that
caused the assembler output file not to be properly initialized early
enough, resulting in LTO LGEN stage writing into a invalid FILE pointer.
I fixed this during rebasing but I forgot to push to the autopar_devel
branch. In any case, I just pushed the recent changes to autopar_devel
which fix this issue.

In any case, -fparallel-jobs= should NOT be used together with -flto.
Although I used part of the LTO engine for development of this feature,
they are meant for distinct things. I guess I should give a warning
about that in next version :)

Also, I just tested bootstrap with

../gcc/configure --disable-multilib --enable-languages=c,c++

on x86_64 linux and it is working.

Thank you,

More information about the Gcc-patches mailing list