I'm trying to use the sparsesuite SPQR support module in eigen to solve a system with multi-threading enabled.
I've compiled the corresponding library with -fopenmp flags and tbb. What i'm running is something like
uint n = Eigen::nbThreads();
vec b = ...; //vector of size ~ 10000
Eigen::SPQR<Eigen::SparseMatrix<double>> qr;
qr.setPivotThreshold(1e-6);
qr.compute(H0); //H0 is a Eigen::SparseMatrix<double> 10000 x 1000
vec a = qr.solve(b);
Running it with various number of threads (1,2,4,16), i'm seeing absolutely no speed-up even if Eigen::nbThreads() returns the right value.
If i use conjugate gradient instead, there is a clear benefit of increasing the number of threads.
So my question is: would you have a clue on why the parallelization seems not to work using SPQR? Am i forgetting something somewhere?
Thanks in advance for your answer,