Theme: Programming

Data oriented design and implementation


Level: Beginner

Typical duration: 1 day

Lectures: 4h

Labs: 4h

Course code: PR03

Vectors and data-parallel computing are back with a vengeance, offering significant speedups to those who know how to use them. But how to exploit this power?

Training topics

Vectorization

This course is an introduction to vector and data-parallel computing. It starts with a discussion of legacy vector computing - lessons learned from the past are as valuable as ever. Further, we discuss modern hardware options for vector computing, in general purpose processors and accelerators alike. Finally, we briefly talk about programming models and technologies that support the development of vectorized code - from intrinsics, through vector classes and array syntax, up to autovectorization.

Half of the course is composed of labs, which accelerate learning and lead the students directly to practical hands-on driven experience.

 

Results

After the course, the students will:
- Perform basic vectorization of existing and new code to obtain speedups
- Identify main opportunities for data parallelism and design accordingly
- Understand and use the hardware and software infrastructures supporting efficient vector computing
- Understand and use the main differences between general purpose processosr and accelerators

Training concepts

Introduction to vectors, the legacy and the future. Data models, scalar and packed data, precision, floating point SIMD, vector instruction sets vs. their implementation
Programming models and technologies