Intrinsics - Low-Level Engine Development with Burst - Unite Copenhagen
Offered By: Unity via YouTube
Course Description
Overview
Syllabus
Intro
Who this talk is for
Talk Contents
What is SIMD?
SIMD Analogy: Chopping Veggies
Why is SIMD important?
Dedicated Hardware: Skylake Example
Cache Bandwidth
The vector fallacy
Quick smell test for float SIMD-ness (x86)
Example: 3D dot products (back to basics)
Example: 3D dot products (SIMD)
SIMD mindset, contd.
So how do you get SIMD code?
LLVM's auto vectorizer
Example of successful vectorization
Explicit SIMD with Unity.Mathematics
Explicit Unity.Mathematics SIMD Example
The need for typeless SIMD
Data reinterpretation
Instruction selection
Leveraging data tricks
What we're working on
Typeless?
Do what the hardware does
API Usage Example
API Extract
A more complete example
Reference version
Reference disassembly
Let's lose the branches
Branch-free disassembly
Explicit SIMD with Unity Mathematics
Explicit Math version disassembly
Explicit SIMD with Burst Intrinsics
Explicit SIMD Disassembly
Guidelines for SIMD with Burst
What about System.Numerics?
Summary
Thank you!
Taught by
Unity
Tags
Related Courses
Stanford Seminar - MIPS Open, Wave ComputingStanford University via YouTube Loop Analysis and Vectorization in Julia - JuliaCon 2020
The Julia Programming Language via YouTube Intrinsic Functions and Vector Processing Extensions for SIMD Parallel Operations in C++
javidx9 via YouTube Aggregating Ticks to Manage Scale in Sea of Thieves - Unreal Fest Europe 2019 - Unreal Engine
Unreal Engine via YouTube Writing Fast Java Code with the Vector API - JEP Café 18
Java via YouTube