Watch 6 Star 7 Fork 2

openEuler / marketingMulanPSL-2.0

No.65 - adler32算法在ARM平台的优化

暑期2020
待办的
liqiang2020  Opened this issue

标题 adler32算法在ARM平台的优化探索

描述

  • Adler-32是马克·阿德勒(Mark Adler)在1995年发明的一种校验和 算法,是对弗莱彻校验和的一种改进。与相同长度的循环冗余校验相比,它以可靠性为代价(优先选择后者)。Adler-32比Fletcher-16更可靠,而可靠性却比Fletcher-32低。
  • Adler-32在基础压缩库libz中使用,常见压缩和解压场景中,adler-32的算法热点会比较高,优化该算法可以提升libz基础库的性能。
  • SIMD简介:单指令流多数据流(英语:Single Instruction Multiple Data,缩写:SIMD)是一种采用一个控制器来控制多个处理器,同时对一组数据(又称“数据向量”)中的每一个分别执行相同的操作从而实现空间上的并行性的技术。
  • ARM平台使用SIMD优化adler-32的案例:https://developer.arm.com/architectures/instruction-sets/simd-isas/neon/neon-programmers-guide-for-armv8-a/neon-intrinsics-chromium-case-study/adler-32
    使用SIMD向量指令优化adler-32性能能使PNG解码性能提升5%~18%
    使用SIMD向量指令优化adler-32性能能使PNG解码性能提升了5%~18%

难度

导师 @liqiang2020

联系方式 liqiang64@huawei.com

产出标准

  • 优化后的adler-32算法代码。
  • 输出相关准确性和性能对比的测试数据。
  • 输出算法改进的原理文档和接口使用说明。
  • 将优化算法应用到openEuler基础库libz,提升其性能。

技术要求

  • 理解SIMD相关原理、neon指令。
  • 熟悉常用性能分析和调优工具,能独立分析和评估算法性能。

相关项目
https://gitee.com/src-openeuler/zlib

相关资料
https://developer.arm.com/architectures/instruction-sets/simd-isas/neon/neon-programmers-guide-for-armv8-a/neon-intrinsics-chromium-case-study/adler-32

Attachments
5329419 openeuler ci bot 1578984659 23249 genedna 1586065964 total 4 participants

Comments (1)

5329419 openeuler ci bot 1578984659
openeuler-ci-bot 2020-05-26 18:05 owner

Hey @liqiang2020 , Welcome to openEuler Community.
All of the projects in openEuler Community are maintained by @openeuler-ci-bot .
That means the developers can comment below every pull request or issue to trigger Bot Commands.
Please follow instructions at https://gitee.com/openeuler/community/blob/master/en/sig-infrastructure/command.md to find the details.

Sign in to comment

Assignees
Labels
Not set
Projects
Milestones
Branches
Planed to start
Planed to end
Top level
Priority
1
https://gitee.com/openeuler/marketing.git
git@gitee.com:openeuler/marketing.git
openeuler
marketing
marketing

Search