Compilers and More: Industrial Strength Interprocedural Analysis

By Michael Wolfe

March 16, 2007

Standard compiler optimization is no longer sufficient for competitive high performance computing. Here we discuss interprocedural analysis (IPA) or whole program analysis, its costs and benefits, and how it affects programmers.

Performance-sensitive programmers are accustomed to building their applications with compiler optimizations enabled. In the past, this might have been as simple as setting the -O option on the command line. Decades of research and experience on compiler analysis and code improvement have produced mature, reliable techniques, the vast majority of which focus on optimizing a single procedure at a time, using redundancy elimination, loop restructuring, register allocation, instruction scheduling, and so on. But it is not enough.

Current highly optimizing compilers all use some form of interprocedural or whole program analysis for best performance. At compile time, the compiler summarizes each procedure in the program; when all procedures are available, the compiler invokes an interprocedural analysis module to collect all the procedure summaries and propagates information from caller to callee and back. While this seems to break the advantages of separate compilation, it is done at link time. The procedures are then optimized using the new interprocedural information. Early implementations used programming environments or special build programs to manage the procedure summaries, which made it hard to migrate from traditional tools, such as make. Current methods are almost invisible, except for the extra time spent at the link step to generate better code using the extra information.

The importance of interprocedural analysis is demonstrated by looking at the SPEC CPU results page (http://www.spec.org/); the base flags for the various compilers all include IPA:

    IBM -O5 (implies -qipa)
    Intel -fast (implies -ipo)
    Pathscale -Ofast (implies -ipa)
    PGI -fast -Mipa=fast,inline
    SGI -Ofast=ip35 (implies -IPA)
    Sun -fast -xcrossfile

We ran the SPEC CPU2000 test suite using the PGI compiler with and without IPA. The performance improvements ranged up to 130 percent speedup, with a 7 percent speedup in the overall geometric mean, demonstrating that IPA is useful and critical to the performance of some applications.

One of the most useful and common benefits of IPA is automatic inlining of procedures, even across source files. Since the compiler has the whole program at link time, it can take a procedure from one object and inline it at a call site in another procedure. This typically reduces the cost of the procedure call, and allows the code for the inlined procedure to be better optimized since the calling context is explicit.

This can also be used to inline or generate special code for calls to system or math libraries. Until link time, it isn’t always known what library a particular procedure will come from. Once it is known that fmax is resolved from libm.a, for instance, the compiler can replace the procedure call by fast inline code.

A less common technique is to create two or more versions of a procedure, each version optimized for a particular calling context. For instance, IPA may generate one version or clone to be optimized for the case when two C pointer arguments are known to be distinct, allowing more vectorization (for instance), and another version for the more general case. The compiler can be directed to replace some calls to the more optimized version where appropriate.

IPA can help optimize around procedure calls even when the call isn’t inlined. IPA may be able to determine that the function is “pure,” meaning that it does no I/O and doesn’t read or write global variables. Code around calls to such functions can be moved above or below the call, since the call won’t interfere with any other code in the caller. This gives the compiler more freedom when scheduling instructions or allocating registers.

Another very common and simple benefit of IPA is recognizing when a procedure argument always has the same value, and replacing the argument by that value to optimize the procedure. The value may be a constant integer, used as a loop limit or in a conditional expression, allowing more aggressive loop optimization or removal of the condition. For C pointer arguments, the value may be an array; using the array directly allows more precise alias analysis, with much of the same benefits as using the C99 ‘restrict’ qualifier. If the constant value is propagated to the procedure, then the caller doesn’t even need to pass that argument, making the procedure call slightly less expensive as well. Even when a procedure argument is not a single constant, it can be useful for the compiler to know when the value of an argument lies in a certain range, or that a pointer only aliases with a limited number of user arrays or variables.

For array arguments (or C pointers to arrays), it is useful on today’s machines to know the alignment of the argument. For instance, to use the packed (SSE) instructions on the x86 or x86-64 architectures, aligned loads can only be used if the data is known to be 16-byte aligned. Knowing the argument alignment allows better code generation for vectorized loops. For dynamically allocated arrays, this means knowing the return alignment of the memory allocation routines.

Modern Fortran includes multidimensional assumed-shape array arguments, which require so-called “dope vectors” to describe the bounds and strides for each dimension. In the general case, the compiler must read these dope vectors for each dimension for each access to the array. IPA can be used to propagate array shapes, replacing dope vector accesses by constant array bounds. This eliminates the dope vector memory accesses, and allows more constant folding at compile time.

Since IPA has a view of the whole program, it can be used to reorganize data in the program as well. One simple example is to reorder the members of a Fortran COMMON block to control the data alignment. This is only safe with IPA, since only then does the compiler know that all instances of the COMMON will be reordered the same way.

Each implementation of IPA is somewhat different. Some compilers depend on interprocedural optimization for performance, while others use IPA mostly to control function inlining. The cost for IPA is spent in program build time, in particular at link time. Some implementations defer essentially all optimization and code generation to link time. This makes the compiler seem quite fast, and the link very slow.

To be accepted by users, the interface to IPA must preserve the edit-compile-link-test development cycle currently in place. Users are unlikely to adopt a new program build mechanism, as proposed in various research projects. IPA must be able to analyze routines in subroutine libraries, which most vendors do not yet fully support. The compiler also needs to know the behavior of routines in the system library, such as ‘malloc’, I/O, and math routines.

Processor architectures have become quite aggressive, with deeply pipelined function units, superscalar instruction issue, out-of-order execution, and integrated vector/multimedia processing units, things which would never have been dreamed of as mainstream during the RISC revolution, for instance. The future offers multicore processors, with heterogeneous cores and function unit customization. Successful performance delivery depends on deep compiler analysis and optimization, which will become more dependent on interprocedural analysis. Bleeding edge programmers need to understand its benefits, potential, and limitations. As has always been true, the best performance is produced when the programmer and the compiler enter into a dialogue, which I will address in a future column.

SPEC (R) is a registered trademark of the Standard Performance Evaluation Corporation (http://www.spec.org/).

—–

Michael Wolfe has developed compilers for over 30 years in both academia and industry, and is now a senior compiler engineer at The Portland Group, Inc. (www.pgroup.com), a wholly-owned subsidiary of STMicroelectronics, Inc. The opinions stated here are those of the author, and do not represent opinions of The Portland Group, Inc. or STMicroelectronics, Inc.

Subscribe to HPCwire's Weekly Update!

Be the most informed person in the room! Stay ahead of the tech trends with industy updates delivered to you every week!

RSC Reports 500Tflops, Hot Water Cooled System Deployed at JINR

April 18, 2018

RSC, developer of supercomputers and advanced HPC systems based in Russia, today reported deployment of “the world's first 100% ‘hot water’ liquid cooled supercomputer” at Joint Institute for Nuclear Research (JI Read more…

By Staff

New Device Spots Quantum Particle ‘Fingerprint’

April 18, 2018

Majorana particles have been observed by university researchers employing a device consisting of layers of magnetic insulators on a superconducting material. The advance opens the door to controlling the elusive particle Read more…

By George Leopold

Cray Rolls Out AMD-Based CS500; More to Follow?

April 18, 2018

Cray was the latest OEM to bring AMD back into the fold with introduction today of a CS500 option based on AMD’s Epyc processor line. The move follows Cray’s introduction of an ARM-based system (XC-50) last November. Read more…

By John Russell

HPE Extreme Performance Solutions

Hybrid HPC is Speeding Time to Insight and Revolutionizing Medicine

High performance computing (HPC) is a key driver of success in many verticals today, and health and life science industries are extensively leveraging these capabilities. Read more…

Hennessy & Patterson: A New Golden Age for Computer Architecture

April 17, 2018

On Monday June 4, 2018, 2017 A.M. Turing Award Winners John L. Hennessy and David A. Patterson will deliver the Turing Lecture at the 45th International Symposium on Computer Architecture (ISCA) in Los Angeles. The Read more…

By Staff

Cray Rolls Out AMD-Based CS500; More to Follow?

April 18, 2018

Cray was the latest OEM to bring AMD back into the fold with introduction today of a CS500 option based on AMD’s Epyc processor line. The move follows Cray’ Read more…

By John Russell

IBM: Software Ecosystem for OpenPOWER is Ready for Prime Time

April 16, 2018

With key pieces of the IBM/OpenPOWER versus Intel/x86 gambit settling into place – e.g., the arrival of Power9 chips and Power9-based systems, hyperscaler sup Read more…

By John Russell

US Plans $1.8 Billion Spend on DOE Exascale Supercomputing

April 11, 2018

On Monday, the United States Department of Energy announced its intention to procure up to three exascale supercomputers at a cost of up to $1.8 billion with th Read more…

By Tiffany Trader

Cloud-Readiness and Looking Beyond Application Scaling

April 11, 2018

There are two aspects to consider when determining if an application is suitable for running in the cloud. The first, which we will discuss here under the title Read more…

By Chris Downing

Transitioning from Big Data to Discovery: Data Management as a Keystone Analytics Strategy

April 9, 2018

The past 10-15 years has seen a stark rise in the density, size, and diversity of scientific data being generated in every scientific discipline in the world. Key among the sciences has been the explosion of laboratory technologies that generate large amounts of data in life-sciences and healthcare research. Large amounts of data are now being stored in very large storage name spaces, with little to no organization and a general unease about how to approach analyzing it. Read more…

By Ari Berman, BioTeam, Inc.

IBM Expands Quantum Computing Network

April 5, 2018

IBM is positioning itself as a first mover in establishing the era of commercial quantum computing. The company believes in order for quantum to work, taming qu Read more…

By Tiffany Trader

FY18 Budget & CORAL-2 – Exascale USA Continues to Move Ahead

April 2, 2018

It was not pretty. However, despite some twists and turns, the federal government’s Fiscal Year 2018 (FY18) budget is complete and ended with some very positi Read more…

By Alex R. Larzelere

Nvidia Ups Hardware Game with 16-GPU DGX-2 Server and 18-Port NVSwitch

March 27, 2018

Nvidia unveiled a raft of new products from its annual technology conference in San Jose today, and despite not offering up a new chip architecture, there were still a few surprises in store for HPC hardware aficionados. Read more…

By Tiffany Trader

Inventor Claims to Have Solved Floating Point Error Problem

January 17, 2018

"The decades-old floating point error problem has been solved," proclaims a press release from inventor Alan Jorgensen. The computer scientist has filed for and Read more…

By Tiffany Trader

Researchers Measure Impact of ‘Meltdown’ and ‘Spectre’ Patches on HPC Workloads

January 17, 2018

Computer scientists from the Center for Computational Research, State University of New York (SUNY), University at Buffalo have examined the effect of Meltdown Read more…

By Tiffany Trader

Russian Nuclear Engineers Caught Cryptomining on Lab Supercomputer

February 12, 2018

Nuclear scientists working at the All-Russian Research Institute of Experimental Physics (RFNC-VNIIEF) have been arrested for using lab supercomputing resources to mine crypto-currency, according to a report in Russia’s Interfax News Agency. Read more…

By Tiffany Trader

How the Cloud Is Falling Short for HPC

March 15, 2018

The last couple of years have seen cloud computing gradually build some legitimacy within the HPC world, but still the HPC industry lies far behind enterprise I Read more…

By Chris Downing

Chip Flaws ‘Meltdown’ and ‘Spectre’ Loom Large

January 4, 2018

The HPC and wider tech community have been abuzz this week over the discovery of critical design flaws that impact virtually all contemporary microprocessors. T Read more…

By Tiffany Trader

Fast Forward: Five HPC Predictions for 2018

December 21, 2017

What’s on your list of high (and low) lights for 2017? Volta 100’s arrival on the heels of the P100? Appearance, albeit late in the year, of IBM’s Power9? Read more…

By John Russell

How Meltdown and Spectre Patches Will Affect HPC Workloads

January 10, 2018

There have been claims that the fixes for the Meltdown and Spectre security vulnerabilities, named the KPTI (aka KAISER) patches, are going to affect applicatio Read more…

By Rosemary Francis

Nvidia Responds to Google TPU Benchmarking

April 10, 2017

Nvidia highlights strengths of its newest GPU silicon in response to Google's report on the performance and energy advantages of its custom tensor processor. Read more…

By Tiffany Trader

Leading Solution Providers

Deep Learning at 15 PFlops Enables Training for Extreme Weather Identification at Scale

March 19, 2018

Petaflop per second deep learning training performance on the NERSC (National Energy Research Scientific Computing Center) Cori supercomputer has given climate Read more…

By Rob Farber

Lenovo Unveils Warm Water Cooled ThinkSystem SD650 in Rampup to LRZ Install

February 22, 2018

This week Lenovo took the wraps off the ThinkSystem SD650 high-density server with third-generation direct water cooling technology developed in tandem with par Read more…

By Tiffany Trader

AI Cloud Competition Heats Up: Google’s TPUs, Amazon Building AI Chip

February 12, 2018

Competition in the white hot AI (and public cloud) market pits Google against Amazon this week, with Google offering AI hardware on its cloud platform intended Read more…

By Doug Black

HPC and AI – Two Communities Same Future

January 25, 2018

According to Al Gara (Intel Fellow, Data Center Group), high performance computing and artificial intelligence will increasingly intertwine as we transition to Read more…

By Rob Farber

New Blueprint for Converging HPC, Big Data

January 18, 2018

After five annual workshops on Big Data and Extreme-Scale Computing (BDEC), a group of international HPC heavyweights including Jack Dongarra (University of Te Read more…

By John Russell

US Plans $1.8 Billion Spend on DOE Exascale Supercomputing

April 11, 2018

On Monday, the United States Department of Energy announced its intention to procure up to three exascale supercomputers at a cost of up to $1.8 billion with th Read more…

By Tiffany Trader

Momentum Builds for US Exascale

January 9, 2018

2018 looks to be a great year for the U.S. exascale program. The last several months of 2017 revealed a number of important developments that help put the U.S. Read more…

By Alex R. Larzelere

Google Chases Quantum Supremacy with 72-Qubit Processor

March 7, 2018

Google pulled ahead of the pack this week in the race toward "quantum supremacy," with the introduction of a new 72-qubit quantum processor called Bristlecone. Read more…

By Tiffany Trader

  • arrow
  • Click Here for More Headlines
  • arrow
Share This