Could anyone please confirm? A \ B is multi-threaded for dense matrices but single-threaded for sparse matrices. I watched the Resource Monitor in Windows 10 in both cases and saw only activity on 1 core in the case of sparse matrices (Matlab 2017a). If this is true, is there any way to get multi-threading on sparse \ operation?

 Réponse acceptée

John D'Errico
John D'Errico le 18 Août 2017

0 votes

Backslash works in an automatically multi-threaded form ONLY on dense matrices, and only for systems that are sufficiently large. I recall verifying this fact, although it may change in some future release.
I believe there is currently nothing you can do to force multithreading for a sparse system solve. Even, for example, if you have the parallel processing TB, you still cannot break the problem up.

3 commentaires

Tung-Duong
Tung-Duong le 18 Août 2017
Thank you for the confirmation. My A is about 10000 x 3000. I thought of using the gpu instead with gpuArray(A) \ gpuArray(B), but I got the following error:
Error using \ Sparse MLDIVIDE only supports sparse square matrices divided by full column vectors.
It's odd because A is square and non-singular. I can do full(A) \ full(B) without any problem.
In any case, you might look into the gpu for parallelization. I just don't understand why I'm having problem with it.
Joss Knight
Joss Knight le 18 Août 2017
Modifié(e) : Joss Knight le 18 Août 2017
For sparse solves on the GPU only a vector RHS is currently supported. This is because that is what the underlying library (cusolver) supports. So B has to be a vector. Also you say A is non-square in one paragraph and then you say it's square in the next. At the moment, only square A is supported.
Tung-Duong
Tung-Duong le 28 Août 2017
Sorry, the "A" in the division is square. It's built from a non-square submatrix as [I A; A' 0], which is square and non-singular. So I should be able to do "A"\B on the CPU but can't.

Connectez-vous pour commenter.

Plus de réponses (1)

guoliang song
guoliang song le 28 Jan 2020

0 votes

I also have this problem and it seems very strange.
a\b (a is about 60k*6k)
On my old PC(i7/4core,matlab2017). It can use all 4 core.
On my new PC(i9/10core,matlab2017). It can only use 1 core.
Same result in matlab2019b.

Catégories

En savoir plus sur Get Started with GPU Coder dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by