Automatic parallelization in GCC

The goal of automatic parallelization is to transform a sequential loop to a parallel loop. Two main approaches exist, static and dynamic approaches ; people think that these two approaches are two enemy approaches, the goal of my thesis is to show that the opposite is true by proving that both methods can work together to achieve better performance. The second part of this work is to enable Graphite pass in GCC to communicate with external optimization tools. ( Graphite is a new pass in GCC based on the polyhedral model, it's being now actively developed by AMD, IBM and INRIA/Alchemy).

Why automatic parallelization ?

Hardware is going to the multicore era quickly, software people can not keep on, programming these parallel systems is not as easy as programming sequential machines. Through automatic parallelization, the programmer will be able to write a sequential code and leave the difficult parallelization step to the compiler.

Static and dynamic parallelization

When the compiler tries to parallelize a loop, sometimes it can decide at compile time whether this loop can be transformed into a parallel loop or not, but sometimes it can not decide, due to the lack of information. When the compiler can decide at compile time, the parallelization is static ; when it can not, the parallelization is called dynamic (another analysis is done at run time to test whether tho code is parallelizable).

Links

Peopel involved in Graphite

www-03.ibm.com_ibm_history_exhibits_logo_images_920916.jpg scrapetv.com_news_news_20pages_technology_images_amd-logo.jpg

 
automatic_parallelization.txt · Last modified: 2010/04/27 02:32 by baghdadi_riyadh