SIMD利用两个元素在场上实现Peterson和Monico的Lanczos算法

时间:2016-11-04 18:26:50

标签: algorithm simd lanczos

(这个问题可能正在调整"没有软件推荐和#34;规则;我理解为什么它可能会被关闭)。

在他们的论文 F_2 Lanczos revisited 中,Peterson和Monico给出了一个Lanczos算法的版本,用于在Z / 2Z上查找线性映射的核的子空间。如果我粗略地阅读他们的论文是正确的(无论是否显然不是SO的问题),所提出的算法需要多次迭代,这些迭代与所用机器的字大小成反比。作者使用64位字大小实现了他们的概念验证算法。

是否存在一种公开可用的算法实现,该算法利用宽SIMD字来实现(潜在的重要)加速?

1 个答案:

答案 0 :(得分:0)

现有的实施方案是软件推荐。一个更有趣的问题是"是否可以使用SIMD使这种算法运行得更快?"从我对这篇论文的一瞥中,听起来SIMD正是他们所描述的("我们将64位机器字x分成八个子字......其中每个......是一个8位字&#34 ;)如果作者'实施在某个地方是公开的,答案是"是"因为他们已经在使用它了。如果这个算法是用C / C ++或类似的东西编写的,那么即使没有手动指定如何拆分寄存器(也可以通过查看程序集来验证),优化编译器可能会很好地使用SIMD对其进行矢量化。在没有手动拆分寄存器的情况下以高级语言实现可能更为可取,因为编译器可以针对任何目标机器的字大小优化它。