[ Bottom of Page | Previous Page | Next Page | Contents | Index | Library Home |
Legal |
Search ]
Performance Management Guide
Optimizing Preprocessors for FORTRAN and C
The KAP and VAST preprocessors for the FORTRAN compiler can restructure
FORTRAN source code to better use the POWER family, POWER2, and
PowerPC processing unit resources and memory hierarchy. A version of the KAP
preprocessor is also available for restructuring the code of C programs. The
preprocessors perform memory management optimizations, algebraic transformations,
inlining, interprocedural analysis, and other optimizations that improve the
performance of FORTRAN or C applications.
Performance tests indicate improvements in the range of 8 to 18 percent,
on average, when a suite of programs is compiled with the preprocessors, compared
to compiling with the same optimization options for the unpreprocessed version.
The KAP and VAST preprocessors attempt to transform source-level algorithms
into algorithms that can take full advantage of the optimizing capabilities
of the compiler. The preprocessors also generate listings that identify the
transformations performed and areas of your code that prevent transformations
from being carried out. The preprocessors analyze source code, and perform
transformations that can improve a program's performance.
Any transformation done by the preprocessors can also be accomplished through
hand-tuning. The advantages of using a preprocessor rather than hand-tuning
are as follows:
- In many cases, the preprocessors yield programs that perform as efficiently
as, or more efficiently than, their hand-tuned equivalents, without a significant
investment of programmer time. If you use the preprocessors, you may not require
as thorough an understanding of the architecture or of tuning techniques discussed
elsewhere in this book.
- For certain programs, you can get code that is highly optimized, simply
by selecting appropriate command-line preprocessor options and by adding a
small number of directives to the source code of your program. In cases where
the preprocessors do not yield a noticeable improvement, work with the preprocessor
listings to see what areas of the source code prevent optimization.
- Some of the transformations done by the preprocessors involve considerable
expansion of source code. While these expansions can improve your program's
efficiency, implementing them through hand-tuning would increase the likelihood
of algorithmic and typographical errors, reduce the readability of the source
code, and make program maintenance more difficult.
- The preprocessors can generate code that is tuned for a particular architectural
configuration, even one that is not available on POWER family, POWER2,
and PowerPC systems. You can maintain a single version of source code, and
produce transformed versions that are tuned for different POWER, POWER2, and
PowerPC models or for machines with other cache and processor characteristics.
- The preprocessors can often improve on hand-tuned code. Although it is
possible to tune your programs by hand to as great a level of efficiency as
the preprocessors do, some of the more complicated transformations can lead
to coding errors when attempted by hand.
[ Top of Page | Previous Page | Next Page | Contents | Index | Library Home |
Legal |
Search ]