Skip to main content

GPU Programming Workshop Series 2024

GPU Programming Workshop Series 2024

Over fifty percent of the supercomputers in the TOP500 list are now equipped with GPUs, and their share in total compute power is growing. For software to benefit from these massively parallel processors, developers have to gain an understanding of GPU architectures, available programming models and performance optimization techniques. The objective of this course is to provide research software engineers with an overview over GPU architecture principles and different GPU programming approaches. They learn “what is on the market”. Afterwards, they will be available to make an informed decisions which programming model to pick for their code, will have first quick n dirty prototypes up and running, and hence be able to start porting their applications to GPUs.

Basic Information

Date: 9 January 2024 – 1 February 2024
Delivery: Hybrid. Participants can decide per session if they want to attend in-person.
Audience: This workshop series is made for groups of developers who want to acquire an overview over various ways how to GPUise their code base.
Format: Tuesday sessions will be delivered as 1-hour lectures, while Thursday sessions will be full-day workshops with the opportunity to apply the newly gained skills to your own research code. We expect each participant/group to bring along their own research code and to participate in all full-day workshops.
Location: Department of Computer Science at Durham University and zoom

Course Content

Tuesday, 9th of  January 2024 (participation optional; virtual only):  GPU architecture and programming model (Laura Morgenstern, Durham University) – 16:00-17:00

Thursday, 11th of  January 2024: GPU Programming with standard C++ (t.b.c., MSC 1022)
9:00-12:00 Lecture
13:00-16:00 Participants apply skills to their code

Tuesday, 16th of  January 2024 (participation optional; virtual only): Debugging on GPUs (Laura Morgenstern, Durham University) – 16:00-17:00

Thursday, 18th of  January 2024: GPU Programming with OpenMP (Michael Klemm, AMD, MSC 1022)
9:00-12:00 Lecture
13:00-16:00 Participants apply skills to their code

Tuesday, 23rd of  January 2024 (participation optional; virtual only): Performance metrics (Laura Morgenstern, Durham University) – 16:00-17:00

Thursday, 25th of  January 2024: GPU Programming with SYCL (Stephen Blair-Chappell, Intel-certified oneAPI instructor and Sean Baccas, Durham University, MSC 1022)
9:00-12:00 Lecture
13:00-16:00 Participants apply skills to their code

Thursday, 1st of  February 2024: Presentation of lessons learned (Participants, MSC 1022)
9:00-12:00 Presentations


Participants should be in post as PDRA, PhD or RSE developing massively parallel data analysis and simulation codes. We expect each participant to bring their research code along to the workshops. These codes should be written in Fortran and/or C/C++ (or any other compiled language) and the participants should be familiar with the code base and the underlying language. In the ideal case, participants have completed our C/C++ introductory course.

We expect participants to join every session of the workshop series. In many cases, this will be challenging. Therefore, we want to encourage participants to form teams, i.e. please bring along friends and colleagues. Teams should work on one common code throughout the workshop series. Therefore, if some team members cannot join a particular session, we still have the “code participating” in all of them.

The course will be a tour de force through different GPUisation approaches. Participants who want to dive deeper into one particular GPU programming approach might be well-advised to sign up for a technology-/vendor-specific in-depth course. Debugging GPU codes will not be a major focus of this workshop series. Please see our dedicated correctness training for this. Profiling will be covered in one session. However, we plan to organise a dedicated performance analysis workshop series later in 2024.


Registration has closed on 1 January 2024.


Throughout the course, we will use nodes of our internal testbeds at Durham. You are welcome to try things out on your own kit, but we will not be able to provide any support. Therefore, we recommend that you sign up for the testbeds (via link above) ahead of the sessions. This will also give you the opportunity to ensure that your codes work fine on the target machines, i.e. all packages and tools are in place.

Material and confirmation

We will send out a welcome message closer to the workshop (after the registration has closed). Please note that we likely will not send out any messages prior to this. All lectures will be recorded and recordings plus material will be made publicly available through DiRAC.

Travel and accommodation

There is no financial or logistics 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:

The University has their own Events team. They also provide B&B accommodation. However, as we approach the new term, it is not likely that they have “spare” rooms.

The University’s official Visit Us page provides some general guidance how to find us. 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). You can book a taxi directly within the airport at the counter next to the International Arrivals.
  • 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.

Information for participants

  • We will use Slack for all conversations. Details have been shared with all participants via email.
  • We will use Zoom for the hybrid/online sessions. Details have been shared with all participants via email.
  • All in-person/hybrid meetings will be in the Vis Lab in the computer science building. It is room MSCS 0001. There will be coffee.
  • The Tuesday sessions are revision sessions. That is, we will briefly run through one GPU-related topic. The sessions are designed to be informal refreshers/revisions – most of you will have heard about them before – which make it easier to follow the main part of the workshop series. The topics are enlisted above.
  • In each and every Thursday session, we will start at 9:00 to discuss one GPU programming approach for around three hours. After that, participants are encouraged to try out the tools with their code. The lecturers and some of our RSEs will hang around and consult/help with first steps. Conversations will mainly happen via Slack. We really think that it is of great value to try out things with your own code or any dummy code you want to bring along – even though you might be married to Fortran + OpenMP in your main projects, e.g., this is the opportunity to play around with other technologies to see what other approaches including pros and cons are there.
  • Please sign up to one of our DINE/GPU testbed systems prior to the course. All tools will be pre-installed and tested on this system. If you want to play around with your own code, it is reasonably to check prior to the course if it builds on the target machine and if all libraries are available. We will not be able to give support to people who want to use their own machines, i.e. you can try to run tools on your machines, but we will not be able to help you if this does not work.
  • We have one more professional development course around performance analysis lined up for this year (registration still open) before we organise a small conference around HPC-related topics in Durham: For this conference, we have an open call for presentations, and it would be lovely if we would have a few presentations from people who ran through our training and show insight and progress made possible through our courses.