Introduction to High-Performance Computing
from
Monday 19 August 2013 (08:00)
to
Friday 30 August 2013 (15:00)
Monday 19 August 2013
08:30
Registration
Registration
08:30 - 09:15
Room: E3
09:15
Welcome to PDC and the Summer School
-
Erwin Laure
(
PDC-HPC
)
Welcome to PDC and the Summer School
Erwin Laure
(
PDC-HPC
)
09:15 - 10:15
Room: E3
10:15
Coffee break
Coffee break
10:15 - 10:30
10:30
Concepts and Algorithms for Scientific Computing
-
Björn ENGQUIST
Concepts and Algorithms for Scientific Computing
Björn ENGQUIST
10:30 - 12:15
Room: E3
12:15
Picnic
Picnic
12:15 - 14:00
14:00
Introduction to PDC's Environment
-
Izhar UL HASSAN
Introduction to PDC's Environment
Izhar UL HASSAN
14:00 - 15:00
Room: E3
15:00
Coffee break
Coffee break
15:00 - 15:15
15:15
Lab: Introduction to PDC's Environment
-
Izhar UL HASSAN
Lab: Introduction to PDC's Environment
Izhar UL HASSAN
15:15 - 16:45
Room: Room: 4V2Röd, 4V3Ora
Tuesday 20 August 2013
09:15
High-Performance Computer Architecture
-
Erik HAGERSTEN
High-Performance Computer Architecture
Erik HAGERSTEN
09:15 - 10:00
Room: E3
10:00
Coffee break
Coffee break
10:00 - 10:15
10:15
High-Performance Computer Architecture
-
Erik HAGERSTEN
High-Performance Computer Architecture
Erik HAGERSTEN
10:15 - 12:00
12:00
Individual lunch
Individual lunch
12:00 - 13:00
13:00
High-Performance Computer Architecture
-
Erik HAGERSTEN
High-Performance Computer Architecture
Erik HAGERSTEN
13:00 - 15:00
Room: E3
15:00
Coffee break
Coffee break
15:00 - 15:15
15:15
Lab: Introduction to PDC's Environment
-
Izhar UL HASSAN
Lab: Introduction to PDC's Environment
Izhar UL HASSAN
15:15 - 17:00
Room: 4V2Röd, 4V3Ora
PDC Machine Room Tour
PDC Machine Room Tour
15:15 - 17:00
Wednesday 21 August 2013
09:15
Shared memory programming, OpenMP
-
Thomas ERICSSON
Shared memory programming, OpenMP
Thomas ERICSSON
09:15 - 10:00
Two common ways of speeding up programs are to use processes or threads executing in parallel. The second week of the Summer School presents process-based parallel computing using MPI. In this lecture parallelization using threads will be discussed. Threads can be managed in different ways, e.g. using a low level library, like the POSIX threads library. The lecture deals with OpenMP, which is a more convenient way to use threads. OpenMP is a specification for a set of compiler directives, library routines, and environment variables that can be used to specify shared memory parallelism in Fortran and C/C++ programs. The threaded program can be executed on a shared memory computer (e.g. a multi- core processor). Typically, the iterations of a time consuming loop are shared among a team of threads, each thread working on part of the iterations. The loop is parallelized by writing a directive in the code and a compiler or a pre- processor will generate parallel code. Using short code examples, the lecture covers the most important OpenMP-constructs, how to use them and how not to use them. A few more realistic examples are presented as well.
10:00
Coffee break
Coffee break
10:00 - 10:15
10:15
Shared memory programming, OpenMP
-
Thomas ERICSSON
Shared memory programming, OpenMP
Thomas ERICSSON
10:15 - 12:00
Room: E3
12:00
Individual lunch
Individual lunch
12:00 - 13:00
13:15
Shared memory programming, OpenMP
-
Thomas ERICSSON
Shared memory programming, OpenMP
Thomas ERICSSON
13:15 - 14:00
Room: E3
T
14:15
Lab: Programming Exercises on OpenMP
-
Niclas JANSSON
Stefano MARKIDIS
Lab: Programming Exercises on OpenMP
Niclas JANSSON
Stefano MARKIDIS
14:15 - 15:00
Room: 4V2Röd, 4V3Ora
15:00
Coffee break
Coffee break
15:00 - 15:15
15:15
Lab: Programming Exercises on OpenMP
-
Stefano MARKIDIS
Niclas JANSSON
Lab: Programming Exercises on OpenMP
Stefano MARKIDIS
Niclas JANSSON
15:15 - 16:00
Room: 4V2Röd, 4V3Ora
Thursday 22 August 2013
09:15
Code optimization
-
Thomas ERICSSON
Code optimization
Thomas ERICSSON
09:15 - 10:00
Room: E3
In this lecture techniques for speeding up code on a uniprocessor are presented. The lecture covers basic optimization principles such as using the memory hierarchy in an efficient way. Using short code examples, the lecture covers stride minimization, blocking, loop- fusion, loop- splitting and other approaches. The choice of programming language (Fortran or C), and compiler will be discussed. There are some hints of how to tune Matlab programs. Other topics are vector arithmetic for floating point and elementary functions, virtual memory, files and the LAPACK and BLAS libraries.
10:00
Coffee break
Coffee break
10:00 - 10:15
10:15
Code optimization
-
Thomas ERICSSON
Code optimization
Thomas ERICSSON
10:15 - 12:00
Room: E3
12:00
Individual lunch
Individual lunch
12:00 - 13:00
13:15
Lab: OpenMP Advanced Project
-
Niclas JANSSON
Stefano MARKIDIS
Lab: OpenMP Advanced Project
Niclas JANSSON
Stefano MARKIDIS
13:15 - 15:00
Room: 4V2Röd, 4V3Ora
15:00
Coffee break
Coffee break
15:00 - 15:15
15:15
Lab: OpenMP Advanced Project
-
Niclas JANSSON
Stefano MARKIDIS
Lab: OpenMP Advanced Project
Niclas JANSSON
Stefano MARKIDIS
15:15 - 17:00
Room: 4V2Röd, 4V3Ora
Friday 23 August 2013
08:30
Wrap up: OpenMP Advanced Project
-
Stefano MARKIDIS
Niclas JANSSON
Wrap up: OpenMP Advanced Project
Stefano MARKIDIS
Niclas JANSSON
08:30 - 09:00
Room: E3
09:15
GPU Architectures for Non-Graphics People
-
David BLACK-SCHAFFER
GPU Architectures for Non-Graphics People
David BLACK-SCHAFFER
09:15 - 10:00
Room: E3
Today everyone is positioning GPUs for general purpose computing. They claim that you can get 10-100x speedups over conventional CPUs, and sometimes they're even right. However, to get the most out of current- (and next-) generation GPUs, one needs to understand the architectural differences and how they effect your choice of algorithm. In this talk I will cover GPU architecture in comparison to current CPUs, discuss the implications for getting good performance, and introduce OpenCL as a general-purpose programming language for accessing GPUs and CPUs today.
10:00
Coffee break
Coffee break
10:00 - 10:15
10:15
GPUs: The Hype, The Reality, and The Future
-
David Black-Schaffer
GPUs: The Hype, The Reality, and The Future
David Black-Schaffer
10:15 - 11:00
Room: E3
We'll take a look at the promise and the results of porting applications to GPUs and try to distinguish the hype from the reality. We'll take a closer look at where GPUs fit into HPC today and in the near future, and try to do a fair comparison of GPU optimized programs, CPU optimized programs, and even take a look at competing accelerators such as the Intel Xeon Phi. The goal of this lecture is to give you some perspective on GPU technology and where it may (or may not) fit into HPC in the next few years.
11:00
Introduction to CUDA
-
Michael SCHLIEPHAKE
Introduction to CUDA
Michael SCHLIEPHAKE
11:00 - 12:00
Room: E3
CUDA is a parallel computing platform and programming model for NVIDIA GPU devices that allows to use the capabilities of the hardware efficiently. Lecture and lab give an overview of CUDA, discuss aspects of programming that needs the programmer's attention in order to gain the desired performance, and provide a first hands-on experience.
12:00
Individual lunch
Individual lunch
12:00 - 13:00
13:15
Lab: CUDA
-
Michael SCHLIEPHAKE
Lab: CUDA
Michael SCHLIEPHAKE
13:15 - 14:15
Room: 4V2Röd, 4V3Ora
14:15
Introduction to CUDA
-
Michael SCHLIEPHAKE
Introduction to CUDA
Michael SCHLIEPHAKE
14:15 - 15:00
Room: E3
15:00
Coffee break
Coffee break
15:00 - 15:15
15:15
Introduction to CUDA
-
Michael SCHLIEPHAKE
Introduction to CUDA
Michael SCHLIEPHAKE
15:15 - 16:00
Room: E3
16:00
Lab: CUDA
-
Michael SCHLIEPHAKE
Lab: CUDA
Michael SCHLIEPHAKE
16:00 - 17:00
Room: 4V2Röd, 4V3Ora
Saturday 24 August 2013
Sunday 25 August 2013
Monday 26 August 2013
09:15
MPI Introduction
-
Erwin LAURE
MPI Introduction
Erwin LAURE
09:15 - 10:00
Room: E3
10:00
Coffee break
Coffee break
10:00 - 10:15
10:15
MPI Basic Concepts & Point-to-Point Communication
-
Erwin LAURE
MPI Basic Concepts & Point-to-Point Communication
Erwin LAURE
10:15 - 12:00
Room: E3
12:00
Individual lunch
Individual lunch
12:00 - 13:00
13:15
Lab: MPI Part 1
-
Jonathan VINCENT
Lab: MPI Part 1
Jonathan VINCENT
13:15 - 15:00
Room: 4V2Röd, 4V3Ora
15:00
Coffee break
Coffee break
15:00 - 15:15
15:15
Lab: MPI Part 1
-
Jonathan VINCENT
Lab: MPI Part 1
Jonathan VINCENT
15:15 - 17:00
Room: 4V2Röd, 4V3Ora
Tuesday 27 August 2013
09:15
MPI - Collective Communication
-
Erwin LAURE
MPI - Collective Communication
Erwin LAURE
09:15 - 10:00
Room: E3
10:00
Coffee break
Coffee break
10:00 - 10:15
10:15
MPI - Intermediate MPI
-
Erwin LAURE
MPI - Intermediate MPI
Erwin LAURE
10:15 - 11:00
Room: E3
11:15
Performance Engineering
-
Pekka MANNINEN
Performance Engineering
Pekka MANNINEN
11:15 - 12:00
Room: E3
12:00
Individual lunch
Individual lunch
12:00 - 13:00
13:15
Performance Engineering
-
Pekka MANNINEN
Performance Engineering
Pekka MANNINEN
13:15 - 14:00
Room: E3
14:15
Lab: Performance Engineering
-
Pekka MANNINEN
Lab: Performance Engineering
Pekka MANNINEN
14:15 - 15:00
Room: 4V2Röd, 4V3Ora
15:00
Coffee break
Coffee break
15:00 - 15:15
15:15
Lab: Performance Engineering
-
Pekka MANNINEN
Lab: Performance Engineering
Pekka MANNINEN
15:15 - 17:00
Room: 4V2Röd, 4V3Ora
Project work
Project work
15:15 - 17:00
Room: 4V2Röd, 4V3Ora
Discuss your project ideas with other students, the course examiner, and tutors.
Wednesday 28 August 2013
08:30
Wrap up: Performance Engineering
-
Pekka MANNINEN
Wrap up: Performance Engineering
Pekka MANNINEN
08:30 - 09:00
Room: E3
09:15
MPI: Advanced Concepts
-
Erwin LAURE
MPI: Advanced Concepts
Erwin LAURE
09:15 - 10:00
Room: E3
10:00
Coffee break
Coffee break
10:00 - 10:15
10:30
MPI: Advanced Concepts
-
Erwin LAURE
MPI: Advanced Concepts
Erwin LAURE
10:30 - 11:15
11:15
Parallel Performance Engineering
-
Pekka MANNINEN
Parallel Performance Engineering
Pekka MANNINEN
11:15 - 12:00
Room: E3
12:00
Individual lunch
Individual lunch
12:00 - 13:00
13:15
Lab: Parallel Performance Engineering
-
Pekka MANNINEN
Lab: Parallel Performance Engineering
Pekka MANNINEN
13:15 - 15:00
Room: 4V2Röd, 4V3Ora
15:00
Coffee break
Coffee break
15:00 - 15:15
15:15
Lab: MPI Part 2
-
Jonathan VINCENT
Lab: MPI Part 2
Jonathan VINCENT
15:15 - 17:00
Thursday 29 August 2013
09:15
Interconnection Networks
-
Michael SCHLIEPHAKE
Interconnection Networks
Michael SCHLIEPHAKE
09:15 - 10:00
Room: E3
Interconnect networks have large influence on the performance and efficiency of message-passing and File-I/O operations in cluster systems. The lecture presents concise information about interconnect networks in order to support the understanding of their influence and how to use it in favour of simulation applications.
10:00
Coffee break
Coffee break
10:00 - 10:15
10:15
Interconnection Networks
-
Michael SCHLIEPHAKE
Interconnection Networks
Michael SCHLIEPHAKE
10:15 - 11:00
Room: E3
11:15
Case Study: Numerical experiments of turbulent flows on supercomputers
-
Philipp SCHLATTER
(
KTH
)
Case Study: Numerical experiments of turbulent flows on supercomputers
Philipp SCHLATTER
(
KTH
)
11:15 - 12:00
Room: E3
After a short description about the activities of the Swedish e-Science Research Centre (SeRC) a general motivation of studying turbulence is given, including elucidating the large range of scales needed to be resolved for high Reynolds numbers. The infrastructure needed to perform these simulations are discussed, including the simulation codes and large scale computational resources. Examples of such large scale simulations are then given in terms of high Reynolds number turbulent boundary layers on a flat plate, and also such a boundary layer with an obstacle. Finally the possibility to scale up the simulations to flows of direct aeronautical interest is discussed, e.g. when will it be possible to replace typical university wind tunnel experiments with DNS? This begs the question of the possibility of exa-scale computing and questions if the current methods can be used on such e-Infrastructure is posed?
12:00
Individual lunch
Individual lunch
12:00 - 13:00
13:15
Lab: MPI Part 3
-
Jonathan VINCENT
Lab: MPI Part 3
Jonathan VINCENT
13:15 - 15:00
Room: 4V2Röd, 4V3Ora
15:00
Coffee break
Coffee break
15:00 - 15:15
15:15
Lab: MPI Part 3
-
Jonathan VINCENT
Lab: MPI Part 3
Jonathan VINCENT
15:15 - 17:00
Room: 4V2Röd, 4V3Ora
Project work
Project work
15:15 - 17:00
18:00
Social dinner
Social dinner
18:00 - 21:00
Friday 30 August 2013
09:15
Future Programming Languages
-
Stefano MARKIDIS
Future Programming Languages
Stefano MARKIDIS
09:15 - 10:00
Room: E3
The lecture presents the current limitations of traditional programming models, such as MPI and openMP, and provides motivations to adopt new programming models for parallel computing. The potential of innovative programming models such as the Partitioned Global Address Space (PGAS) languages, and task-based programming models is discussed. Few examples of how to test on Lindgren these innovative programming models are also presented.
10:00
Coffee break
Coffee break
10:00 - 10:15
10:15
Future Programming Languages
-
Stefano MARKIDIS
Future Programming Languages
Stefano MARKIDIS
10:15 - 11:00
Room: E3
11:15
Abstractions for processing large data sets
-
Jonas YNGVESSON
Abstractions for processing large data sets
Jonas YNGVESSON
11:15 - 12:00
Room: E3
At Google there is often a need to process very large data sets across many machines. Building efficient parallel processing programs is not trivial and to avoid the overhead of each engineer reinventing the wheel, Google has created several programming models to abstract away the complexities of parallelism and have the programmer concentrate on the core of his processing problem instead. I will talk mainly about the MapReduce model, how it works and the conceptual model the programmer has to work with when using it. I will also mention a bit about a more recent framework, Pregel, which is built for processing very large
12:00
Individual lunch
Individual lunch
12:00 - 12:15
13:00
Open Lab and Project Work
Open Lab and Project Work
13:00 - 17:00
Room: 4V2Röd, 4V3Ora