如何使用 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 的分数)
所有这些都将决定使用哪种近似——多项式、线性分段、有理多项式以及可以省略哪些步骤或极端情况。
如何使用 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 的分数)
所有这些都将决定使用哪种近似——多项式、线性分段、有理多项式以及可以省略哪些步骤或极端情况。