All:

Given a Data Dependency Graph(DDG) the unrolling degree proposed by Monica Lam 
et.al calculates the unrolling degree as follows.

Unrolling degree = Length of Longest Live range/ Number of cycles in the kernel 
( Initiation Interval). The unrolling degree based on the 
Above leads to more register Spills and Fetch inside the Loops.

Given the Data Dependency Graph(DDG) and the unrolling degree calculated as 
above we build the reuse graph. Lot has been presented 
On the Reuse graph. Each node nodes labelled the DDG nodes that writes into 
registers and the arc(u,v) represents that the destination 
Share same registers if there is no dependency between the between the 
iterations of DDG nodes.

As there is no dependency as represented by the Reuse graph the life time will 
not overlap and assign the same registers. Each arc will
Have the weight that describes the allocated registers and the Unrolling as 
proposed by Monica Lam given above The reuse graph will be
Partitioned based on the heuristics and the Sum of weights of each arc in each 
partitioned is calculated.  Then based on sum of weights of
Each partitioned reuse graphs the least common factor of all the weights will 
be the new Unrolling degree.

This new unrolling degree will lead to better register allocation and reduction 
of register pressure and  because the destination registers is
Shared between different iterations because of no dependency as described by 
the Data dependency distance given in DDG, the allocated 
registers will lead to less spill and Fetch.

The calculation of getting the Unrolling degree(new) as above will lead to 
register allocation  for loops ( that has the candidate of lots of 
Parallelism ) on assigning the Same destination registers between the DDG nodes 
having no dependency.

Some of the Logic for calculation of new unrolling degree is taken from the 
proposed Unrolling degree based on Periodic register allocation 
Albert Cohen et.al.

This will efficiently use before and after the register allocation based in gcc 
so that weights of each reuse graph that describes the allocated 
Registers Will be known after the register allocation and the weights that 
describes unrolling degree is done before register allocation and the
new Unrolling degree efficiently calculated that reduces the register pressure.

Suggestions?

Thanks & Regards
Ajit 

Reply via email to