AdamNiederer / AdamNiederer/faster

Run-time feature detection

未关闭
#2 7 条评论 9 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Rust
星标
1.6k
派生
52
PR 合并指标
30 天内没有已合并 PR

描述

Currently the vector size and the SIMD instructions to be used are fixed at compile-time. This is a good first step.

It allows me to write an algorithm once, and by changing a compiler-flag generate different versions of this algorithm for different target architectures (with different vector sizes, SIMD instructions, etc.).

I really like to be able to do this at compile-time within the same binary as well, so that I can write:

```rust
// a generic algorithm
fn my_generic_algorithm(x: T, y: T) {
// generic simd operations
}
```
and monomorphize it for different instruction sets:

```
let x: VecAvx;
my_generic_algorithm(x, x); // AVX version
let y: VecSSE42;
my_generic_algorithm(y, y); // SSE42 version
```

That way `input.simd_iter().map(my_generic_algorithm)` could monomorphize `my_generic_algorithm` for `SSE`, `SSE42`, `AVX`, and `AVX2`, and do run-time feature detection to detect the best that a given CPU supports at run-time, and then dispatch to that one.

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。