最新的 AMD 处理器 (Zen 4) 为强大的 AVX-512 指令提供广泛支持。 AVX-512 (高级矢量扩展512)是Intel推出的x86指令集架构(ISA )的扩展。这些指令允许并行处理更多数据,从而增强处理器的功能。您可以处理由 64 字节组成的寄存器!
一个巧妙的技巧是,给定一个掩码,您可以“压缩”单词:假设您有一个由 32 个 16 位单词组成的向量,并且您只想保留第二个和第三个单词,那么您可以使用 vpcompressw 指令和掩码 0b110。它将产生一个寄存器,其中第二个和第三个字被放置在第一个和第二个位置。
一个更好的技巧是,您可以使用此指令将这两个单词写入内存。您可以使用_mm_mask_compressstoreu_epi16内部函数调用此功能。
这在最新的 Intel 处理器上效果很好,但在 AMD Zen 4 处理器上效果不佳。
我们在 simdjson 库中有一个快速函数来缩小文件(删除不必要的空格)。
https://ift.tt/4v8nj6Y