Hexagon DSP系列记录——plain C/intrinsics/asm汇编代码实现耗时比较
Posted lligen-dai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hexagon DSP系列记录——plain C/intrinsics/asm汇编代码实现耗时比较相关的知识,希望对你有一定的参考价值。
Hexagon_SDK版本:3.5.2
测试用机型:高通sm8150
对比downscaleBy2算法的耗时
参考官方示例:E:\\Qualcomm\\Hexagon_SDK\\3.5.2\\examples\\common\\downscaleBy2
参考官方文档:file:///E:/Qualcomm/Hexagon_SDK/3.5.2/docs/FastCV/Image%20Downscale.html
官方示例里有asm汇编的实现,但是本人不会汇编,也不打算写汇编,所以省略了汇编代码耗时的比较。
说明:plain C在CPU/DSP端都是能直接run的,不需要改动核心源码,所以会在以下几个维度的测试耗时
在CPU上plain C耗时
在DSP上plain C/intrinsics DSP/intrinsics HVX耗时
在DSP上单线程与多线程耗时
以下是最终统计的结果:
结论:
- 同一套plain C代码,DSP比CPU约慢10倍(3.52 vs 38.13);
- 使用DSP intrinsics,DSP也比CPU约慢4倍(3.52 vs 13.56);
- 使用HVX intrinsics,比CPU约快1倍(3.52 vs 1.43);
- DSP多线程比单线程约快一倍(因为底层DSP硬件支持2个线程);
建议:
跳过DSP intrinsics,直接上HVX intrinsics指令集。
以上是关于Hexagon DSP系列记录——plain C/intrinsics/asm汇编代码实现耗时比较的主要内容,如果未能解决你的问题,请参考以下文章
Hexagon DSP系列记录——写Hexagon DSP程序流程