
HLPP-2019
12th International Symposium on
High-Level Parallel Programming and Applications
July 3-5, 2019, Linköping, Sweden
Tutorial
Tutorial, 3 july 2019, 14:00-16:00
August Ernstsson, Linköping University:
High-level portable programming of heterogeneous systems using SkePU
Abstract:
Today's computer systems are increasingly heterogeneous and parallel,
and expose different (often, low-level) programming models to the user,
such as pthreads, OpenCL, CUDA or MPI. While this allows the
(technically skilled) programmer to better exploit the performance
potential of a given heterogeneous system, it
leads to problems in programmability
as well as in code and performance portability when
migrating to new heterogeneous systems and configurations.
As a high-level approach to portable multi-/manycore computing,
we present
SkePU, a C++ based high-level portable programming framework
that provides a
simple and unified programming interface for specifying
computations with the help
of so-called (algorithmic) skeletons.
Skeletons are pre-defined generic software
building blocks derived from higher-order functions such as map, farm,
scan, stencil and reduce, which can be parameterized in problem-specific
user code and which implement certain frequently occurring
patterns of control and data flow for which efficient target-specific
implementations may exist.
The SkePU skeletons have multiple implementations targeting different
platforms including
multi-core CPU, GPU and multi-GPU systems and clusters, and can automatically
learn from sample executions to
automatically switch to the expected fastest implementation.
SkePU also provides STL-based data-containers that abstract from
the memory hierarchy and distribution, and that dynamically optimize
memory management, communication and access locality.
SkePU is open-source, relatively easy to install,
and is being actively used in both research
and in teaching parallel programming classes.
In this tutorial we introduce SkePU, including some of its more
technical aspects, and demonstrate how high-level portable programs
can be written in SkePU and deployed.
We also provide a guided hands-on programming
exercise for participants and help with the installation process where
necessary (a binary distribution for x86 Linux will be provided for
quick installation). Participants are encouraged to bring
their laptop if doing the programming exercise.
About the speaker: August Ernstsson is the main developer of SkePU since 2016. He is a PhD student at the Department of Computer and Information Science of Linköping University.
Page responsible: Christoph Kessler
Last updated: 2019-06-13