Comments (3)
Interesting discussion; thanks for the ping! This is a good list from @lemaitre. To break things down a bit, I sort of think there are two competing goals here:
- Apples-to-apples comparisons with native (and fixed-width WASM) SIMD, for which "standard" benchmark suites are the right thing because of their availability and portability.
- More realistic niche use cases, which can be oddballs that "stretch" the ISA a bit more to reveal interesting/challenging cases that are likely to arise in the wild.
To make things more complicated, there is also a separate dimension to distinguish "algorithms" (kernels, such as GEMM) from "applications" (such as an H.264 encoder). The former is probably the better focus, at least early on.
I think the thing that makes benchmarking SIMD ISAs/algorithms especially hard (compared to "normal" benchmarks) is that there is a huge range in implementation qualities. A naively auto-vectorized version of a simple 3x3 matrix product, for example, will be far worse than an expert-tuned implementation—and the expert-tuned implementation will differ radically for different ISA targets! Which means that, if you invent a new SIMD ISA (or WASM extension), it can be really hard to say whether it's "better" without doing a bunch of incredibly painful tuning for that architecture.
The problem is that the straightforward/obvious implementations of a given benchmark could be misleading w/r/t what the "peak" performance could be, given infinite programmer effort. "Infinite programmer effort" may seem like a fantasy, but in practice, the world has shown that it is willing to expend seemingly-infinite effort for high-value libraries like BLAS. That's not feasible to do for early-stage designs, so there will inevitably be some artistic guesswork involved about how much a given ISA feature will matter for industrial-strength vectorized implementations.
from flexible-vectors.
Also, just because it came up on HN today, here's a nice explanation of a somewhat bonkers optimized fixed-length reduction that's worth pondering.
from flexible-vectors.
@sampsyo there is a conversation about code to compile in #27 (comment). There a few interesting things in that PR, I am trying to separate them out a bit. From @lemaitre:
I know that's the tricky bit... Here is a small list of algorithms that definitely need to be implementable:
- gemm (matrix multiplication)
- reductions (not necessarily additions)
- Stencils
- prefix sums (1D)
- Integral images (like prefix sums but in 2D)
- interpolations
- On-The-Fly narrowing or widening (ie: chaining conversions with computation instead of having a separate conversion step)
I am also personally interested in more algorithms:
- Run-Length Encoding
- Union-Find (graph processing)
- Background subtraction (like Sigma-Delta)
from flexible-vectors.
Related Issues (20)
- SIMD subgroup meeting on 2021-10-01 HOT 1
- SIMD subgroup meeting on 2021-12-03 HOT 1
- SIMD subgroup meeting on 2022-01-21 HOT 4
- SIMD subgroup meeting on 2022-02-18 HOT 2
- SIMD subgroup meeting on 2022-03-18 HOT 1
- SIMD subgroup meeting on 2022-04-15 HOT 1
- Immediates vs regular values for lane indices HOT 2
- SIMD subgroup meeting on 2022-05-13 HOT 1
- SIMD subgroup meeting on 2022-06-10 HOT 1
- SIMD subgroup meeting on 2022-09-02 HOT 2
- SIMD subgroup meeting on 2022-09-30 HOT 1
- SIMD subgroup meeting on 2022-10-14
- Why lanes? HOT 2
- sub/div opcode clash HOT 1
- SIMD subgroup meeting on 2023-02-17 HOT 1
- SIMD subgroup meeting on 2023-03-17
- [CI] fix broken deployment
- Flexible vectors: Tracking issue for feedback after CG presentation HOT 5
- SIMD subgroup meeting on 2023-10-27 HOT 7
- Shuffle operations
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from flexible-vectors.