 | HP/Gelato Workshop: Improving the GNU Compiler Collection (GCC) on Itanium January 26-27, 2005 in Geneva, Switzerland
| |
 |
Many have dismissed Itanium as viable platform based only on GCC-compiled application performance. It is generally thought that improving GCC performance on Itanium will accelerate Itanium's adoption in the broader computing community beyond HPC.
This workshop brought together members of the Gelato Federation and the GCC community interested in improving GCC (the GNU Compiler Collection) on Itanium 2 processors. An "improved GCC" is a GCC that produces faster running code for Itanium 2, ideally in shorter compilation times.
The initial goals for the workshop were to develop and encourage an active Gelato forum for discussing issues related to improving GCC on Itanium, understand work in progress that could be applied to improving GCC, and examine ways to cooperate/collaborate in improving GCC. For full details on the workshop, please read the discussion notes.
The workshop accomplished the following:
- Identified specific improvements to GCC that could potentially boost performance on Itanium 2.
- Broke down the top three improvements thought most likely to produce significant benefit into specific tasks, in order to gain insight into the expertise and levels of effort required to implement these improvements.
- Allowed attendees to exchange information on their relevant work that might be leveraged into improvement implementations.
- Discussed how to work with the community and get the changes accepted upstream.
- Identified possible project managers and implementers for each of the three recommended GCC improvements.
|
 |
| Meeting Details |
 |
Workshop Agenda
Attendee Details
Discussion Notes
Photographs
|
 |
 |
| Recommended Improvements |
 |
The top three possible improvements were selected based on metrics of:
(1) Difficulty—technical, effort level, and political ramifications.
(2) Benefit—runtime integer (INT) performance, runtime pfloating point (FP) performance, and leveragability of the changes.
It was decided that the best performance metric to use would be runtime INT performance, given that the most common applications used are typically integer applications, and would therefore be most visible. In addition, special consideration was given to how these changes might integrate into typical GCC release schedules, based on the way the community development process works and the desire to respect that process.
The top three recommended improvements to GCC were:
Superblock Scheduling, project manager Wen-mei Hwu (UIUC), implementer Bob Kidd (UIUC)
(estimated INT gain of 11%, FP gain of 6%)
Rotating Register Support, project manager Mark Davis (Intel), implementer Tsinghua University
(estimated INT gain of 2%, FP gain of 30%)
Memory Disambiguation, project manager Shin-Ming Liu (HP), implementer Russian Academy of Sciences
(estimated INT gain of 12%)
|
 |
 |
| How to Get Involved |
 |
Gelato GCC Mailing List
If you want to join in discussions about improving GCC on Itanium, please join our mailing list at https://www.gelato.unsw.edu.au/mailman/listinfo/gelato-gcc. All interested parties are welcome. Also, you can view this list's archives at https://www.gelato.unsw.edu.au/archives/gelato-gcc/.
Gelato GCC on Itanium Workgroup Wiki
Help collaborate by using this useful communication tool located at http://gcc.gelato.org/.
|
 |
 |
| Papers |
 |
On the Importance of Points—To Analysis and Other Memory Disambiguation Methods For C Programs (pdf), Rakesh Ghiya (Intel), Daniel Lavery (Intel), and David Sehr (Intel), 2001.
The Intel IA-64 Compiler Code Generator (pdf), Jay Bharadwaj (Intel), William Y. Chen (Intel), Weihaw Chuang (Intel), Gerolf Hoflehner (Intel), Kishore Menezes (Intel), Kalyan Muthukumar (Intel), Jim Pierce (Intel).
Optimizing Software Data Prefetches with Rotating Registers (pdf), Gautam Doshi (Intel), Rakesh Krishnaiyer (Intel), and Kalyan Muthukumar (Intel).
Software Pipelining of Loops with Early Exits for the Itanium Architecture (pdf), Kalyan Muthukumar (Intel), Dong-Yuan Chen (Intel), Youfeng Wu (Intel), and Daniel Lavery (Intel).
Wavefront Scheduling: Path Based Data Representation and Scheduling of Subgraphs (pdf), Jay B haradwaj (Intel), Kishore Menezes (Intel), and Chris McKinsey (StarCore Technology Center), 1999.
Modulo Scheduling for Control-Intensive General-Purpose Programs (pdf), Daniel Lavery (Intel), 1997.
Thoughts on Improving GCC for Itanium (pdf), Duraid Madina, 2005.
|
 |
 |
| Presentations |
 |
