This guide describes how to use IRIS Power C™. It is written for software programmers/developers who want to make efficient use of the IRIX™ multiprocessors to execute code in parallel. This guide assumes that you understand how multiprocessors work and have a working knowledge of parallel programming.
For information on parallel programming, see “Reference Material,” in this introduction.
IRIS Power C is a C compiler that automatically analyzes sequential code to determine where loops can run in parallel and then generates object code that can use multiple processors. It enables you to recompile existing serial C programs so that they run efficiently on multiprocessor computers without time-consuming hand recoding. Consequently, your original programs remain portable; you don't have to be concerned about the specifics of the system.
The IRIS Power C Analyzer (PCA) is a C code optimization preprocessor that detects potential parallelism in C code. PCA can insert explicit compiler directives that allow the data-independent code to run in parallel. You can use PCA with the C compiler or as a standalone product. Preparing code to run parallel (concurrentization) is not the only way PCA can improve the performance of your code. PCA optimizations include:
Concurrentization
Local variable identification
Sum, dot-product, MAX and MIN reduction recognition
Loop reordering
Loop unrolling
Induction variable recognition
Global forward substitution
Variable lifetime analysis
Dead-code elimination
Procedure in-lining
Memory management
PCA's conversion process is designed to operate effectively without your intervention. You can send PCA-generated code directly to the compiler. In this sense, PCA is more a part of the compilation process than a standalone tool.
This guide contains the following chapters and appendices:
Chapter 1, “Compiling with IRIS Power C,” explains the command-line options to use at analysis time to alter PCA defaults, such as instructing PCA to set optimization levels or enable/disable a feature.
Chapter 2, “How to Use IRIS Power C,” describes how to compile programs with Power C, interpret the PCA listing files, and use Power C to run programs in parallel.
Chapter 3, “PCA Command-Line Options,” details the options to use to customize output, such as limiting the depth of an in-line expansion.
Chapter 4, “Power C Analyzer Directives,” explains directives that give PCA additional information (about the input program) that PCA cannot determine.
Chapter 5, “Multiprocessing C Compiler Directives,” describes how to use the multiprocessor C compiler to produce code that can run concurrently.
Chapter 6, “PCA Transformations,” offers examples of PCA transformations of ordinary C code into explicit parallel syntax.
Chapter 7, “In-lining and Interprocedural Analysis,” explains command-line options and in-line pragmas you can use to in-line functions or to perform Inter-procedural Analysis.
Chapter 8, “The PCA Listing,” describes PCA's listings and messages to users.
Appendix A, “Improving PCA Performance,” lists suggestions to use when customizing PCA for a particular program.
Appendix B, “Data-Dependence Analysis,” describes data dependence analysis and explains how PCA uses this information to determine if a given loop can run safely in parallel.
Appendix C, “Run Time Environment Variables,” describes the run time options available to control execution of your code.
The following Silicon Graphics documents contain information relevant to Power C:
IRIX User's Reference Manual, Mountain View, California, Silicon Graphics, Inc., 1989, document number 007-0606-052 (Documents user commands and utilities.)
Introduction to Parallel Programming, Steven Brawer, San Diego, California, Academic Press, Inc., 1989 (ISBN 0-12-128470-0), describes general parallel programming concepts. Although the examples are in FORTRAN, most of the concepts described also relate to Power C.
Parallel Programming on Silicon Graphics Computer Systems, Mountain View, California, Silicon Graphics, Inc., 1989, (part number 007-0770-010) documents parallel programming as implemented on Silicon Graphics multiprocessor computer systems.
Advanced Compiler Optimization for Supercomputers, David Padua and Michael Wolfe, Communications of the ACM, Volume 29, No. 12, December 1986.
Data Dependence and Its Application to Parallel Processing, Michael Wolfe and Utpal Banerjee, International Journal of Parallel Programming, Volume 16, No. 2, April 1988.
Optimizing Supercompilers for Supercomputers, Michael Wolfe, Ph.D. Thesis, Department of Computer Science, Report No. 82-1009, University of Illinois, Urbana, Illinois, October, 1982.
The conventions used in the guide help make information easy to access and understand. The following list defines the notation and syntax conventions:
For example,
–optimize=
integer
|
means that for the optimize option, you must substitute an integer representing the level of optimization you want, such as
–optimize=2 |
This guide uses lowercase letters for PCA command-line options; command-line options are not case sensitive. File name parameters, however, are case sensitive.