Software performance: methodology and techniques

Profesor:

  • Arzhan Kinzhalin, Intel, Argentina

9+ years in the industry. MS in Theoretical and Mathematical Physics. Major areas of technical competency are operating systems, network protocols, database servers, computer architecture; C and Java programming languages at expert level; performance analysis methodologies; software design and development methodologies; project planning, building project teams in disperse and distributed environments.

Idioma:

Inglés

Turno:

Tarde (14 a 17 hs)

Requisitos:

 

C y ensamblador seria deseable pero no es requerido.

>Síntesis:

Software performance is rarely recognized as a separate discipline, the one similar to Quality Engineering or Software Design. The purpose of the course is to introduce students to essentials of software application performance analysis: theoretical background, methodology of performance analysis and tools that are used for analysis as well as implementing optimizations produced by such analysis.

The course starts with a brief overview of computer architecture and continues with theoretical background. Methodology of performance analysis is covered after. Approaches to analysis and tools available to analyze performance will have major focus. A set of common optimizations techniques and compiler optimization overview will close the class. Class activities will be supplemented with some hands-on experience on performance analysis and software optimization.

Cronograma:

Día 1 - Computer Architecture Overview

  • Pipelines
  • Instruction-level parallelism
  • Memory hierarchy
  • I/O subsystem

Día 2 -Quantitative Approach and Performance Methodology

  • Performance laws, equations and rules of thumb
  • Methodology of the performance analysis

Día 3 -Performance Tools

  • Approaches to performance analysis
  • VTune Performance Analyzer
  • Operating system tools

Día 4 -Common Optimization Techniques

  • Common developer mistakes
  • Getting friends with a compiler
  • Memory-aware optimizations
  • Exploiting instruction-level parallelism

Día 5 -Performance in Parallel Applications

  • POSIX threads
  • OpenMP
  • Common pitfalls
  • NUMA programming environments

Bibliografía:

1 J. L. Hennessy, D.A. Patterson. Computer Architecture: A Quantitative Approach. 3rd edition. 2002.

2 D.R. Butenhof. Programming with POSIX® Threads. 1997.

3 Intel* Architecture Optimization Manual. Available for download from http://www.intel.com