2016-09-10 8 views
0

Я интересно, если с помощью нескольких потоков (с помощью fopenmp) ускорит разложение холецкого Эйгена вПолучает ли любительский холеки от mp?

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

Существуют некоторая информация о Эйгене, что конкретные методы могут работать параллельно, но не ясно, какая одна пользы

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

Если собственный не имеет возможности параллельного разложения, может быть, есть другой вариант?

+0

Почему бы не просто проверить с помощью разных значений «OMP_NUM_THREADS = ...»? – Ruslan

+0

Я буду, я надеялся, прежде чем начать прилагать усилия для компиляции и тестирования с помощью openmp, возможно, у кого-то есть опыт. –

+0

Вторая ссылка, которую вы указали, уже говорит _ В настоящее время следующие алгоритмы могут использовать многопоточность: общие матрицы - матричные продукты PartialPivLU_. – Ruslan

ответ

1

Модули Eigen's Cholesky не поддерживают многопоточность, но для внешних решателей в оболочках sparse module имеются обертки.

Интересные редкие Чолески решатели бы PaStiX (CeCILL-C, GPL-МОГ) или Pardiso (патентованный, Intel MKL).

Оба они поддерживают LLT факторизации тоже.

0

На данный момент, как задокументировано on this page, только PartialPivLU имеет неявную поддержку многопоточности (т. Е. Она включает в себя большие продукты, которые являются многопоточными). По сути, единственное, что явно распараллелено на данный момент, - это (достаточно большие) матрично-матричные продукты.