Recommended for
Graduate (CUGS, CIS, ...) students interested in programming parallel,
distributed and heterogeneous computing systems using high level
programming abstractions and tools.
This is an Advanced Course. It requires a previous master or PhD
level course in foundations, algorithms and programming for parallel systems,
such as
DF21500 Multicore Computing,
TDDC78 Programming of Parallel Computers
or
TDDD56 Multicore and GPU Programming.
Registration (internal access only).
(If you have no account for the IDA graduate education portal,
please contact the IDA graduate education office,
Mrs. Anne Moe (annes \at ida.liu.se)
for manual registration.)
Organization
Introductory lecture (ca. 3h),
individual programming project, presentation/demonstration of the
solution and written technical report.
The course was last given
This is a new course.
Goals
The parallel programming frameworks used most commonly
in practice today (e.g., MPI, pthreads, OpenMP, CUDA, OpenCL) offer
a relatively low level of abstraction; many (also platform-specific)
details are exposed to the programmer, providing options for
code optimization but also leading to problems with code portability,
performance portability, and programmability.
To remedy the situation, various programming models enforcing a higher
level of abstraction have been proposed, such as skeleton programming,
data-flow programming, and domain-specific parallel programming
languages.
This course exposes participants to selected high-level parallel programming
models, in particular based on algorithmic skeletons, domain-specific
languages, and on data-flow based parallel programming.
An existing problem / application shall be selected and implemented
with at least one of several proposed frameworks
for high-level parallel programming
(such as SkePU, FastFlow, OpenACC, SYCL, TBB, Galois, Drake).
Implementations and experimental evaluations will be done
on GPGPU-based servers and on manycore platforms.
Prerequisites
A previous master or PhD level course in foundations, algorithms and
programming for parallel systems,
such as
DF21500 Multicore Computing,
TDDC78 Programming of Parallel Computers
or
TDDD56 Multicore and GPU Programming.
Good programming skills in C/C++.
Contents/Schedule
Introductory lecture, individual programming project,
presentation, and written technical report.
Schedule: now available, see below
Programming projects will be done in room Konrad Zuse (IDA Multicore Lab), alternatively on an equivalent local machine.
Day | Time | Session | Lecturer | Room |
7 apr 2016 | 13:15-16:45 | Organization and introductory lecture | C. Kessler | D. Knuth |
Day | Time | Session | Lecturer | Room |
15 jun 2016 | 09:15-15:00 | Student project presentation session | D. Knuth | |
09:15 | Lu Li: Conjugate Gradient Solver and FFT using VectorPU: A Generic and Efficient Smart Container for Transparent Data Transfer on GPU-based Heterogeneous Systems | |||
09:45 | Gustav Thorslund: Parallel PDE Solver Evaluation of High-Level Parallel Programming Frameworks | |||
10:15 | --- Coffee Break --- | |||
10:30 | Mahder Gebremedhin: Parallel Non-Linear Solver with OpenACC | |||
11:00 | Nicolas Melot: TBA | |||
12:00 | --- Lunch Break --- | |||
13:00 | Suejb Memeti: Finite Automata Based Parallel Regular Expression Matching for DNA Sequence Analysis - SkePU and OpenMP |
Literature
Will be announced later.
Some references:
Teachers
Examination
UPG1: Presentation of the project result including a demonstration of the prototype implementation. Written technical report.
Credit
5hp. All examination moments must be fulfilled.