OpenJDK使用Intel的x86-simd-sort将数据排序速度提高 7~15 倍


今年早些时候,英特尔发布了x86-simd-sort 作为使用 AVX-512 的超快排序库
当时流行的 Numpy 使用它时,他们发现 16 位到 64 位数据类型的排序速度提高了 10~17 倍。

借助 Numpy 中的 x86-simd-sort 3.0,他们看到“ng.partition”速度对于 16 位数据类型提高了 25 倍,对于 32 位数据类型提高了 17 倍,对于 64 位数据类型提高了 8 倍。使用新的 avx512_argselect 方法,numpy np.argpartition 的速度提高了 6.5 倍。

今天,英特尔软件工程师发布了 x86-simd-sort 3.0,几分钟后 OpenJDK 将该加速排序代码的修改版本合并到参考 JDK 代码库中。

合并的是 OpenJDK 中 x86-simd-sort 的稍微修改版本。合并此排序代码后,32 位数据排序速度提高了 15 倍,64 位数据排序速度提高了约 7 倍。 有关 x86-simd-sort 3.0 的更多详细信息,可通过GitHub进行快速 AVX-512 排序。

x86-simd-sort 3.0 添加了一个新的“avx512_argselect”方法来计算 arg nth_element,该参数返回一个对数据数组进行分区的索引数组。