I am looking for libraries for solving large scale linear system (10e5) of equations using parallelization and shared memory. 1. Sparse, complex symmetric, SPD. 2. Suitable for higher order FEM ,DGFEM using Domain decomposition. 3. Suitable for iterative solvers with built in preconditioners. 4. Suitable for C++ and/or MATLAB. OS preferred- Ubuntu. Intel compiler. ( Paradiso does not support intel Mkl)
Eigen does not use parallelism for solving linear systems (see comment in http://eigen.tuxfamily.org/index.php?title=FAQ#How_does_Eigen_compare_to_BLAS.2FLAPACK.3F ).
Trilinos provides different linear solvers (direct, preconditioners, iterative).
For dense linear algebra, the LAPACK and BLAS libraries are nearly always the way to go. There are a number of C++ packages that interface to LAPACK and BLAS.
Some other packages in this space that might be of use:
UMFPACK: unsymmetric multifrontal method, sequential but robust
SuperLU: supernodal sparse LU, has parallel variants (both sharedmem and distmem)
TAUCS: sharedmem parallel multifrontal, can exploit complex-symmetry (I think)
MyraMath: sharedmem parallel multifrontal, can exploit complex-symmetry, has some interesting algorithms to support substructuring/DDM (disclaimer: I authored this one)
In my experience, PARDISO is generally the fastest.
This page offers comparisons between various linear solvers http://www.netlib.org/utk/people/JackDongarra/la-sw.html
For a distributed, C++ based solver which can handle SPD specifically for sparse matrices along with built-in preconditioning, I would strongly recommend Elemental
For sparse systems, you can use my own library OpenNL: https://gforge.inria.fr/frs/?group_id=1252
It has no dependency, simple API for matrix assembly, it is parallel, works also on the GPU. It has built-in iterative algorithms (CG, preCG, BiCG, GMRES) and supports sparse direct solvers (SuperLU, CHOLMOD) with a plugin.
Documentation of OpenNL: http://alice.loria.fr/software/geogram/doc/html/nl_8h.html#details