knewpfordelta:基于鲲鹏处理器的整数压缩算法项目

基于上游社区源码进行鲲鹏优化适配的补丁仓

分支3Tags2

KNewPfordelta介绍

最新消息

  • [2025.09.30]:KNewPfordelta发布于Gitcode平台,支持分块处理、异常值分离和SIMD加速优化。

项目介绍

KNewPfordelta(改进的Pfordelta算法)是鲲鹏基于开源PForDelta算法优化的一种专为高效压缩与快速解压倒排索引设计的整数压缩算法,主要应用于搜索引擎、推荐系统等需要快速处理大规模有序整数序列(如文档ID列表、词频位置)的场景。KNewPfordelta通过分块处理、异常值分离、NEON指令加速三重优化,在倒排索引压缩领域实现了存储成本与查询性能的极致平衡,尤其适用于对实时性要求严苛的大规模数据系统。其解压效率优势使其成为搜索引擎、推荐引擎等高性能系统的首选压缩方案之一。

应用场景

KNewPfordelta倒排索引解压缩算法适用于推荐系统召回阶段,主要应用于搜索引擎、推荐系统等需要快速处理大规模有序整数序列(如文档ID列表、词频位置)的场景。

目录结构

KNewPfordelta目录结构如下所示:

knewpfordelta
├─ LICENSE
├─ Makefile                                   // 编译文件
├─ README.md
├─ coding_policy.c                            // 算子实现文件,实现KNewPfordelta算法的压缩和解压缩功能
├─ coding_policy.h                            // 算子引用头文件,定义KNewPfordelta算法的压缩和解压缩函数接口
├─ coding_policy_helper.h                     // 编码策略的辅助函数头文件
├─ howtouse.c                                 // 使用示例程序,展示如何使用KNewPfordelta库
├─ pack.c                                     // 位打包操作文件,实现将整数数据按指定位宽打包
├─ pack.h                                     // 位打包操作头文件,定义位打包函数接口
├─ pfordelta.c                                // Pfordelta算法实现文件,实现Pfordelta算法的压缩和解压缩功能
├─ pfordelta.h                                // Pfordelta算法头文件,定义Pfordelta算法的压缩和解压缩函数接口
├─ unpack.c                                   // 位解包操作文件,实现将按指定位宽打包的整数数据解包
├─ unpack.h                                   // 位解包操作头文件,定义位解包函数接口
├─ test/

说明:

  • coding_policy.h:KNewPfordelta算子引用头文件
  • Makefile:功能及性能编译文件。
  • test:测试的文件目录。
  • gencover.sh:覆盖率可视化生成文件。
  • gen_data:用于生成倒排索引测试数据集的文件目录。

版本说明

关于KNewPfordelta算法的版本更新情况请参见《版本说明书》。

兼容性信息

操作系统

CPU类型

编译器

其他

openEuler 22.03 LTS SP4

鲲鹏920 7282C处理器

GCC 10.3.1

Make 4.3

openEuler 22.03 LTS SP3

鲲鹏920 7282C处理器

GCC 10.3.1/12.3.1

Make 4.3

openEuler 24.03 LTS SP1

鲲鹏920 7282C处理器

GCC 12.3.1

Make 4.3

学习文档

资源名称

资源简介

版本说明书

提供KNewPfordelta每个发布版本的基础信息和特性更新信息。

快速入门

提供KNewPfordelta解压缩算法部署方法和验证解压缩性能与功能的快速入门指导。

安装指南

提供KNewPfordelta源码编译安装方法的详细指导。

API参考

提供KNewPfordelta的API接口定义和接口说明。

最佳实践

提供KNewPfordelta的使用实践案例。

特性介绍

提供KNewPfordelta的优化原理和优化说明。

免责声明

致KNewPfordelta使用者

  • 本项目仅供调试和开发之用,使用者需自行承担使用风险,并理解以下内容:

    • 数据处理及删除:用户在使用本工具过程中产生的数据属于用户责任范畴。建议用户在使用完毕后及时删除相关数据,以防信息泄露。
    • 数据保密与传播:使用者了解并同意不得将通过本工具产生的数据随意外发或传播。对于由此产生的信息泄露、数据泄露或其他不良后果,本工具及其开发者概不负责。
    • 用户输入安全性:用户需自行保证输入的命令行的安全性,并承担因输入不当而导致的任何安全风险或损失。对于输入命令行不当所导致的问题,本工具及其开发者概不负责。
  • 免责声明范围:本免责声明适用于所有使用本工具的个人或实体。使用本工具即表示您同意并接受本声明的内容,并愿意承担因使用该功能而产生的风险和责任,如有异议请停止使用本工具。

  • 在使用本工具之前,请谨慎阅读并理解以上免责声明的内容。对于使用本工具所产生的任何问题或疑问,请及时联系开发者。

致数据所有者

如果您不希望您的模型或数据集等信息在本项目中被提及,或希望更新本项目中有关的描述,请在GitCode提交issue,我们将根据您的issue要求删除或更新您相关描述。衷心感谢您对本项目的理解和贡献。

License

KNewPfordelta采用3-Clause BSD License许可证授权,支持修改代码和再开源。详见LICENSE文件。

本项目的文档适用CC-BY 4.0许可证,具体请参见LICENSE文件。

贡献声明

欢迎大家为社区做贡献,如果使用过程中有任何问题/建议,或者需要反馈特性需求和bug报告,可以提交Issues联系我们,具体贡献方法可参考这里。同时也欢迎大家在讨论专区展开讨论交流。感谢您的支持。

致谢

KNewPfordelta由华为公司的下列部门联合贡献:

  • 鲲鹏计算Boostkit开发部

感谢来自社区的每一个PR,欢迎贡献KNewPfordelta!

项目介绍

基于上游社区源码进行鲲鹏优化适配的补丁仓

定制我的领域

下载使用量

0

项目总下载次数(含Clone、Pull、 zip 包及 release 下载),每日凌晨更新

语言类型

C92.94%
Python5.73%
Makefile1.07%
Shell0.26%