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.)
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.
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.
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++.
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.
|7 apr 2016||13:15-16:45||Organization and introductory lecture||C. Kessler||D. Knuth|
|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|
Will be announced later.
UPG1: Presentation of the project result including a demonstration of the prototype implementation. Written technical report.
5hp. All examination moments must be fulfilled.