Optimizing compiler Scalar optimizations
Main characteristics of the application, affecting its performance
The presentation can be downloaded here.
- Calculations efficiency,
- Memory usage effectiveness,
- Correct branch prediction,
- Efficient use of vector instructions,
- The effectiveness of parallelization,
- Instructional parallelism level.
Optimizing compiler role
Compiler translates the entire source program into an equivalent program in the resulting machine code or assembly language.
The main objective of optimizing compiler is obtaining effective code for target computer system.
From a developer point of view, the program must be:
- reliable unified development environment
- ability to vary the levels of debugging and performance
- possibility to obtain high-performance code for different operating systems and microprocessor architectures.
An optimizing compiler is complex software system, driven by the requirements to the resulting code. Compiler developers face: the complexity of the optimizations legality proof, calculations of profitability, lack of compile-time representation of a typical input data, etc. It requires close cooperation with the developer for achieving the best results.
To use features of the compiler successfully, the programmer must:
- have ideas about computer systems which will be used by his applications;
- have knowledge about compiler command line options;
- learn the basic techniques of performance improvements which are used by the compiler;
- be familiar with the main problems causing the application slowdown;
- have ideas about the input data which the application will use;
- know how to analyze program performance.
Intel compilers
Intel provides C/C++ and Fortran compilers for Windows, Linux and Mac OS operating systems.
For Windows INTEL compiler is made as plug-in for the Microsoft Visual Studio.
The important purposes of the Intel compilers are well-timed support of all new computer systems, compatibility with Microsoft Visual Studio on a Windows platform and gcc on Linux and Mac OS, supplying convenient environment to develop effective applications.