Learn · CERN

Talk56 min

II - Template Metaprogramming for Massively Parallel Scientific Computing - Vectorization with Expression Templates

Jiří VYSKOČIL · CERN

Watch At CERN

About

Large scale scientific computing raises questions on different levels ranging from the fomulation of the problems to the choice of the best algorithms and their implementation for a specific platform. There are similarities in these different topics that can be exploited by modern-style C++ template metaprogramming techniques to produce readable, maintainable and generic code. Traditional low-level code tend to be fast but platform-dependent, and it obfuscates the meaning of the algorithm. On the other hand, object-oriented approach is nice to read, but may come with an inherent performance penalty.

These lectures aim to present he basics of the Expression Template (ET) idiom which allows us to keep the object-oriented approach without sacrificing performance. We will in particular show to to enhance ET to include SIMD vectorization. We will then introduce techniques for abstracting iteration, and introduce thread-level parallelism for use in heavy data-centric loads. We will show to to apply these methods in a way which keeps the "front end" code very readable. --- LECTURE 2 In this lecture, we will have a closer look at the opportunities for implementing SIMD vectorisation through the Expression Template idiom. We will see how it can create a layer of separation between the algorithm, and the low-level implementation. We will use the C++ template mechanisms to accommodate our program so that the algorithm itself doesn't need to explicitly specify SIMD-related types alignment, or operations. We will also explore how our memory data structure layout affects SIMD performance in different workloads, and introduce methods which improve performance in specific cases..

0:00:00 Slide 1

0:00:17 Slide 2

0:02:43 Slide 3

0:03:14 Slide 4

0:04:43 Slide 5

0:05:05 Slide 6

0:05:46 Slide 7

0:07:38 Slide 8

0:07:47 Slide 9

0:08:19 Slide 10

The talk

  1. II - Template Metaprogramming for Massively Parallel Scientific Computing - Vectorization with Expression Templates 2016-03-01 · 56 min · CERN's player

Credits and licence

Institution
CERN
Department
inverted CSC
Speaker
Jiří VYSKOČIL
Year
2016
Language
English
Subjects
Computer science
Source
CERN
Licence
CERN, as CERN states it. CERN's terms
Attribution
© CERN. CERN provides its audiovisual media free of charge for educational and informational use, credited to CERN; this lecture is shown in CERN's own player.
Who can watch
CERN gives no rating. Invisible Network shows it to Tweens profiles and older, judged from what the source says about it. How courses are placed