GCC Sees More Progress On Ability To Parallelize The Compilation Of Large Source Files
While GCC with GNU Make and other build systems can scale nicely in compiling many files concurrently, there has been an ongoing GCC effort to be able to parallelize more of the GNU Compiler Collection work when compiling large source files.
Back in the summer of 2019 the work got underway for trying to address the parallelization bottleneck in letting more of the compiler work be parallelized in larger source files.
Good progress was made in 2019 while student developer Giuliano Belinassi is back with Google Summer of Code this year continuing the work.
Belinassi provided his second report today on the "automatic parallel compilation viability" for speeding up the compiling of large files along with integration for the GNU Jobserver.
The code is working and via a branched version of GCC it can be tried. Speedups on a quad-core Intel Core i7 mobile processor range from slight slowdowns to around 1.9x the speed of the original GCC code. The C, C++, and Fortran front-ends to GCC currently support this work while other front-ends may come in time.
Belinassi concluded the latest status report with "The current project is going well, although conservative approaches such as disable static promotion may impact negatively the parallelism potential. One way to fix this in the future is to communicate the final assembler file back to the main GCC process and then concatenate back into one assembler file, rather than do partial linking of multiple assembler files. This certainly will increase Interprocess Communication costs, but it may be worth."
Hopefully the work continues going well and this parallelization improvement for GCC ultimately makes it upstream in the not too distant future.
Back in the summer of 2019 the work got underway for trying to address the parallelization bottleneck in letting more of the compiler work be parallelized in larger source files.
Good progress was made in 2019 while student developer Giuliano Belinassi is back with Google Summer of Code this year continuing the work.
Belinassi provided his second report today on the "automatic parallel compilation viability" for speeding up the compiling of large files along with integration for the GNU Jobserver.
The code is working and via a branched version of GCC it can be tried. Speedups on a quad-core Intel Core i7 mobile processor range from slight slowdowns to around 1.9x the speed of the original GCC code. The C, C++, and Fortran front-ends to GCC currently support this work while other front-ends may come in time.
Belinassi concluded the latest status report with "The current project is going well, although conservative approaches such as disable static promotion may impact negatively the parallelism potential. One way to fix this in the future is to communicate the final assembler file back to the main GCC process and then concatenate back into one assembler file, rather than do partial linking of multiple assembler files. This certainly will increase Interprocess Communication costs, but it may be worth."
Hopefully the work continues going well and this parallelization improvement for GCC ultimately makes it upstream in the not too distant future.
Add A Comment