使用 SIMD 指令的平滑样条曲线

Posted

技术标签:

【中文标题】使用 SIMD 指令的平滑样条曲线【英文标题】:Smooth spline with SIMD instructions 【发布时间】:2012-02-08 09:41:29 【问题描述】:

我在我的代码中使用this type of spline,我想知道该算法是否可以从使用 SIMD 指令中受益。 (ARM 上的 NEON)使用的代码是以下源代码的 C 翻译(在 Fortran 中):

http://pages.cs.wisc.edu/~deboor/pgs/chol1d.f(最消耗CPU的程序) http://pages.cs.wisc.edu/~deboor/pgs/setupq.f(设置过程) http://pages.cs.wisc.edu/~deboor/pgs/smooth.f(调用上述过程的主函数)

根据您的经验,您能否判断此代码​​是否有机会通过使用 SIMD 指令进行优化?

是否有将代码从“普通”代码转换为使用 SIMD 指令的代码的指南?

谢谢

【问题讨论】:

【参考方案1】:

看起来循环中存在串行依赖关系,因此,如果您有多个可以并行操作的数据集(例如 4 个),那么这可能很容易使用 SIMD 进行矢量化的唯一方法。这些数据集的大小必须相同。

【讨论】:

是的,我也注意到了,但我想知道是否有类似于“消除左递归”(消除串行依赖)的智能方法。

以上是关于使用 SIMD 指令的平滑样条曲线的主要内容,如果未能解决你的问题,请参考以下文章

如何在matlab中用样条函数平滑曲线

是否可以在 gnuplot 中的曲线的两端使样条曲线连续且平滑

matlab怎么对曲线进行平滑啊?

R语言广义加性模型GAMs:可视化每个变量的样条函数样条函数与变量与目标变量之间的平滑曲线比较并进行多变量的归一化比较测试广义线性加性模型GAMs在测试集上的表现(防止过拟合)

如何通过 Python 3 中的真实数据点绘制平滑曲线?

三次hermite样条曲线 和 三次B样条曲线有啥区别和联系