Event Date/s: From Wednesday 30 November 2016
To Thursday 01 December 2016
This workshop comprises two half-day sessions that will show you how to program multicore (e.g. Xeon) and massively multicore (e.g. Xeon Phi) computers using C++.
To register for this event or for more information go here
Session 1 - 30th November, 2pm-5pm - Parallel Programming with C++
This is a short course that will give you a taste of functional programming in C++ and how it can be used to write efficient parallel code. It will show how functional programming enables you to take advantage of modern parallel libraries, such as Intel's Threading Building Blocks. This enables you to express your program as a set of tasks, with associated dependencies between tasks. These tasks are then passed to the parallel library, which manages efficient scheduling and processing of those tasks across all of the cores available in your computer.
Session 2 - 1st December, 10am-1pm - Efficient Vectorisation with C++
This session will show you how to efficiently vectorise your C++ code. This will allow your software to make good use of the increasingly larger vector units that are appearing on modern multicore and massively multicore processors. It will show you how vectorisation can be performed at multiple levels, from simple compiler flags and pragmas, via libraries, or via direct use of vector intrinsics. You will learn why processor manufacturers are increasingly turning to vector units to improve performance, and how to best lay your program data out in memory to ensure optimal vector performance. By combining efficient vectorisation with parallel programming, you will ensure that your program makes optimal use of modern processors such as Xeon and Xeon Phi.
To follow both sessions of the workshop you should already have a good basic understanding of C++, e.g. loops, functions, containers and classes. In addition, this course will use modern C++ (C++ 2014). Where a modern C++ feature is used, it will be explained.