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 倍。

更多详情可查看此处。


相關推薦

2022-12-16

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

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-10-01

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

2022-12-21

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

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 位线性地址的未转换地址位用于元数据,可用于用户空间内存清理和标记

2022-10-26

Layouts React Server Components Streaming Turbopack (alpha):速度提高 700 倍的基于 Rust 的 Webpack 替代品。 新的 next/image (stable):native browser 延迟加载速度更快。 新的@next/font(beta):具有零布局偏移的自动自托管字体。 改

2022-06-28

科技媒体 Phoronix 对从 OpenJDK 8 到 OpenJDK 19 的多个 JDK 版本进行了性能基准测试。此外,作为参考对比,还加入了两个替代实现方案:OpenJ9 和 GraalVM CE。 测试环境: 搭载 Intel Core i5 12600K CPU、运行 Ubuntu 22.04 LTS 的电脑

2023-03-03

个 SST 内部并发:支持 Parquet 层并行拉取多个 row group 合并小 IO:针对 OSS 上的文件,合并小 IO 请求,提高拉取效率 本地 cache:缓存 OSS 拉取文件,支持内存和磁盘缓存 性能测试结果 采用 TSBS 进行性能测试。压测参数

2023-03-01

文件系统上加速 3 倍 微优化的 b-tree 键查找,加速元数据操作(示例基准:fs_mark +10% 的文件/秒) 此次 PR 的完整内容可以查看该链接。