SeSE: Maximizing performance in practical HPC applications

This course is organized by the Swedish e-Science Education program (SeSE).

Credits: 5hp

The course consists of three parts - self reading, lectures and labs, and project preparation. The lectures and the labs will be given at the Department Information Technology, Uppsala University.

Preparatory work for the self study during Week 47:

As preparation for the course, we ask you to review the literature. Reading this material in full is much than a single week of work, but we will expect you to be somewhat familiar with what the intended scope is of the different technologies, based on our recommended sources and other material. We also ask you to brush up on your general Python and programming skills.

Course materials (will be updated currently during the course)

Information on the project to be done in order to pass the course with full credit:

Instructions

Detailed time schedule

Date Topic(s) Time
Location
Lecturer
Nov 23 General description of the course 9:15-9:30
6143
MN
Introduction. High performance models and measures 9:30-12:00
6143
MN
Models, measures, cont. 13:15-14:00
1113
MN
Participants shortly describe their research project and the HPC-related issues 14:15-15:30
1113
MN
     
Nov 24 C++11, not C with classes anymore. Including templates, lambdas, smart pointers. Library use including the Standard Template Library, Boost, and interaction with Python. 9:15-12:00
6143
CN
Computer lab and 'Hands-on' session: Create a C++ library called from Python using Cython and Boost Python. 13:15-17:00
1211
CN
     
Nov 25 Discussion of the experience from the last computer lab 9:15-9:30
2345
CN
Design patterns and modular software - designing, building and maintaining. git and cmake 9:30-12:00
2345
CN
Computer lab and 'Hands-on' session: Extending our Python library with source code management and a build system with external dependencies. 13:15-17:00
1112
CN
     
Nov 26 Discussion of the experience from the last computer lab 9:15-9:30
6111
CN
An overoview of libraries for numerical simulations: dealii, Trilinos, Paralution, Armadillo, etc... 9:30-12:00
6111
AD
Computer lab and 'Hands-on' session: 13:15-17:00
1312
AD
     
Nov 27 Parallel debuggers. Performance analysis tools: Allinea DDT, hands on 9:00-12:00
2345
MN/AD/Allinea
Closing: details on the project work 13:30-15:00
1245
MN/AD/CN

Recommended sources:

  1. Stroustrup, B. The C++ Programming Language (4th edition!), Addison-Wesley.
  2. Gamma et al. Design Patterns, Elements of Reusable Object-oriented Software, Addison-Wesley
  3. W. Bangerth, G. Kanschat, and R. Hartmann, deal.II differential equations analysis library, http://www.dealii.org.
  4. M. A. Heroux and J. M. Willenbring, Trilinos Users Guide, http://trilinos.sandia.gov, Technical Report SAND2003-2952, Sandia National Laboratories, 2003. Matrix Methods in Data Mining and Pattern Recognition. SIAM, Philadelphia, PA, Philadelphia, PA, USA, 2007.
  5. Armadillo C++ Linear Algebra Library, http://arma.sourceforge.net/
  6. BOOST C++ Libraries, http://www.boost.org
  7. Atlassian git tutorial, https://www.atlassian.com/git/tutorials/
  8. cmake tutorial, https://cmake.org/cmake-tutorial/
  9. Allinea DDT, http://www.allinea.com/products/ddt
  10. TotalView, http://www.roguewave.com/products-services/totalview
  11. D. Lurkarski Paralution project, http://www.paralution.com

Project

After the main lecture week, you are supposed to do a minor project based on what we have covered. Our main suggestion is to write a minor Python library for a performance-critical component of relevance in your scientific application. The library should be source-controlled, have a proper build environment, and ideally use modern scientific C++ libraries for parts of its operation.


Organization issues:
Some instructions how to find us in Uppsala are to be found here .
Suggested hotel to book rooms in Uppsala: Hotel Uppsala .

Back
Last changed on November 11, 2015.
Mail to: Maya dot Neytcheva "at" it dot uu dot se "