#simd-vector #simd #prune #gather #compression #pack-left

无标准库 simdprune

在 SIMD 向量中修剪元素(即,左打包/压缩元素)

1 个不稳定版本

0.1.0 2021 年 11 月 30 日

#246 in 无标准库

Apache-2.0

5.5MB
56K SLoC

在 SIMD 向量中修剪元素

此crate是 Daniel Lemire 的C库 simdprune 的移植。

掩码“标记”输入中的删除值。因此,如果掩码为奇数,则第一个值被标记为删除。此函数生成一个新向量,它以所有未删除的值开始。

传递掩码 0 将简单地复制提供的向量。

注意,这与 AVX512 VCOMPRESS/VPCOMRESS 指令的掩码行为相反。如果您有 AVX512,则此crate的大部分功能可以使用这些指令执行。

示例

请参阅 prune_epi32.

功能

以下所有功能默认启用。

  • std - 启用标准库。禁用此功能将启用 no_std crate 属性。
  • large_tables - 启用如 prune_epi8 等需要大表(>1MB)的功能。禁用此功能可能会加快编译速度。

lib.rs:

在 SIMD 向量中修剪元素

此crate是 Daniel Lemire 的C库 simdprune 的移植。

掩码“标记”输入中的删除值。因此,如果掩码为奇数,则第一个值被标记为删除。此函数生成一个新向量,它以所有未删除的值开始。

传递掩码 0 将简单地复制提供的向量。

注意,这与 AVX512 VCOMPRESS/VPCOMRESS 指令的掩码行为相反。如果您有 AVX512,则此crate的大部分功能可以使用这些指令执行。

示例

请参阅 prune_epi32.

功能

以下所有功能默认启用。

  • std - 启用标准库。禁用此功能将启用 no_std crate 属性。
  • large_tables - 启用如 prune_epi8 等需要大表(>1MB)的功能。禁用此功能可能会加快编译速度。

无运行时依赖项

功能