2016-11-04 6 views
1

(この質問は、ソフトウェアの推奨なしルールではおそらく迷っています。2つの要素を持つフィールド上のPetersonとMonicoのLanczosアルゴリズムの実装をSIMDで活用する

彼らの論文では、F_2 Lanczos revisitedのPetersonとMonicoは、Z/2Z上の線形マップのカーネルの部分空間を見つけるためのLanczosアルゴリズムのバージョンを提供しています。私の小冊子が正しいかどうか(それがあるか否かにかかわらず、明らかにSOの質問ではない)、提示されたアルゴリズムは、使用される機械のワードサイズに反比例する反復の数を必要とする。著者は、64ビットワードサイズの概念実証アルゴリズムを実装しました。

(潜在的に重要な)高速化のために幅広いSIMDワードを使用して、そのアルゴリズムの公開された実装が存在しますか?

答えて

0

既存の実装は、ソフトウェア推奨です。より興味深いのは、「このアルゴリズムをより速く実行させるためにSIMDを使用することは可能ですか?」です。私の視線から見ると、SIMDはまさに彼らが描いているようなものだと思う(「64ビットマシンワードxを8つのサブワードに分割する...それぞれが8ビットワードである」)ので、著者の実装はどこかで公開されていますが、回答はすでに「はい」です。このアルゴリズムがC/C++などで書かれていた場合、最適化コンパイラはレジスタを分割する方法を手動で指定しなくても(アセンブリを確認することで確認できます)、SIMDでベクトル化することができます。レジスタを手動で分割せずに高水準言語で実装することは、コンパイラが任意のターゲットマシンのワードサイズに対して最適化できるため、間違いなく可能です。

関連する問題