首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ARM软性能与硬性能

ARM软性能与硬性能
EN

Stack Overflow用户
提问于 2019-10-15 15:17:16
回答 2查看 1.4K关注 0票数 1

我有一个基于ARM的平台,带有Linux操作系统。尽管其基于gcc的工具链同时支持hardfp和softfp,但供应商建议使用softfp,并且该平台附带了一组仅具有softfp版本的标准库和与平台相关的库。

我正在制作一个基于OpenCV和tensorflow lite的计算密集型(霓虹灯) AI代码。按照供应商指南,我已经使用softfp选项构建了这些工具。然而,我有一种感觉,与其他类似的hardfp平台相比,我的代码表现不佳。

代码性能是否取决于softfp/hardfp设置?编译器生成的用于构建程序的所有.o和.a文件也都使用softfp约定,这不太有效,这一点我理解正确吗?如果是这样的话,在内部使用hardfp调用约定而在外部库中使用softfp有什么棘手的方法吗?

EN

回答 2

Stack Overflow用户

发布于 2019-11-20 20:41:18

通常,所有链接在一起的对象都需要具有相同的浮动ABI。因此,如果您需要使用这个仅限softfp的库,恐怕您也必须用softfp编译您自己的软件。

我对混用ABIs也有同样的问题。请参阅here

关于性能:与hardfp相比,softfp的性能损失在于您将通过常规寄存器传递(浮点)函数参数,而不是使用FPU寄存器。这需要在寄存器之间进行一些额外的复制。正如old_timer所说,评估性能损失是不可能的。如果你有一个包含多个浮点运算的大函数,性能也是一样的。如果你有许多小的函数调用,有很多浮点变量和很少的操作,性能将会显著降低。

票数 0
EN

Stack Overflow用户

发布于 2019-10-15 15:39:45

softfp选项仅影响参数传递。

换句话说,除非在调用函数时传递大量的float类型参数,否则与hardfp相比,不会有任何可测量的性能损失。

由于设计良好的项目在很大程度上依赖于传递指向结构的指针,而不是许多单个值,因此我将坚持使用softfp

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58389183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档