OpenJDK 合并英特尔 x86-simd-sort,将数据排序速度提高 7-15 倍


今年早些时候,英特尔发布了一个利用了 AVX-512 的 x86-simd-sort 快速排序库;当 Numpy 将 x86-simd-sort 代码进行合并后发现,对于 16 位到 64 位的数据类型,排序速度提高了10~17倍。如今,英特尔软件工程师又发布了 x86-simd-sort 3.0,OpenJDK 也已经将这一修改版进行了合并。

x86-simd-sort 3.0 添加了一个新的“avx512_argselect”方法,用于计算 arg nth_element,该方法返回一个对数据数组进行分区的索引数组。x86-simd-sort 3.0 版本还对其 benchmarks 进行了改进,现在使用 __builtin_cpu_supports 而不是 querying cpuinfo,并进行了各种其他更改。

目前,x86-simd-sort 3.0 已合并至 Numpy 主分支中,它提供了 np.partition 和 np.argpartition 的 AVX-512 矢量化版本。将 np.partition 的 16 位速度提高了 25 倍,将 32 位 dtypes 的速度提高了 17 倍,将 64 位 dtypes 的速度提高了约 8 倍。与此同时,新的 avx512_argselect 方法还使 np.argpartition 的速度提高了 6.5 倍。

并入 OpenJDK 的 x86-simd-sort 是一个略有修改的版本,该版本将 32 位数据排序速度提高了 15 倍,64 位数据排序速度提高了约 7 倍。

更多详情可查看此处。


相關推薦

2024-06-20

支持数组 API 标准。 性能改进: 通过使用 Intel x86-simd-sort 和 Google Highway 库,排序函数(sort、argsort、partition、argpartition)已得到加速,并且可能会看到较大的(特定于硬件的)加速 为 MacOS >=14 提供 macOS 加速支持和 binar

2022-12-16

Linux 6.2 近日合并了一个重要补丁,该补丁能够将一个核心内核函数速度提升 715 倍。 从合并的注释可知,贡献此补丁的维护者 Zhen Lei 来自华为,他将 kallsyms_lookup_name() 的平均查找性能提高了 715 倍,从而使内核里面旧实现的

2024-07-24

对 NaN 和 NAN 别名的提及 #26821:BLD:修复 openBSD 上的 x86-simd-sort 构建失败问题 #26835:BUG:避免“include complex.h”的 side-effect #26963:BUG:修复 in1d table method 的越界最小偏移量 #26971:BUG:修复 f2py 测试,使其与 v2 API 兼容

2023-08-22

护者 Colin Percival 发帖称,他们已经为 SYSINIT 采用合并排序 (mergesort) 来取代冒泡排序 (bubblesort)。 SYSINIT 是通用调用排序和调度机制的框架,FreeBSD 目前使用它来动态初始化内核。 当加载内核或其模块之一时,SYSINIT 允

2023-11-22

2-pass 编码选项重命名为 multi-pass ( #5019 ) 修复了英特尔 QSV 编码器在某些情况下输出 green video 的问题(#4842、#4876) 修复了使用 10 位硬件编码器时像素格式转换会稍微改变颜色的问题 ( #5011 ) 修复了当源分辨

2022-12-21

英特尔希望将其 LAM(Linear Address Masking :线性地址掩码) 功能合并到 Linux 6.2,但该功能被 Linus 批评了一番,并拒绝了该合并。 英特尔线性地址掩码 (LAM) 允许软件将 64 位线性地址的未转换地址位用于元数据,线性地

2022-10-01

d/deno#15922。 写入小文件时,同步写入Deno.writeFileSync()的速度快了 1.44 倍,异步写入Deno.writeFile()的速度快了 1.15 倍。 CSV 解析的性能在 Mac 和 Linux 上都有明显提升: URL 解析方面,对于没有查询字符串的 Url,URL 解析的速度

2022-08-08

Eclipse OpenJ9 v0.33.0 现已发布,Eclipse OpenJ9 是 OpenJDK 的 JVM,由 IBM 创建并捐赠给 Eclipse 基金会。此 Java 虚拟机经过优化,具备占用空间小、启动速度快以及吞吐量高等优势。 自 0.30.0 版以来,此版本包含以下新功能和显着更改

2022-09-22

2 姗姗来迟正式发布。Mesa 22.2 的主要更新内容包括: 英特尔 DG2 Vulkan 光线追踪代码的性能得到了很大的改善,达到了约 100 倍。 用于 Radeon HD 2000 到 HD 6000 系列硬件的旧 R600g 驱动程序已经重写了 NIR 支持 RadeonSI EGL 背景下

2021-12-22

像处理库 stb_image / stb_image_write 和 libpng 相比,QOI 的编码速度提高了100 倍,解码速度提高了 3-4 倍,压缩率提高了 20%。 无可否认,QOI 在压缩/解压缩性能这一块有一些优势,但它仍然存在相当多的问题。比如,作为一个全

2022-12-20

>组织中,现在可以设置是否在 "在文件之前对目录进行排序" 工具/地址栏右侧的样式菜单 "... ",现在可以以弹出式菜单的形式显示主菜单。 导航菜单现在可以切换侧边栏(导航、树状图、隐藏),并显示 Headers 上下文菜

2023-05-02

曾被 Linus 点名批评的英特尔 LAM(Linear Address Masking :线性地址掩码) 功能,终于合并到  Linux 6.4 中。 英特尔线性地址掩码 (LAM) 允许软件将 64 位线性地址的未转换地址位用于元数据,可用于用户空间内存清理和标记

2024-10-19

许多令人兴奋的新工具和功能,让开发者体验更快的渲染速度、更强大的光照控制、端到端的多人游戏工作流程、智能化的动态 AI 功能,以及对移动 Web Runtime 的更多支持。 端到端多人游戏工作流程将加速联网游戏的开发;

2022-09-14

c 电脑中使用) 在 x86_64 方面,FLAC 1.4 为支持 FMA 指令的英特尔/AMD 处理器带来了速度的提升 可以将 libFLAC 和 flac 工具生成的 FLAC 文件的最小比特率限制为 1 bit/sample 可以对采样率高达 1'048'575Hz 的文件进行编码了 libFLAC 的版