Training#

ICHEC provides a range of training courses and graduate level modules that cover basic to advanced HPC skills, as well as topics on technical computing, computational science and domain expertise. This section provides a brief description of the courses and graduate modules.

ICHEC Training Courses#

ICHEC training courses are typically open to researchers from any Irish third level institution, where participation is free of charge and are particularly relevant to existing or potential users of ICHEC resources through the National HPC Service. Some of these courses are offered as part of the PRACE/EuroCC project which are open to all PRACE/EuroCC countries.

Introduction to Linux#

This course serves as an introduction to working in a command line environment on HPC systems and how to effectively use the Linux command line, which involves carrying out basic operations such as navigating directories, and creating, viewing and editing files with text editors. Participants will then be introduced to bash scripting, which is a fundamental aspect of working on an HPC system. It is a half day course.

The breakdown of the topics covered is as follows;

  • Principles of Linux

  • Navigating through file systems

  • Working with files and directories

  • Useful UNIX tools

  • Working with loops and conditionals

  • Text editors (vim) and bash scripting

  • Setting up ssh keys

Introduction to HPC#

This course serves as an introduction to working on an HPC systems and how to effectively log in, load modules and submit jobs. Course participants will be provided with a course account and login details closer to the time following registration. It is a half day course.

The breakdown of the topics covered is as follows;

  • Logging into an HPC

  • Account types on Kay

  • Transferring files

  • Working with Modules

  • Submitting jobs

Introduction to Linux and HPC#

This course serves as an introduction to working in a command line environment on HPC systems and how to effectively use the Linux command line, which involves carrying out basic operations such as navigating directories, and creating, viewing and editing files with text editors. Participants will then be introduced to bash scripting, which is a fundamental aspect of working on an HPC system. It is a half day course.

The breakdown of the topics covered is as follows;

  • Principles of Linux

  • Basic commands (cd, ls, rm, wildcards, … )

  • Advanced commands (tar, grep, chmod, sed, … )

  • Text editors (vim)

  • Basics of bash scripting

  • Coding in bash

  • Compiling and running code

  • Submitting jobs on an HPC

Introduction to OpenMP#

This 1-day course focuses on the fundamentals of the OpenMP programming standard that supports “share memory multiprocessing”, e.g. writing parallel code (in C/Fortran) that uses multiple processor cores on a single compute node. Topics covered include the basic fork-join execution model, incremental parallelisation using OpenMP pragmas, simple parallel loops to other work sharing and synchronisation constructs.

Introduction to MPI#

This 2-day course introduces the participants to key aspects of the Message Passing Interface (MPI) standard, which is commonly used to develop highly scalable parallel applications in science and engineering. The course is based on C or Fortran, and covers fundamental MPI topics such as point to point communication, blocking vs non-blocking operations and collective communication.

Intermediate MPI#

This 3-day course is for researchers who wish to learn and gain practical experience in parallel programming using MPI beyond the basic concepts and methods, i.e. this course is aimed at those who should have at least a basic familiarity with MPI and competent in programming using C/Fortran. It initially provides a quick re-cap of basic MPI concepts but then proceeds to intermediate concepts such as defined datatypes, communicator management and one-sided communication.

Syllabus:

  • MPI Overview

  • MPI Point-to-Point Communication

    • Blocking and Non Blocking Communication

  • MPI Collective Communication

  • Groups and Communicators

  • Virtual Topologies

  • MPI Derived Data types

  • Intercommunicators

  • Persistent Communications, Packing

  • One-sided Communications

After the course the participants should know how to

  • write simple parallel programs with MPI and understand how internal MPI implementation details affect performance

  • define custom data types, groups and communicators

  • set up and use different communication modes

Introduction to R#

This 3-day course is focused around the R statistical software package commonly used by data scientists and analysts for a variety of purposes, ranging from fundamental statistical modelling to exploratory data visualisation. The syllabus below places a large emphasis on practical experience gained through hands-on sessions with example problems (basic syntax, data types, common operations, data import/export, cleaning and manipulation, plotting and visualisation). Students are expected to have a basic knowledge of the underlying statistical theories while the course focuses on the practical implementation of the various analytical techniques in R.

