Skip to main content

Performance Analysis Workshop Series 2023

Performance Analysis Workshop Series 2023

20 April – 18 May, 2023
Durham University, Department of Computer Science, Durham, UK, and online

With every new generation of computers, we see the gap between the theoretical performance of a machine and the performance that is actually delivered by applications widen. Codes struggle to exploit the hardware. It has therefore become critical that researchers and research software engineers in HPC to understand how well and why codes use the machinery as they do. Insight into performance behaviour can drive the code evolution and ultimately become the means through which future advancement through computing are facilitated.

This workshop series offers a comprehensive introduction to a selection of open source tools that enable researchers to assess the performance behaviour of their code. The workshops will be augmented by revision sessions of some of the core HPC know-how. We encourage participants to bring along their own codes so they can continually assess and improve them throughout the series.


The workshop consists of a series of sessions. We encourage participants to attend in person where possible. All sessions will be presented both in-person and virtually, although we encourage participations notably to participate in-person at the kick off and final session. In-person sessions will be taught in the Department of Computer Science at Durham University.

20 April 2023
9:00-12:00 Principles of performance analysis and performance assessment Brian Wylie In-person preferred (with live broadcast) MCS3097 (Computer Science building)
13:00-14:00 Hands-on: high-level performance assessment of user codes Brian Wylie In-person preferred (with live broadcast) MCS3097 (Computer Science building)
15:00-16:30 Pitches: What do participants expect from the course? Participants In-person preferred (with live broadcast) MCS3097 (Computer Science building)
25 April 2023
15:00-16:00A brief revision of machine architecture principles (von Neumann), the idea behind caches, and the fundamentals of vectorisationTobias WeinzierlVirtual (optional)
27 April 2023
9:00-12:00VTune Heinrich Bockhorst Virtual/Hybrid
(we will provide computer rooms, but the lecturers will likely dial in remotely)
MCS3097 (Computer Science building)
13:00-15:00Hands-on: Participants apply … to their codes Participants Virtual/Hybrid
(we will provide meeting rooms, but the lecturers will likely dial in remotely)
Visualisation lab (Computer Science building)
2 May 2023
16:00-18:00Performance models: roofline plots, strong and week scalingTobias WeinzierlVirtual (optional)
4 May 2023
9:00-12:00MAQAO – an introduction with interactive exercisesCedric Valensi Hybrid MCS1015 (Computer Science building)
13:00-15:00 Hands-on: Participants apply MAQAO to their codesParticipantsHybrid Visualisation lab (Computer Science building)
9 May 2023
16:00-17:00Flynn’s taxonomy, SPMD, and a brief revision of MPI operations and MPI progressionTobias WeinzierlVirtual (optional)
11 May 2023
9:00-12:00Scalasca – an introduction with interactive exercises Brian Wylie Virtual/Hybrid
(we will provide meeting rooms, but the lecturers will likely dial in remotely)
Visualisation lab (Computer Science building)
13:00-15:00Hands-on: Participants apply Scalasca to their codes Participants Virtual/Hybrid
(we will provide meeting rooms, but the lecturers will likely dial in remotely)
Visualisation lab (Computer Science building)
18 May 2023
9:00-13:00 Wrap-up: Participants present their lessons learned Participants In-person preferred (with live broadcast) This event will be organised in conjunction with the Durham HPC Days.

Call for participants

The course is open to all researchers free of charge. We are looking for participants that

  • can bring along a HPC research code (see remarks below) which they want to optimise over the course of the workshops. Codes have to be written to generate Fortran or C/C++ (no Python-only code; both C and Fortran are supported by all codes discussed); Codes should at least have MPI parallelisation;
  • join the workshops as a team. In the ideal case at least 2-3 participants sign up per team;
  • commit to participate in all workshop sessions where possible such that at least one participant per team is present in each session;
  • have expertise with C or FORTRAN, MPI and some kind of multithreading;
  • sign up for access to DINE through the project do009.

We cannot provide support for accommodation and travel.


Our workshops aim to train the participants in performance tools. Instead of “flooding” the participants with pre-manufactured exercises out of the box, we hope that each team will not only acquire skills, but also immediately applies these skills to their codes.

Our workshops will span the whole scale of scalability and we would like all participants to attend all sessions. This implies that we favour codes which feature MPI and multithreading already, and we favour codes which are written in Fortran or C/C++ or yield a compiled code. If you work solely with Python scripts, then this is the wrong workshop format for you. If you do not work on such a code, please apply anyway for consideration. However, we will have to give priority to “real” HPC users, as Python users will not get that much out of this course.

