#simd-vector #simd #vector #portability

nightly no-std packed_simd_2

可移植打包SIMD向量

5个版本

0.3.8 2022年6月1日
0.3.7 2022年1月30日
0.3.6 2021年9月9日
0.3.5 2021年5月16日
0.3.4 2020年9月30日

#1447 in 硬件支持

Download history 2458/week @ 2024-03-14 2948/week @ 2024-03-21 3020/week @ 2024-03-28 2322/week @ 2024-04-04 2035/week @ 2024-04-11 1928/week @ 2024-04-18 2000/week @ 2024-04-25 1655/week @ 2024-05-02 1355/week @ 2024-05-09 1354/week @ 2024-05-16 1358/week @ 2024-05-23 2104/week @ 2024-05-30 1597/week @ 2024-06-06 1668/week @ 2024-06-13 1773/week @ 2024-06-20 1704/week @ 2024-06-27

7,099 每月下载量
少于 25 包 中使用

MIT/Apache

580KB
13K SLoC

Crates.io 版本无法再更新!

原始维护者已失去联系,新维护者(可移植SIMD项目组)没有适当的crates.io权限发布更新。

我们注意到Crates.io上可用的版本目前存在问题,无法构建。

如果您需要继续使用此包,我们已以备用名称发布了一个“下一个版本”。

调整您的 [dependencies] 部分为以下内容

packed_simd = { version = "0.3.8", package = "packed_simd_2" }

Simd<[T; N]>

Rust RFC #2366 的实现:Rust RFC #2366

Travis-CI Status Latest Version docs

警告:此包仅支持最新的nightly Rust工具链,将被 stdsimd 取代。

文档

示例

大部分示例都提供了标量和向量化实现。

货物特性

  • into_bits(默认:禁用):启用向量类型对FromBits/IntoBits特质实现的。这些允许通过使用.into_bits()方法,安全地将向量类型的位重新解释为另一个向量类型的位。

性能

以下ISPC示例也是packed_simdexamples/目录的一部分,其中使用packed_simd+rayon来模拟ISPC的单程序多数据(SPMD)编程模型。不同硬件上的性能结果显示在每个示例的readme.md中。以下表格总结了性能范围,其中+表示加速,而-表示减速

  • aobench[-1.02x, +1.53x]
  • stencil[+1.06x, +1.72x]
  • mandelbrot[-1.74x, +1.2x]
  • 期权定价:
    • black_scholes+1.0x
    • binomial_put+1.4x

虽然SPMD不是packed_simd的预期用途,但可以将库与rayon结合,以在Rust中较差地模拟ISPC的SPMD编程模型。编写高性能代码不如ISPC那样简单,但通过一些注意(例如,参见性能指南)可以轻松匹配,并且经常超越ISPC的“默认性能”。

平台支持

以下表格描述了支持的平台:build显示库是否能够无问题地为给定目标编译,而run显示测试套件是否能够通过给定目标。

Linux build run
i586-unknown-linux-gnu
i686-unknown-linux-gnu
x86_64-unknown-linux-gnu
arm-unknown-linux-gnueabi
arm-unknown-linux-gnueabihf
armv7-unknown-linux-gnueabi
aarch64-unknown-linux-gnu
mips-unknown-linux-gnu
mipsel-unknown-linux-musl
mips64-unknown-linux-gnuabi64
mips64el-unknown-linux-gnuabi64
powerpc-unknown-linux-gnu
powerpc64-unknown-linux-gnu
powerpc64le-unknown-linux-gnu
s390x-unknown-linux-gnu
sparc64-unknown-linux-gnu
thumbv7neon-unknown-linux-gnueabihf
MacOSX build run
x86_64-apple-darwin
Android build run
x86_64-linux-android
arm-linux-androideabi
aarch64-linux-android
thumbv7neon-linux-androideabi
iOS build run
x86_64-apple-ios
aarch64-apple-ios

机器码验证

verify/》crate在运行时对可移植打包向量API进行反汇编测试,并将生成的机器代码与期望的代码进行比较,以确保此crate保持高效。

许可证

本项目可根据您的选择采用以下任一许可证:

(任选其一)。

贡献

我们欢迎所有希望贡献的人。请参阅贡献说明以获取更多信息。

对项目的任何形式(问题、pull请求等)的贡献都必须遵守Rust的行为准则

除非您明确声明,否则您提交给packed_simd的任何有意贡献(根据Apache-2.0许可证定义),将根据上述方式双许可,无需任何附加条款或条件。

依赖

~0.4–2.3MB
~35K SLoC