Musl libc的arm port不支持NEON加速的原因
  qUJOhJyC3pLU 2023年11月02日 43 0


近期处理Tina上的一个客户问题,问题的大概情况是在运行客户应用过程中,频繁出现CPU占用率%100的情况,除了优化应用外,通常处理这类问题的方式是尽可能把加速单元打开,这些加速包括专用硬件加速以及CPU的通用加速,以ARM CPU为例,典型的加速方式就是开启ARM NEON加速功能。

当我试图在方案中启用NEON加速的时候,却发现了意外情况,就是MUSL LIBC的LIBC库,竟然没有使用NEON指令去实现.

Musl libc的arm port不支持NEON加速的原因_硬件加速

由于是直接手搓汇编实现的,即便在编译的时候加上NEON支持的选项,也无法生成NEON加速的指令,但是使用NEON要比不使用的情况下,效率提升1.5倍。

可以看到,musl的libc.a实际上是用支持neon的选项编译的。

Musl libc的arm port不支持NEON加速的原因_arm_02

newlibc中的实现:

Musl libc的arm port不支持NEON加速的原因_开发者社区_03

对比glibc中的实现:

Musl libc的arm port不支持NEON加速的原因_arm_04

 后面就索性加入了musl的开发者社区,去社区里面问了以下,很快就有人回复,不过感觉他没有完全明白我的意思(或者我没有理解他的意思:)).

Musl libc的arm port不支持NEON加速的原因_硬件加速_05

所以,基本上是确定musl没有在arm上专门做NEON加速的优化。


结束!

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
qUJOhJyC3pLU