HPC 2nd Intermediate Training Event (2022)

Date: Tuesday 21 – Thursday 23 June 2022

Location: The Cyprus Institute, Online

Description

This event will build on the knowledge and competences of the HPC Beginner Training Event and first HPC Intermediate Training Event and the focus of the event will be “GPU and Machine Learning“.

It will teach more advanced aspects of HPC and will include GPU programming using CUDA, Python, Julia, Python and Data Science and TensorFlow/Keras for text processing.

Pre-requisites

Attendees should be familiar with at least one programming language, such as C and Python. Hands on exercises are part of the training and will be provided in C and Python

Attendees should ideally have attended previous training events. If not, interested attendees are advised to follow these via the following links:

Git Repository and Presentation Material

The Git Repository with all material of the training event – including presentations and code, can be found at the following link:
https://github.com/CaSToRC-CyI/NCC-Intermediate-Training-2022

Agenda

Day 1 – Tuesday 21st June 2022
GPU programming using CUDA

  • 09:30 – 10:00: Welcome and Participant Introductions
  • 10:00-11:30: GPU programming using CUDA – Session 1. Presentation.
  • 11:30-12:00: Break
  • 12:00-13:00: GPU programming using CUDA – Session 2. Presentation.
  • 13:00-14:00: Lunch Break
  • 14:00-15:30: GPU programming using CUDA – Session 3. Presentation.
  • 15:30-16:00: Break
  • 16:00-17:00: GPU programming using CUDA – Session 4. Presentation.

Day 2 – Wednesday 22nd June 2022
GPU programming in Python and Introduction to MIT’s Julia Language

  • 10:00-11:30: GPU programming in Python – Session 1
  • 11:30-12:00: Break
  • 10:00-11:30: GPU programming in Python – Session 2
  • 13:00-14:00: Lunch Break
  • 14:00-15:30: Introduction to MIT’s Julia Language – Session 1
  • 15:30-16:00: Break
  • 16:00-17:00: Introduction to MIT’s Julia Language – Session 2

Day 3 – Thursday 23rd June 2022
Python in Data Science and TensorFlow/Keras for Text Processing

  • 10:00-11:30: Python in Data Science – Session 1
  • 11:30-12:00: Break
  • 12:00-13:00: Python in Data Science – Session 2
  • 13:00-14:00: Lunch Break
  • 14:00-15:30: TensorFlow/Keras for Text Processing
  • 15:30-16:00: Break
  • 16:00-17:00: Open Session – Questions and Discussion

GPU programming using CUDA

Speaker: Giannis Koutsou

Prerequisites: Trainees should be comfortable in programming using C and should have covered the introductory CUDA training course covered here.

Description: The session will begin with a review of the GPU programming model and CUDA in particular, followed by a presentation of practical aspects to consider for achieving performance. The hands-on component will include practical examples to demonstrate how considerations such as data-layout, use of shared memory, and GPU thread distribution affect GPU kernel performance.

GPU programming in Python

Speaker: Simone Bacchio

Description: Following the introduction to CUDA on the first day, we will explore how similar results can be achieved directly via Python. First, we will introduce the equivalent of Numpy, i.e. Cupy and test its “out-of-the-box” performance. Then we will look into performance improvements compiling dedicated kernels for various examples first using tools natively available in Cupy and then Numba for CUDA. All sessions will be presented via examples and hands-on sessions.

Introduction to MIT’s Julia Language

Speaker: Nikolas Bakas

Description: In this short session we will present the basic syntax structure of Julia Language. Julia is appropriate for Scientific Computing and Machine Learning, with a High-Performance compiler and simple syntax. Accordingly, we will demonstrate examples from Linear Algebra and BLAS, Statistics, and Machine Learning. Furthermore, the CUDA interface will be presented, along with commands for Multithreading and Vectorised computations. The examples will run in a hands-on session using Google Colab, where the participants may try the discussed concepts interactively.

Python in Data Science

Speaker: Nikolas Theodosiou

Prerequisites: Trainees should be comfortable with writing simple Python code.

Description: In this session we will present a simple Data Science project lifecycle, using the Python programming language. That is, Python will be used in order to load, clean and explore a real-world dataset. A predictive model will be then implemented and evaluated. The examples will be presented in an interactive Google Colab Notebook, and trainees will have the opportunity to become familiar with some well-established Data Science tools and libraries, such as Numpy, Matplotlib, Pandas and Scikit-learn.

TensorFlow/Keras for Text Processing

Speaker: Christos Christodoulou

Prerequisites: Attendees should be comfortable with the Python programming language. Keras/Tensorflow is not required but it makes the course easier to follow. Please view the following YouTube link for a similar course for computer vision tasks:
https://www.youtube.com/watch?v=jQgYuThPZVM

Description: In this short session we will use Keras/Tensorflow to solve a Natural Language Processing task, namely sentiment analysis.