中文

利用 SIMD 指令高效计算位置总体计数

数据结构与算法 2021-08-19 v6

摘要

在统计、机器学习和生物信息学等多个领域中,分类变量常表示为独热编码向量。例如,给定 8 个不同取值,我们将每个值映射到一个字节,其中仅设置单个比特。我们旨在快速计算此类编码上的统计量。给定 k 位字流,我们寻求计算 k 个分别对应索引 0, 1, 2, ..., k-1 处比特值的独立和。若 k 位字为独热编码,则这些和对应于频率直方图。该多和问题是对总体计数问题(寻求所有比特值之和)的推广。相应地,我们将多和问题称为位置总体计数。利用近期 Intel 处理器的 SIMD(单指令多数据)指令,我们描述了以每个 16 位字少于半个 CPU 周期计算 16 位位置总体计数的算法。对于足够大的输入,我们的最佳方法使用的指令减少多达 400 倍,且比仅使用常规(非 SIMD)指令的基线代码快多达 50 倍。

关键词

引用

@article{arxiv.1911.02696,
  title  = {Efficient Computation of Positional Population Counts Using SIMD Instructions},
  author = {Marcus D. R. Klarqvist and Wojciech Muła and Daniel Lemire},
  journal= {arXiv preprint arXiv:1911.02696},
  year   = {2021}
}