COURSE OUTLINE

Session 1

Introduction to High-Performance Architectures and Applications

Current high-performance architectures, such as Cluster, Multicore, and Accelerators. Introduction to real-world applications that requires HPC, and the exascale challenge.

Session 2

Performance Analysis and Evaluation

Performance metrics, performance tracing and analysis. Characterisation of the applications’ performance. Bottlenecks and critical issues for performance scaling. Simple alternatives to visualise and identify performance problems.

Session 3

Structured Parallel Programming

Algorithmic Skeletons and Parallel Design Patterns. Separation of concerns, patterns and strategies for parallel programming.

Session 4

Parallel Programming for Multi-Core

Introduction to the shared memory parallel programming paradigm: Thread; lock and lock-free synchronisation mechanisms; race conditions, performance optimisations with load balancing and scheduling, cache efficiency, memory locality, and state-of-the-art libraries/frameworks.

Session 5

POSIX Threads

An overview of C++11 threads programming, use case examples for parallel programming with Loop parallelism and producer/consumer.

Session 7

OpenMP

An overview of OpenMP, its characteristics and functionalities, and use case examples.

Session 8

Parallel Programming for HPC Cluster

Introduction to the distributed memory parallel programming paradigm: process, deadlock, message passing, performance optimisations with load balancing and scheduling, and  state-of-the-art libraries/frameworks.

Session 9

HPC Cluster Deployment and Configuration

How to deploy a cluster for MPI applications using OpenMPI. Introduction to Ganglia Cluster Monitoring. Cluster managements tools (Torque and PBS).

Session 10

Seminary’s Question Time and Work

This session will be for explaining how the seminary should be given, and students can make questions about their subjects. Also, the goal is to talk individually with each group/student.

Session 11

MPI (Message Passing Interface)

Overview on the main features and characteristics of MPI programming interface. Use case examples and exercises.

Session 12

MPI (Message Passing Interface)

Overview on the main features and characteristics of MPI programming interface. Use case examples and exercises.

Session 13

Hybrid Parallel Programming

Exploit parallelism at the same time from multi-core and clusters. Programming using distributed and shared memory paradigms by using MPI and OpenMP.

Session 14

Introduction to Cluster for Big Data

Distributed file system and distributed data processing. Principles and characteristics. Cluster management and parallel programming frameworks. Use cases with Hadoop.

Session 6

Intel TBB

An overview of TBB, its characteristics and functionalities, and use case examples.

Session 15

Seminary

Each student will present his work as a seminary about a specific big data support tool for parallel programming.