Я тут наконец-то встроил MUMPS в мою программу (MOR for ANSYS) и прогнал
тесты с разными системами на одном процессоре. Получается для
симметричных положительно определенных матриц производительность похоже
на TAUCS (правда TAUCS использует поменьше памяти), для несимметричных
матриц он существенно быстрее UMPFACK и сопоставим и даже немного
быстрее решателя в ANSYS. В довершение он может решать симметричные
неопределенные матрицы, причем похоже также с очень хорошей
производительностью. Но здесь я еще тесты основательно не прогонял.
В общем, я очень доволен. Могу рекомендовать для использования.
Евгений
MUMPS: a MUltifrontal Massively Parallel sparse direct Solver
http://graal.ens-lyon.fr/MUMPS/index.html
У него лицензия public domain, но, чтобы его получить надо
зарегистрироваться.
Я с ним работал почти два года назад на SGI Origin 3800
http://modelreduction.com/doc/papers/rudnyi06tam.pdf
но только недавно встроил его в свою программу. MUMPS написан на Fortran
90. Я использовал g95 для компиляции на Windows
MUMPS изначально спроектирован на использование MPI, то есть для
распределенных систем.
Про shared memory в описании стоит следующее
2.10 Shared memory version
On networks of SMP nodes (multiprocessor nodes with a shared memory), a
parallel shared memory
BLAS library (also called multithread BLAS) is often provided by the
manufacturer. Using shared
memory BLAS (between 2 and 4 threads perMPI process) can be
significantly more efficient than running
with only MPI processes. For example on a computer with 2 SMP nodes and
16 processors per node, we
advise to run using 16 MPI processes with 2 threads per MPI process.
Я здесь не экспериментировал.
> Taucs наиболее эфффективен, когда матрица и множители помещаются в
> оперативной памяти,
> и достаточно эффективен, когда помещается только матрица, а множители
> на диске.
MUMPS поддерживает out-of-core, но я не сравнивал MUMPS out-of-core с
Taucs out-of-core, поскольку мне нужны были несимметричные матрицы и
большинство тестов я сделал с ними.