We will not cover GPUs. These will be covered by a different event series and we will publish details once they become available.

We will be very x86 centric, i.e. focus on Intel and AMD CPUs. If you prefer ARM, e.g., feel free to attend nevertheless, but the gain will be limited.

It is disappointing to teach to an empty room. We therefore hope you can commit to attend all sessions. Our preference is to attend as a team, so insight can be shared – and working together is way more fun! Finally, if one team member has to skip a session, the code will still be used with all the tools discussed.

If you prefer to work on your own machine, i.e. not on DINE, then you are welcome to do so. However, we will not be able to help you with installing the tool chains, whereas everything will be ready to go on our machines. Therefore, we very strongly encourage you to sign up for DINE for the hands-on exercises that we spread over the tutorials, and then you can afterwards try things out on your favourite machine. Remark for DiRAC participants: We will try to roll out the tools on multiple other DiRAC machines.


Please register before April 6 using this form: .


There is no support for accommodation and travel, but we can point to a few hotels nearby that guests of the department use frequently. Participants will need to make all booking themselves:

Travel and how to find us

The University’s official Visit Us page provides some general guidance. The Department of Computer Science is on Mount Joy next to the Botanic Garden. Here are some further remarks how to get there:

  • If you are arriving at Newcastle International, take the tram (there’s only one) to Newastle Central (less than 40 minute) and then take a train to the South. Durham is 15 minutes away from Newcastle Central.
  • Alternatively, you can take a taxi from the airport (should be around 60 GBP for a drive of around 40 minutes in total).
  • From Durham train station, it is a 30-40 minute walk, which is quite beautiful.
  • Taxis should be available from the station and should be around 10-15 GBP.
  • Right in front of the station, there’s a bus stop with two lines:
    • Bus 42 to Mount Oswald. It runs every 30 minutes. Get off at “South Road Colleges” and walk up the hill from there (5 minutes).
    • Bus 41 to University Science Park. Hop off at the final stop.
  • We have plenty of parking spaces in front of the department, but you will have to contact us for a parking permit.

Preparation and FAQ

  • Can we use our own machine? Yes you can, but we very strongly encourage you not to do this. We will provide access to DINE and a few more DiRAC machines. This is where we install the software stack behind the tools, and these are the machines where we can give support throughout the hackathon. We will not support other machines, so please sign up for DINE.
  • Can I prepare something? Yes you can. Performance analysis works best if you have a characteristic benchmark code which runs relatively short (something in the order of 5-10 minutes) and does not do any I/O. With longer running setups, you will always suffer from incredible amounts of data. With I/O, you will end up benchmarking your disk speed rather than performance.
  • When can I start to use DINE? Atm, we try to grant access to DINE immediately when you sign up and you will have “unlimited” CPUhrs between the workshop sessions to dive deeper into the behaviour of your code.
  • I need all my data to run my code and/or have commercial/closed source code. Can I therefore use my own machine? In this case, you should really work towards a (hard-coded) benchmark setup which you can use throughout the course. Code processing large data volumes is inherently ill-suited for most analyses. You will be able to install your code on DINE subject to standard UNIX visibility rules.
  • Can I participate remotely only? We do appreciate that travel continues to be difficult, but we would appreciate if at least one member of the team could attend the first and/or last session in person. Obviously, we’d like to have the whole teams present on these days, but it is clear that few teams will manage to organise this. For all remaining events, virtual participation is totally fine. Please note that there will be additional events scheduled around the wrap-up (so the trip pays off) and we will try to have the tool developers in in-person on this day, too, i.e. you can start follow-up conversations.


Session 1: Principles of performance analysis and performance assessment

  • 9:00-9:30 Welcome note (Tobias Weinzierl)
  • 9:30-10:00 Principles of performance analysis and performance assessment – Part I (Brian Wylie)
  • 10:00-10:20 Coffee break
  • 10:20-12:00 Principles of performance analysis and performance assessment – Part II (Brian Wylie)
  • 13:00-14:00 Hands-on: high-level performance assessment of user codes (Brian Wylie)
  • 14:00-14:20 Coffee break
  • 14:20-16:00 Software pitches:
    • Xcompact3d
    • VIPERS
    • SWIFT
    • Psyclone
    • Prompi
    • Nottirna
    • NESO
    • Nektar++
    • ExaHyPE
    • Free Energy LBM
    • sphNG
    • Conquest

Session 2: Intel VTune

  • VTune and APS
  • Hotspot profiling
  • GUI vs command line
  • VTune and MPI
  • Flame graphs
  • OpenMP analysis
  • Memory analysis