Highway is a "C++ library that provides portable SIMD/vector intrinsics." We've looked at some elements of SIMD before with the simdjson library, which used native compiler intrinsics to access SIMD functionality. These intrinsic functions can differ from compiler to compiler.
Highway aims to provide access to the same functionality in a portable manner, not only decoupling you from the specific compiler intrinsics functions, but also from the specific SIMD instruction set.
This month, Richard Thomson will give us an introduction to Highway. Some of the topics we'll review are:
How do we express SIMD parallel operations in Highway?
How does static dispatching work in Highway?
How does dynamic dispatching work in Highway?
Example code: https://github.com/LegalizeAdulthood/...
Highway: https://github.com/google/highway
Future topics: https://utahcpp.wordpress.com/future-...
Past topics: https://utahcpp.wordpress.com/past-me...
0:00:00 Introduction
0:05:07 Vector and Tag Types
0:19:31 Quick Overview of Operations
0:26:36 Static vs. Dynamic Dispatch
0:28:32 Dynamic Dispatch on Compiler Explorer
0:34:41 Example Code
0:57:56 Library Design Philosophy
1:02:47 Who's Using Highway