Date: 9 - 11 September 2013

Graphics Processing Units (GPUs) were originally designed to display
computer graphics, but they have developed into extremely powerful
chips capable of handling demanding, general-purpose calculations. The
GPU architecture is inherently is more suited to many types of
intensive parallel computations than the traditional CPU, and hence
computationally demanding sections of code can be accelerated to
significantly increase overall performance. This is true not just for
small-scale applications run on desktop size machines, but also for
the largest-scale applications on massively parallel
architectures.

Applications must be adapted to utilise GPUs: most lines of
application source code are executed on the CPU and key computational
kernels are distributed to the GPU cores. Currently, for NVIDIA GPUs,
the most popular programming method is the CUDA API, which is
extremely powerful but requires significant development effort. OpenCL
is an alternative API, which is less mature than CUDA but has
portability advantages. Recently, a new higher-level standard has
emerged, OpenACC, which promises to offer higher productivity. The
programmer uses "directives" in the code to provide the compiler with
the information required to automatically offload code to the GPU.

In this 3-day course we will introduce and provide hands-on experience of
CUDA, OpenCL (with more emphasis on the former) and OpenACC. In many
cases it is relatively straightforward to port a code to the GPU, but
much harder to obtain good performance: we will cover a range of
common GPU optimisation techniques.

No prior HPC or parallel programming knowledge is assumed, but
attendees must already be able to program in C, C++ or Fortran. Access
will be given to appropriate hardware for all the exercises.

Pre-requisite Programming Languages:

Fortran, C or C++.

https://events.prace-ri.eu/event/185/

Event types:

  • Workshops and courses


Activity log