Optimizing Compilers for High-Performance Computing
The MIPSpro compilers represent
the latest technology of optimizing and parallelizing compilers
from SGI. They take advantage of all of the performance-oriented
features in the latest MIPS microprocessors such as high-speed
calling conventions and 32-bit and 64-bit floating-point and general-purpose
registers. Highlights include:
-
support for
C,
C++
and Fortran
77/90
-
state-of-the-art optimizations
and automatic parallelizing
technology
-
enhancements fo interprocedural
analysis (IPA)
-
complete support for 32-
and 64-bit development and execution
-
code generation for MIPS
R4000, R4400, R4600, R5000, R8000 and R10000
-
support for the MIPS III
and MIPS IV Instruction Set Architectures (ISA) and full compliance
with the n32 and n64 Application Binary Interfaces (ABI)
The MIPSpro compilation system
includes a command back-end that performs all scalar and parallel
optimizations and transformations. They support value-added extensions
that enrich the basic functionality of the compilers, ease the
porting of applications written for other platforms, and boost
runtime application performance. The MIPSpro compilers also provide
support for the MIPS I and II ISA for 32-bit applications that
are compliant with the 32-bit ABI -o32.
The MIPS System V Application
Binary Interface (ABI) helps with portability across all MIPS-based
computer systems, ranging from laptops to mainframe.
Powerful
Optimizations
The MIPSpro compilers can do a
comprehensive set of high-level and architecture-specific optimizations
to automatically improve the performance of a wide range of applications.
Memory management optimizations
ensure that your application takes full advantage of the memory
hierarchy including general-purpose and floating-point registers,
primary and secondary caches, and main memory. The optimizations
can be applied automatically to reduce cache conflicts and register
demands include array padding, data prefecting, loop distribution,
sum reduction, automatic cache blocking, loop unrolling, invariant
code motion, common block padding, loop interchange, and loop
fusion.
The MIPSpro compilers use interprocedural
analysis to simultaneously optimize an entire program, thereby
enabling cross-file function inlining, position independent codeoptimizations,
and dead function elimination. Global optimizations such as common
subexpression elimination, constant propagation, pointer optimizations,
and global register allocation can generate more efficient code.
Processor optimizations use software pipelining to optimally schedule
instructions within loops by exploiting instruction-level pathways
and effectively hiding instruction latencies.
The MIPSpro C and C++ compilers
benefit from many high-level program transformations as well as
architecture-specific optimizations performed in the common back-end.
In addition, the compiler supports advanced pointer optimizations.
The MIPSpro compilers support
feedback-directed optimization, a three-step process that imporves
runtime performance by compiling your applications, generating
runtime statistics, then recompiling for improved optimizations.
Automatic
and User-Directed Parallelizations
The Automatic
Parallelization Option (APO) for C, C++,
and Fortran 77/90 enables a variety of applications to benefit
from multiprocessor execution. APO can analyze and restructure
user applications for parallel execution. User-assisted parallelization
is also supported with standards-based directives, enabling users
to actively assist the compiler in the parallelization process.
Programming
Models
The MIPSpro compilers support
both 32-bit and 64-bit programming models. The 32-bit model supports
32-bit pointers and data addressing, combining portability and
performance. The 64-bit model supports 64-bit pointers, data addresses,
and file systems. It also provides performance for applications
requiring access to data sets, memory, or files larger than 2GB.
Multilanguage
Interoperability
The MIPSpro family of compilers
is completely interoperable. Program modules written in Fortran
77, Fortran 90, C and C++ can be linked to form one application
for single or multiple processor execution.
Java
and Ada95
In addition, SGI also supports
the Java and Ada95 programming languages.