The SMP branch has been merged in the default one. Here is a short summary of what is new and how to use it:
- improved matrix products, even for non SMP code.
- to enable SMP support, simply enable openmp with your compiler (-fopenmp for gcc, -openmp for ICC, etc.)
- currently you can control it via the openmp API: e.g., omp_set_num_threads(1) to disable it at runtime
In the future we should add our own API.
- to enable it in the unit tests there is a EIGEN_TEST_OPENMP option (currently only for gcc since I don't know what is the option for MSVC)
- only the general matrix-matrix product is parallelized, not the triangular or selfadjoint variants...
- ..but since partial pivoting LU is heavily based on general matrix-matrix products, solving large linear problems using PartialPivLu is already significantly boosted :) So I guess ~70% of use cases are already covered.
- if the user code is already parallelized using OpenMP, then eigen won't try to parallelize inside an openmp parallel session.