This is the mail archive of the
mailing list for the GCC project.
RE: Register Pressure guided Unroll and Jam in GCC !!
- From: Richard Biener <richard dot guenther at gmail dot com>
- To: Ajit Kumar Agarwal <ajit dot kumar dot agarwal at xilinx dot com>
- Cc: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>,Vladimir Makarov <vmakarov at redhat dot com>,Michael Eager <eager at eagercon dot com>,Vinod Kathail <vinodk at xilinx dot com>,Shail Aditya Gupta <shailadi at xilinx dot com>,Vidhumouli Hunsigida <vidhum at xilinx dot com>,Nagaraju Mekala <nmekala at xilinx dot com>
- Date: Mon, 16 Jun 2014 20:07:37 +0200
- Subject: RE: Register Pressure guided Unroll and Jam in GCC !!
- Authentication-results: sourceware.org; auth=none
- References: <ba4e6d53-1ceb-481b-b420-bb8847ca0a1b at BL2FFO11FD007 dot protection dot gbl> <CAFiYyc3yAq9EoLan7oHQkU5M4qUVwJAL75orPJ8fjJiA79Kz=g at mail dot gmail dot com> <a269a93a-a1fa-480b-8573-61a9682f1adf at BN1AFFO11FD010 dot protection dot gbl>
On June 16, 2014 6:39:58 PM CEST, Ajit Kumar Agarwal <email@example.com> wrote:
>From: Richard Biener [mailto:firstname.lastname@example.org]
>Sent: Monday, June 16, 2014 7:55 PM
>To: Ajit Kumar Agarwal
>Cc: email@example.com; Vladimir Makarov; Michael Eager; Vinod Kathail;
>Shail Aditya Gupta; Vidhumouli Hunsigida; Nagaraju Mekala
>Subject: Re: Register Pressure guided Unroll and Jam in GCC !!
>On Mon, Jun 16, 2014 at 4:14 PM, Ajit Kumar Agarwal
>> Hello All:
>> I have worked on the Open64 compiler where the Register Pressure
>Guided Unroll and Jam gave a good amount of performance improvement for
>the C and C++ Spec Benchmark and also Fortran benchmarks.
>> The Unroll and Jam increases the register pressure in the Unrolled
>Loop leading to increase in the Spill and Fetch degrading the
>performance of the Unrolled Loop. The Performance of Cache locality
>achieved through Unroll and Jam is degraded with the presence of
>Spilling instruction due to increases in register pressure Its better
>to do the decision of Unrolled Factor of the Loop based on the
>Performance model of the register pressure.
>> Most of the Loop Optimization Like Unroll and Jam is implemented in
>the High Level IR. The register pressure based Unroll and Jam requires
>the calculation of register pressure in the High Level IR which will
>be similar to register pressure we calculate on Register Allocation.
>This makes the implementation complex.
>> To overcome this, the Open64 compiler does the decision of Unrolling
>to both High Level IR and also at the Code Generation Level. Some of
>the decisions way at the end of the Code Generation . The advantage of
>using this approach like Open64 helps in using the register pressure
>information calculated by the Register Allocator. This helps the
>implementation much simpler and less complex.
>> Can we have this approach in GCC of the Decisions of Unroll and Jam
>in the High Level IR and also to defer some of the decision at the
>Code Generation Level like Open64?
>> Please let me know what do you think.
>>>Sure, you can for example compute validity of the transform during
>the GIMPLE loop opts, annotate the loop meta-information with the
>desired transform and apply it (or not) later >>during RTL unrolling.
>Thanks !! Has RTL unrolling been already implemented?
Yes but not of non-innermost loops afaik.
>> Thanks & Regards