DFxxxxx
High-Level Parallel Programming Project (5hp)

VT1/2016

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

Lecture Notes

will be distributed at the beginning of the course.

Schedule and location

Programming projects will be done in room Konrad Zuse (IDA Multicore Lab), alternatively on an equivalent local machine.

DayTimeSession LecturerRoom
7 apr 201613:15-16:45 Organization and introductory lecture C. Kessler D. Knuth
DayTimeSessionLecturerRoom
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
Remark: Breaks are not shown in this schedule, and will be set as appropriate.

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.


This page is maintained by Christoph Kessler (chrke \at ida.liu.se)