Debugging and Optimization of Scientific Applications

Monday, 27 November 2017 (All day) to Wednesday, 29 November 2017 (All day)

This course is in English.


The tipical approach to the art of programming from the point of view of a scientist only rarely permits to reach good results in terms of computational performances. The basic knowledge about how a computer machine really works permits even to a naif programmer to better write his own code and eventually to optimize properly any kind of scientific program. This knowledge is way more important in the field of High-Performance Computing where the correct exploitation of the modern architecures is crucial to the achievement of scientific results.

This code is addressed to C and Fortran programmers that, even without notions of computer science, have necessities to learn tricks and techniques to quickly debug and optimize codes without restarting from scratch. Aim of this course is to guide the user to analyze and improve performances of his software, by introducing techniques and tools used in the HPC world. Software and hardware profilers will be presented and it will be showed how to find bottlenecks and how to fix them. Typical techniques of optimization (cache reuse, unrolling, inlining, vectorization) will be presented the use of mathematical libraries will be discussed. Furthermore, the use of compiler flags on different architectures and compilers will be introduced.


Computer architectures: cache memory, cache coherency, cache padding, memory alignment, pipeline, branch prediction. Introduction to compilers: what is and how a compiler does work. Optimization techniques: aliasing, interprocedural analysis, inlining, loop unrolling, intrinsic functions. Profiling and debugging tools. Scientific libraries.

Target audience: 

Researchers and programmers interested to a quick and efficient debugging and to a knowledge of fundamental concepts of optimization. This course is particularly suitable for people approaching for the first time to issues of computer programming in the framework of scientific calculations.


Knowledge of Fortran or C/C++. Elementary notions of Linux/Unix.

Research Institutions

Next courses

Any question?

For HPC and computer graphics courses, write to


Cineca is a non profit Consortium, made up of 70 Italian universities, 5 Italian Research Institutions and the Italian Ministry of Education.

Today it is the largest Italian computing centre, one of the most important worldwide. With more seven hundred employees, it operates in the technological transfer sector through high performance scientific computing, the management and development of networks and web based services, and the development of complex information systems for treating large amounts of data.

It develops advanced Information Technology applications and services, acting like a trait-d'union between the academic world, the sphere of pure research and the world of industry and Public Administration. .

Visit the Cineca website