Главная
Study mode:
on
1
Intro
2
Who this talk is for
3
Talk Contents
4
What is SIMD?
5
SIMD Analogy: Chopping Veggies
6
Why is SIMD important?
7
Dedicated Hardware: Skylake Example
8
Cache Bandwidth
9
The vector fallacy
10
Quick smell test for float SIMD-ness (x86)
11
Example: 3D dot products (back to basics)
12
Example: 3D dot products (SIMD)
13
SIMD mindset, contd.
14
So how do you get SIMD code?
15
LLVM's auto vectorizer
16
Example of successful vectorization
17
Explicit SIMD with Unity.Mathematics
18
Explicit Unity.Mathematics SIMD Example
19
The need for typeless SIMD
20
Data reinterpretation
21
Instruction selection
22
Leveraging data tricks
23
What we're working on
24
Typeless?
25
Do what the hardware does
26
API Usage Example
27
API Extract
28
A more complete example
29
Reference version
30
Reference disassembly
31
Let's lose the branches
32
Branch-free disassembly
33
Explicit SIMD with Unity Mathematics
34
Explicit Math version disassembly
35
Explicit SIMD with Burst Intrinsics
36
Explicit SIMD Disassembly
37
Guidelines for SIMD with Burst
38
What about System.Numerics?
39
Summary
40
Thank you!
Description:
Explore low-level engine development using the Burst Compiler in this 42-minute Unite Copenhagen conference talk. Dive into the expansion of Burst Compiler's capabilities, enabling complex engine and gameplay problems to be expressed in HPC# through direct CPU intrinsics. Learn about the reasoning behind this approach, implementation challenges, debugging techniques, and performance comparisons with C++ code. Gain insights into SIMD (Single Instruction, Multiple Data) concepts, their importance in modern hardware, and how to leverage them effectively. Discover techniques for explicit SIMD programming using Unity.Mathematics and Burst Intrinsics, with practical examples and disassembly comparisons. Understand data reinterpretation, instruction selection, and guidelines for optimal SIMD usage in Burst. This talk is ideal for developers interested in high-performance computing and low-level optimization techniques in game engine development.

Intrinsics - Low-Level Engine Development with Burst - Unite Copenhagen

Unity
Add to list