Опубликован: 12.07.2012 | Доступ: свободный | Студентов: 355 / 25 | Оценка: 4.00 / 4.20 | Длительность: 11:07:00
Специальности: Программист
Лекция 3:

Optimizing compiler Scalar optimizations

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Аннотация: At this lecture Intel Compilers approximate compilation scheme is given. Role of the frontend and the internal representation of the compiler. Control flow graph and its importance for the analysis. The basic scalar optimizations. The notion of the static single assignment form.
Ключевые слова: presentation, CAN, efficiency, branch prediction, vector instruction, compiler, entire, source program, machine code, assembly language, objective, optimizing compiler, effective, target computer, system, FROM, developer, point, readability, development environment, vary, high-performance, microprocessor, complex, software system, requirements, face, complexity, legal, proof, compile, TIME, typical, input data, ETC, with, programmer, computational system, performance improvement, slowdown, AND, Windows, mac, AS, Plug-in, visual, important, support, ALL, new, compatibility, platform, convenience, environment, develop, parsing, input, analysis, formal grammar, data structure, tree, syntax, structure, input sequence, processing, lexical analysis, input stream, linear sequence, string constant, semantic analysis, grammatically, output, GET, FE, internal representation, practice, share, ONE, high-level language, list, lexical, predecessor, successor, control flow graph, scalar, walk-through, find, CFG, control, ITS, execution, node, basic block, jump, target, block, directed, used, Entry, flow, graph, exit, control flow, compiler optimization, constant folding, constant propagation, copy propagation, compilation time, substitutability, constant, VALUES, expression, Search, identical, subexpression, calculation, result, temporary variable, reuse, NOT, change, dead code, inlining, conditional branch, previous, propagate, information, answer, ambiguous, data flow analysis, technique, gathering, set, Calculated, construction, base, redefinition, this, Local, characterization, VIA, iterative process, calculate, problem, if, repeat, equation, decision, dead code elimination, approach, example, pass through, Top, assignment, form, SSA, simplify, UNIQUE, special, save, power, uncertainty, create, option, INSERT, function, theory, immediate, Last, path, WHERE, intersection, strict, Basic, criterion, apply, while, scheme, slide, optimization

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:

  • easily readable and modifiable
  • easy to debug
  • quickly performed

A developer needs

  • 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.

Рис. 3.1.


Рис. 3.2.
< Лекция 2 || Лекция 3: 12345 || Лекция 4 >