Introduction to Modern Fortran#

This 3-day course is designed for those who are getting started with Fortran and for those who wish to refresh their knowledge about the subject. It presents the main programming concepts and how these are implemented in the Fortran 95/2003 standards. The emphasis is on the coding and concepts behind the programming language rather that the algorithmics.

Python in HPC#

This course focuses on ways to optimise and parallel scientific Python codes, encompassing subjects such as performance analysis, efficient use of scientific libraries (e.g. NumPy), using extended Python languages like Cython, interfacing with C-libraries and utilising multi-processing strategies like Message Passing Interface (MPI) on HPC systems. Additionally emerging technologies such as utilising Python with Dask and GPUs will be covered. The course, split over 3 afternoons of 3 hours each, will cover the following topics:

  • NumPy, Performance Analysis

  • Single core optimisation with Cython

  • JIT compilation with numba

  • Interfacing with external C libraries

  • Parallel computing using mpi4py

  • Dask and GPUs

Other Training Courses#

ICHEC also delivers training on topics:

  • Linux Command Line

  • Intro to Python

  • Introduction to HPC and Containers

  • Introduction to Deep Learning and Frameworks

  • Practical Deep Learning

  • Molecular and Atomistic Simulations on HPC systems

ICHEC Graduate Modules#

Some of ICHEC courses have been ECTS accredited and are offered as modules where graduate students can attain ECTS credits for participation and completion of assignments (that are graded). These include

  • PH502 (University of Galway) / ACM40660 (UCD) Scientific Programming Concepts

  • PH504 (University of Galway) / ACM40640 (UCD) High Performance Computing and Parallel Programming

that have been delivered since 2012 (maybe before). They have been transfered to full semester modules since 2020. Scientific Programming Concepts is the first semester module from September to December and HPC and Parallel Programming is the second semester module from January to May. Both is 10 weeks module. These are official UCD and University of Galway modules and delivered from UCD Brightspace and University of Galway Canvas platforms. Students from other universities can also register to these modules from Canvas for ECTS credits, but they need to confirm with their institution that they accept ECTS credits given by University of Galway. For example, DCU students can not use ECTS credits from University of Galway. For students, who pass the modules, we issue a certificate to submit to their departments.

We manage the content for these modules on Canvas. Module coordinators are Barry Wardell - barry.wardell@ucd.ie from UCD and Nicholas Devaney - nicholas.devaney@universityofgalway.ie from University of Galway.

Scientific Programming Concepts#

This course is an introduction to programming concepts aimed at scientists who have had minimal or no formal training in programming. The focus is on C and Fortran yet the general concepts should be applicable to other programming languages.

On successful completion of this module, students should be able to:

  • Gain an understanding of what constitutes a computer program and how it is constructed.

  • Comprehend written source code.

  • Write and compile basic programs in C/Fortran.

  • Make use of standard libraries in own code.

Practical questions of the course often focus on the implementation of mathematical and scientific algorithms. Key areas of focus typically include: implementing numerical methods for approximating solutions to mathematical problems, linear algebra and matrix operations (e.g. matrix multiplication), core mathematical concepts and functions, and implementing well-known algorithms.

