<pclass="abstract">This talk is about data parallelism, FOSS software, many-core architectures and C++ meta programming and why we need it for open source projects. The speakers will relate to their experience in high-performance computing and scientific free software project leads over the last years, helping you to get your data crunched faster.</p>
<pclass="abstract">We start with a short introduction to indirect, pragma based drop-in languages like OpenMP and OpenACC that can bring your code up to speed in no time; just before telling you that those are not for the cool kids. The latter like explicit parallelism and abstracting it into kernels that can compile to multi-core CPUs, pretty-long-SIMD vector instructions and many-core architectures like GPUs without being copy-paste-rewritten, avoiding maintenance hell.</p>
<pclass="description">It's time to face reality: our favourite programming class has lied to us. Serial programming is dead and waiting even another single hour for the result of <code>./a.out</code>, processing some GB of data via a <code>for</code> loop, ~50 virtual interfaces and a nasty <code>#include </code> is as exciting as watching paint dry. Even worse, bridging the time as in the old days with yet another coffee will probably lead to a cardiac infarction since coffee machines just became so incredibly efficient and to be honest - we just finished three Mate.</p>
<pclass="description">We show why <ahref="https://www.xkcd.com/303/">compiling</a> nastily templated C++ code for 5 minutes and running it for one is cool, but vice versa is not. We will check out high-level feature support in FOSS compilers for efficient many-core coding and what one (might) still lack, e.g., to get on all CPUs/GPUs with C++. We will then show you easy to follow rules for data parallelism, examples for your own projects and our own open source C++11 library "alpaka/cupla" for writing performance-portable, single-source C++ code. As you might have [hoped/worried] already, we will make an excursus to C++ template meta programming and its benefits (and drawbacks) for the latter. CXX compile error messages that burst your terminal's scroll limit might appear <code>2>&1 | more</code>.</p>