NumPy,即NumericalPython,是著名编码语言中专注于科学计算的Python库之一,最近在AVX-512中集成了用于快速排序的英特尔C++头文件库。新的集成表明基于SIMD的排序速度提高了10到17倍。
英特尔的NumPySwitching引入了AVX-512以增加基于SIMD的排序并有助于提高性能
基于Python的NumPy库被解释为提供:
...多维数组对象、各种派生对象(例如掩码数组和矩阵),以及用于对数组进行快速操作的各种例程,包括数学、逻辑、形状操作、排序、选择、I/O、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。
——根据官方NumPy项目网站。
英特尔将x86-simd-sort上传到公司的GitHub上,为用户提供C++头文件库,以协助SIMD排序达到更高的性能水平。英特尔工程师之一RaghuveerDevulapalli在将x86-simd-sort代码集成到NumPy中发挥了关键作用。但是,文件库仅关注AVX-512及其快速排序包含。
[新的x86-simd-sort是一个]C++头文件库,用于x86处理器上基于SIMD的16位、32位和64位数据类型排序。源头文件在src目录中可用。我们目前只有基于AVX-512的快速排序实现。这个存储库还包括一个测试套件,可以构建和运行它来测试排序算法的正确性。它还具有基准代码来比较其相对于std::sort的性能。
Linux分析师兼网站Phoronix的编辑迈克尔·拉贝尔(MichaelLarabel)表示,结果非常好,AVX-512排序的增加帮助项目将性能提高了10到17倍。
Larabel指出,PR22315被引入NumPy以“向量化16位和64位数据类型的快速排序”bfAVX-512集成。他继续说,基于TigerLake的系统,特别是使用第11代TigerLakei7-1165G7的系统,见证了16位int排序的最高速度(快17倍)。相比之下,64位浮点排序的得分最低(增加了十倍)。最后,32位数据类型和随机数组的排序能力确实提高了12到13倍。您可以在此处查看基准测试的结果。