Workshop Introduction (pdf), Mark Smith (Gelato Central Operations)
Mark K. Smith presented a very brief overview of the Gelato Federation and laid out the background, concerns, goals, and objectives for the workshop.
The Gelato Vanilla Project: An Optimized Binary Depot for Linux (pdf), Mark Smith (Gelato Central Operations)
The Gelato Vanilla project will make highly-optimized Itanium binaries available for critical Linux utilities. The project aims to offer "recipes" for compiling applications including compiler options and performance analysis. The Gelato Vanilla suite includes common, everyday applications and provides a better measure of real-world performance gains achieved by GCC improvement.
Recent and Future GCC Development (pdf), Michael Matz (SUSE LINUX GmbH)
Michael Matz gave an overview of recent and future GCC development. See slides for more details and GCC Wiki for additional details on GCC 4.0 features and projects in progress.
Improving the GCC Instruction Scheduler for IA-64 (pdf), Arutyun Avetisyan (Russian Academy of Science)
Arutyun's group at RAS has started a project to improve GCC’s instruction scheduler for Itanium. The goals of the project are to implement control/data speculation support and to solve the alias analysis problem by propagating alias information from TREE level to the scheduler. To date, the team has implemented and tested a patch for using GCC probability information. Currently, a data speculation and an alias information patch are each being designed and implemented.
Improving GCC for IA64: Future Directions (pdf), Arutyun Avetisyan (Russian Academy of Science)
Arutyun's presentation covered ideas for improving GCC on Itanium. See slides for additional information.
Optimizing Performance for IA-64: Efforts at Tsinghua University (pdf), Wenguang Chen (Tsinghua University)
Wenguang outlined related work at Tsinghua University that could be leveraged for improving GCC on Itanium. Their main expertise is in code generation optimization and GCC front-end work. Tsinghua's current projects are: code generation optimization for ORC and OpenMP for ORC including a GCC front-end extension to support OpenMP directives.
Using OpenIMPACT (pdf), Bob Kidd (UIUC)
Bob gave an overview of the OpenIMPACT compiler from a user's point of view. While the compiler has been engineered to support a GCC-like use model, the limitations of this model prevent certain optimizations. This presentation demonstrated how to use OpenIMPACT's more advanced optimizations.
Adaptive Cache-Efficient Algorithms (pdf), Shin Yee Chung (IHPC)
As the performance gap between the processor and the memory widens, the cache, as a fast memory buffer, becomes an important hardware resource to bridge the gap. Due to rapid hardware replacements in the industry, one cannot afford to perform extensive manual fine-tuning for each new hardware cycle. IHPC proposed Adaptive Cache-Oblivious algorithms which optimize the cache performance without detailed information about the cache configurations and perform run-time self-tuning without manual fine-tuning.
Modulo Scheduling: A Class of Methods for Software Pipelining Loops (pdf), Wen-mei Hwu (UIUC)
Compile-Time Speculative Scheduling (pdf), Wen-mei Hwu (UIUC)
Compiling for the Intel Itanium Processor (pdf), Kalyan Muthukumar (Intel)
|
 |
 |
| Upcoming Events |
 |
GCC and GNU Toolchain Developers' Summit, June 22-24, 2005, Ottawa, Canada.
The GCC & GNU Toolchain Developers' Summit brings together the core development team of the GNU Compiler Collection with those working on the other toolchain components to discuss the state of the art. To keep informed about this event, subscribe to the mailing list at http://lists.gccsummit.org/mailman/listinfo/gccsummit-announce.
Submit Papers. Members of the group are highly encouraged to submit papers to the upcoming GCC Summit to raise visibility of GCC improvement for Itanium 2 undertaken by this group. The deadline to submit a proposal to present a technical paper is March 1. See http://www.gccsummit.org/2005/cfp.php for proceedures for submittals.
For examples of previous papers, please review:
2004 GCC Summit Proceedings
NB: "Design and Implementation of Tree-SSA," Diego Novillo
"Swing Modulo Scheduling for GCC," Mostafa Hagog
"Autovectorization in GCC," Dorit Naishlos
"The GCC Call-Graph Module: a Framework for Interprocedural Optimization," Jan Hubicka
2003 GCC Summit Proceedings
NB: "GENERIC and GIMPLE: a New Tree Representation for Entire Functions," Jason Merrill
"Tree SSA--A New Optimization Infrastructure for GCC," Diego Novillo
"Porting to 64-bit Linux Systems," Andreas Jaeger
|
 |
 |
| GCC Web Links |
 |
GCC Home Page
GCC Mailing Lists
GCC Development Plan
Contributing to GCC
GCC Wiki
GCC Suggested IA-64 Improvement Projects
|
 |
 |
| Questions? |
 |
 |
Workshop Coordinator Al Stone at ahs3@fc.hp.com |
 |
 |
|
|