Эффективная реализация EigenSolver - PullRequest
1 голос
/ 16 декабря 2009

Я ищу эффективный eigensolver (язык не важен, хотя я буду программировать на C #), который использует многоядерные функции, имеющиеся в современном процессоре. Возможность работать напрямую с pardiso solver - это большой плюс. Моя матрица в основном разреженная матрица , поэтому идеальный решатель должен иметь возможность воспользоваться этим фактом и значительно увеличить использование памяти и производительность.

Пока я нашел только LAPACK и ARPACK . LAPACK , реализованный в Intel MKL , является хорошим кандидатом, поскольку предлагает многоядерную оптимизацию. Но похоже, что драйверы внутри LAPACK не работают напрямую с pardiso solver, более того, похоже, что они не используют преимущества разреженной матрицы (но я не уверен в этом).

ARPACK, с другой стороны, кажется довольно сложным для установки в среде Windows, и параллельная версия, PARPACK , не работает так хорошо . Бонус в том, что он может работать с pardiso solver .

Лучше всего будет Intel MKL + ARPACK с многоядерным ускорением. Не уверен, есть ли какие-либо существующие реализации, которые уже делают то, что я хочу сделать?

Ответы [ 3 ]

1 голос
/ 03 января 2010

Я работаю над проблемой с потребностями, очень похожими на те, о которых вы заявляете. Я рассматриваю праздник: http://www.ecs.umass.edu/~polizzi/feast/index.htm Я пытаюсь заставить это работать прямо сейчас, но это кажется прекрасным. Мне интересно услышать, каков ваш опыт с ним, если вы используете его. ура Ned

0 голосов
/ 10 марта 2010

Я уже реализовал это в C #.

Идея состоит в том, что необходимо преобразовать матричный формат в формат CSR. Затем можно использовать MKL для вычисления алгоритма решения линейных уравнений (с использованием решателя pardiso), манипуляции с матрично-векторными элементами.

0 голосов
/ 05 января 2010

Взгляните на библиотеку Eigen2 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...