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.
Programme
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.
Thursday 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) | |
Tuesday 25 April 2023 | 15:00-16:00 | A brief revision of machine architecture principles (von Neumann), the idea behind caches, and the fundamentals of vectorisation | Tobias Weinzierl | Virtual (optional) | |
Thursday 27 April 2023 |
9:00-12:00 | VTune | Heinrich Bockhorst | Virtual/Hybrid (we will provide computer rooms, but the lecturers will likely dial in remotely) |
MCS3097 (Computer Science building) |
13:00-15:00 | Hands-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) | |
Tuesday 2 May 2023 | 16:00-18:00 | Performance models: roofline plots, strong and week scaling | Tobias Weinzierl | Virtual (optional) | |
Thursday 4 May 2023 | 9:00-12:00 | MAQAO – an introduction with interactive exercises | Cedric Valensi | Hybrid | MCS1015 (Computer Science building) |
13:00-15:00 | Hands-on: Participants apply MAQAO to their codes | Participants | Hybrid | Visualisation lab (Computer Science building) | |
Tuesday 9 May 2023 | 16:00-17:00 | Flynn’s taxonomy, SPMD, and a brief revision of MPI operations and MPI progression | Tobias Weinzierl | Virtual (optional) | |
Thursday 11 May 2023 |
9:00-12:00 | Scalasca – 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:00 | Hands-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) | |
Thursday 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.
Rationale
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.
Registration
Please register before April 6 using this form: https://forms.gle/jEfFiu9QhkNCwbMF7 .
Accommodation
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:
- Hotel Indigo (15-20 min walk)
- Premier Inn (20-25 min walk)
- Marriott (15-20 min walk)
- Travelodge (25-30 min walk)
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.
Sessions
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
- Enjoyed to serve on the first panel at the DRI retreat in Manchester. Great questions. But also had a hard time: look at the microphone in front of me.
- It was great to be in Durham Cathedral today and see my PhD student graduate. Once again: Congratulations Dr Noble.
- Took me and two kids an afternoon to build this fake lego set. But eventually we did succeed. Peano, ExaHyPE, ... all are hosted on LRZ's gitlab and free to download.
- Congratulations to the compute centre next to my alma mater for Blue Lion.
- One of my favourite application domains (of which I understand next to nothing but for which I write software tools) combines proper science with fantastic pictures: sites.google.com/view/uknr/home Happy to join this club! https://sites.google.com/view/uknr/home