Module Schedule:

  1. First Week:

    • Topic: Overview of Computer Architectures and Introduction to Scientific Programming with C and Fortran

    • Practical: How to ssh/scp, Basic Unix bash and commands, Unix text editors, Compiling C/Fortran

  2. Second Week:

    • Topic: Variables and Arithmetic Operations + Intro to Git

    • Practical: Floating point and integer representation, Sum of the numbers

  3. Third Week:

    • Topic: Loops and Conditional Statements

    • Practical: Printing Syntax and Trapezoidal rule

  4. Fourth Week:

    • Topic: Arrays, Functions and Subroutines

    • Practical: Trapezoidal rule with functions

  5. Fifth Week:

    • Topic: Casting and Pointers

    • Practical: Input Syntax, Fibonacci, Inverse Hyperbolic Tangent function

  6. Sixth Week:

    • Topic: Structs and Some Useful Tools for Programmers

    • Practical: Matrix Multiplication

  7. Seventh Week:

    • Topic: More Pointers and Dynamic Array Allocation

    • Practical: Finding e, Dynamic memory allocation

  8. Eight Week:

    • Topic: Introduction to Algorithms

    • Practical: Greatest common divisor

  9. Nineth Week:

    • Topic: Algorithms and Standard Libraries

    • Practical: Magic Square Problem

  10. Tenth Week:

    • Topic: Introduction to Object Oriented Programming

    • Practical: The tower of Hanoi problem

The module structure includes pre-recorded video lectures and weekly practicals, which are shared every Monday. Online live hands-on sessions are scheduled via Zoom every Tuesday from 10:00 to 12:00. More details are provided during the introductory session in the first week. The assessment for the module consists of two assignments, accounting for 60% of the grade, and an exam, making up the remaining 40%.

High Performance Computing and Parallel Programming#

This module introduces key topics in high performance computing (HPC), including parallel programming. Prior programming experience in C or Fortran, as well as basic knowledge of UNIX/Linux shell is expected.

On successful completion of this module, students should be able to:

  • Understand key HPC concepts and how they are applied in scientific research.

  • Devise parallel strategies to solve computational problems.

  • Develop and understand basic parallel applications that uses OpenMP and MPI.

Practical questions of the course often focus on the implementation of mathematical and scientific algorithms. Key areas of focus typically include: implementing numerical methods for approximating solutions to mathematical problems, linear algebra and matrix operations, core mathematical concepts and functions, and implementing well-known algorithms.

Module Schedule:

  1. First Week:

    • Topic: Introduction to HPC and HPC Architectures

    • Practical: How to ssh/scp, Basic Unix bash and commands, Unix text editors, Compiling C/Fortran/OpenMP/MPI codes

  2. Second Week:

    • Topic: Parallel Performance and Parallel Programming Models

    • Practical: Performance analysis of HPC applications

  3. Third Week:

    • Topic: Introduction to OpenMP

    • Practical: OpenMP helloworld and vector addition in OpenMP

  4. Fourth Week:

    • Topic: OpenMP Parallelisation Constructs and Performance

    • Practical: OpenMP schedule clause, dot product and race condition in OpenMP

  5. Fifth Week:

    • Topic: OpenMP versions after 2.5

    • Practical: Matrix multiplication in OpenMP and OpenMP task parallelism

  6. Sixth Week:

    • Topic: Introduction to MPI

    • Practical: MPI helloworld

  7. Seventh Week:

    • Topic: MPI Point to Point and Non-Blocking Communication

    • Practical: pingpong, latency/bandwidth in MPI

  8. Eight Week:

    • Topic: MPI Collective Communication

    • Practical: MPI simple collectives operations

  9. Nineth Week:

    • Topic: MPI Communicators and Virtual Topologies

    • Practical: MPI cartesian topology

  10. Tenth Week:

    • Topic: MPI Derived Datatypes

    • Practical: MPI vector derived datatype

The module structure includes pre-recorded video lectures and weekly practicals, which are shared every Monday. There is normally a two-week break to overlap with University of Galway and UCD reading weeks in the second semester. Online live hands-on sessions are scheduled via Zoom every Tuesday from 11:00 to 13:00. More details are provided during the introductory session in the first week. The assessment for the module consists of two assignments, accounting for 60% of the grade, and an exam, making up the remaining 40%.

Other Graduate Modules#

PS6163 (Data Analysis Through R)#

This module is delivered as part of the Masters programme in Consumer Psychology in the University of Galway. It is the first semester module from September to December and delivered from the University of Galway Canvas platforms. We manage the module content on Canvas.

