2016-09-10 9 views
0

I(fopenmpを使用して)複数のスレッドを使用すると、固有のコレスキー分解をスピードアップするならば、疑問に思ってeigenのコレスキーはmpから利益を得ますか?

https://eigen.tuxfamily.org/dox/classEigen_1_1LLT.html

あり、特定の方法は、並列に実行できることを固有値に関するいくつかの情報があるが、それは1つの利点かが明確ではありません

https://eigen.tuxfamily.org/dox/TopicMultiThreading.html

固有値は、並列分解のオプションを持っていない場合は、おそらく別のオプションはありますか?

+0

異なるOMP_NUM_THREADS = ...の値でチェックするだけではどうですか? – Ruslan

+0

私はopenmpでコンパイルしてテストする作業を始める前に、誰かがすでに経験を積んでいるかもしれないことを期待していました。 –

+0

2番目のリンクには、現在、現在のところ、次のアルゴリズムではマルチスレッド化が可能です:一般的なマトリックスマトリックス製品PartialPivLU_。 – Ruslan

答えて

1

Eigenのコレスキーモジュールはマルチスレッドをサポートしていませんが、sparse moduleでは外部ソルバー用のラッパーがあります。

興味深いスパースコレスキーソルバはPaStiX(CeCILL-C、GPL-ISH)またはPARDISO(プロプライエタリ、インテルMKL)であろう。

これらはともにLLT因数分解もサポートしています。

0

現時点では、on this pageと記載されているように、PartialPivLUのみが暗黙的なマルチスレッドをサポートしています(マルチスレッド化された大きな製品が含まれています)。 現時点では明示的に並列化されている唯一のものは(十分に大きい)マトリックスマトリックス製品です。

関連する問題