如何使用 neon 指令提高 sin 和 cos 的性能?

How to increase performance of sin and cos using neon instructions?

如何使用 arm_neon.h 头文件来提高使用 sin 和 cos 函数的代码的性能。? 使用的板子是Xilinx T1加速卡,ARM架构armv8-a,cortex a53。 语言是c.

arm_neon.h 包含 SIMD 内在函数,它提供 C API 到 access/invoke 单独的低级指令。

因此,如果你打算用arm_neon.h来加速sin/cos,方法是使用同时计算4个值的矢量算术重写那些三角函数。

您需要注意的事项是:

  • 代码需要无分支
  • 您需要定义您需要达到的准确度
  • 您需要定义输入范围(不需要处理 2*pi 的倍数?)
  • 您需要定义输入单位(弧度 vs 度 vs 2^n 的分数)

所有这些都将决定使用哪种近似——多项式、线性分段、有理多项式以及可以省略哪些步骤或极端情况。