It introduces R open source statistical suite and the RStudio development interface, and covers the basics of data analysis with it, from data import to report generation. The aim of the course is to provide the basics of R programming for data analysis, and introduce a wide array of statistical functions and tests, on a platform that is freely available, and which will allow to easily share, publish and reuse code. While R comes with a lot of in-built functions for data import, wrangling and plotting, it mostly focuses on the “tidyverse” collection of packages that will allow to write cleaner, more readable code, while providing with a lot of extra functionalities.

CE4031 Introduction to Deep learning and Networks#

This module is delivered as part of Certificate in Artificial Intelligence at UL. It is the first semester module from October to December. It runs over 7 weeks and delivered from the UL Brightsppace platform. We manage the module content on Brightspace and Mags Dunne - Mags.Dunne@ul.ie is the module administrator.

It is split into 3 parts. First section introduces machine learning techniques in particular linear regression. Second section introduces basic concepts in deep learning. This includes the components that make up an artificial neural network (ANN) with the mathematics of how they operate. Final section introduces convolutional neural networks (CCNs) which are used for image analysis and Keras.

On completion of the module, students should be able to learn:

  • How deep learning fits into the spectrum of machine learning techniques.

  • Understand some basic machine learning techniques.

  • Describe the concepts behind the most basic ANN the feedforward network.

  • Identify layers, nodes, weights, and biases

  • Describe the training process.

  • Understand the issues associated with network training.

  • Implement a simple ANN with sci-kit learn package.

  • Understand the CNN topology.

  • Implement a CNN with Keras.

CS5004 Deep Learning#

ICHEC and UL share teaching and assessment responsibilities for this module. It is delivered as part of MSc in Artificial Intelligence at UL. It is the second semester module from January to April. It runs over 7 weeks and delivered from the UL Brightsppace platform. We manage the module content on Brightspace with J. J. Collins from the Computer Science and Information Systems at UL.

It is split into three sections covering different aspects of DL. The first two weeks covers autoencoders. The purpose of the network is to predict it’s own input. The evolution of this approach leads to Generative Adversarial Networks (GANs). The second section involves sequence and series data and Recursive Neural Networks (RNN). The third section is over three weeks. It covers a broad range of techniques in Reinforcement Learning.

On completion of the module, students should be able to:

  • Process and analyse data when furnished with real-world datasets for deep neural networks.

  • Parameterise an appropriate deep learning architecture, and then apply it to a given real-world problem.

  • Demonstrate competency in the use of supported deep learning frameworks.

  • Interpret and evaluate the outputs of a deep learning architecture.

  • Compare and contrast deep learning architectures.

CT4106 Quantum Programming Foundations#

Quantum Programming Foundations Course is the first semester module from September to December. It is 12 weeks module and delivered from University of Galway Canvas platform by ICHEC. Students from other universities can also register to this module. This module aims at providing exposure into quantum computing with minimal technical prerequisits. Quantum Computing is evolving, and ICHEC contunies updating the module content add more modules with time to make it more comprehensive and inclusive of the skills and knowledge of the quantum computing ecosystem.

Module Schedule:

  1. Lecture 1 - Demystifying Quantum Computing

  2. Lecture 2 - Integrating Classical and Quantum Computing

  3. Lecture 3 - From Bits to Qubits

  4. Lecture 4 - Mathematical Framework for Qubits

  5. Lecture 5 - Guest Lecture: Introduction to Quantum Information & Cryptography

  6. Lecture 6 - Realizing Quantum Computing Systems

  7. Lecture 7 - Guest Lecture: Building a Quantum Computer

  8. Lecture 8 - Accessing and Programming Quantum Computing Systems

    • 8a: Accessing Quantum Computing

    • 8b: Landscape of Quantum SDK’s and Tools

  9. Lecture 9 - Guest Lecture: Cloud Quantum computing Service

  10. Lecture 10 - Quantum Algorithms - I

  11. Lecture 11 - Quantum Algorithms - II

  12. Lecture 12 - ICHEC’s engagement in Quantum Computing