NEON_7

为什么要依靠编译器进行自动矢量化?
编写经过手动优化的汇编内核或包含Neon内部函数的C代码,可以对软件中的Neon代码进行高度控制。 但是,这些方法可能导致大量的可移植性和工程复杂性成本。

在许多情况下,高质量的编译器可以生成同样好的代码,但是所需的设计时间却少得多。 允许编译器自动识别代码中使用Advanced SIMD指令的机会的过程称为自动向量化。

 

在特定的编译技术方面,自动向量化包括:

循环矢量化:展开循环以减少迭代次数,同时在每个迭代中执行更多操作。
超字级并行(SLP)矢量化:将标量运算捆绑在一起,以使用全宽Advanced SIMD指令。
自动向量化编译器包括Arm编译器6,Arm C / C ++编译器,LLVM-clang和GCC。

 

依靠编译器自动向量化的好处包括:

只要没有特定于体系结构的代码元素(如内联汇编或内部函数),就可以使用高级语言实现的程序是可移植的。
现代编译器能够自动执行高级优化。
以给定的微体系结构为目标就像设置单个编译器选项一样容易,而优化汇编程序则需要对目标硬件有深入的了解。

 

使用编译器生成Neon代码适合大多数项目。 仅当生成的代码无法提供必要的性能时,或者高级语言不支持特定的硬件功能时,其他利用Neon的方法才有必要。 例如,必须在汇编代码中配置系统寄存器以控制浮点功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值