The School program is structured along two main tracks: an introduction to the basic concepts and tools for developing efficient applications and a series of hands-on presentations of parallel programming tools and methodologies.
The first provides background notions with an introduction to the use of basic tools and it is intended to constitute a stable core to be proposed, with minor modifications, each year.
The second deals in detail with specific topics that will be selected, year by year, in order to cover with a cyclic turnaround all the major aspects.
The basics of efficient programming:
- Modern processor architectures
- Efficient floating-point computation
- Tools and methodologies for improved performance
- Efficient exploitation of modern C++
- Managing memory usage
Parallel programming for scientific applications:
- Heterogeneous architectures
- Threading Building Blocks programming
- Effective vectorization
- GP-GPU programming with CUDA
- Cluster computing with MPI