Parallel SPQR from suitesparse

338 views Asked by At

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,

0

There are 0 answers