Мне нужно решить ту же самую разреженную линейную систему (от 300x300 до 1000x1000) со многими правыми сторонами (от 300 до 1000). В дополнение к этой первой проблеме, я также хотел бы решить различные системы, но с одинаковыми ненулевыми элементами (только с разными значениями), то есть с множеством разреженных систем с постоянной конфигурацией разреженности. Мои матрицы неопределенны.
Производительность факторизации и инициализации не важна, но производительность этапа решения есть. В настоящее время я рассматриваю PaStiX или Umfpack и, возможно, поиграюсь с Petsc (который поддерживает оба солвера). Существуют ли библиотеки, способные воспользоваться моими конкретными потребностями (векторизация, многопоточность), или я должен полагаться на общие решатели, и Может быть, немного изменить их для моих нужд?
Что, если разреженная матрица больше, до ?
Вы не совсем ясно сформулировали проблему, когда говорите о «одинаковых ненулевых элементах (просто разных значениях)». Вы говорите, что матрица имеет постоянную разреженность, но фактические значения меняются? Или вы говорите, что матрица на самом деле постоянна?
Для нескольких правых частей и систем уравнений такого размера итерационные методы обычно не стоят того.
Все упомянутые вами пакеты предлагают методы прямой факторизации (хотя PetSc в основном известен своими итеративными решателями). Однако ваши системы настолько малы, что маловероятно, что вы сможете получить существенное параллельное ускорение, особенно в среде распределенной памяти.
Я бы предложил использовать Umfpack для этой работы - PaStix и PetSc излишни.
источник