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 硬件支持
7,099 每月下载量
在 少于 25 包 中使用
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
警告:此包仅支持最新的nightly Rust工具链,将被 stdsimd 取代。
文档
- API文档(
master
分支) - 性能指南
- API文档(
docs.rs
) - RFC2366:包含动机、设计理由、讨论等。
示例
大部分示例都提供了标量和向量化实现。
货物特性
into_bits
(默认:禁用):启用向量类型对FromBits
/IntoBits
特质实现的。这些允许通过使用.into_bits()
方法,安全地将向量类型的位重新解释为另一个向量类型的位。
性能
以下ISPC示例也是packed_simd
的examples/
目录的一部分,其中使用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