MATLAB Answers

How can I solve linear equation system in parallel?

33 ビュー (過去 30 日間)
Javier Alaminos
Javier Alaminos 2020 年 1 月 14 日
コメント済み: Heiko Weichelt 2020 年 1 月 14 日
I am solving a linear equation system, , where A is a sparse square matrix and B is a sparse column vector. Before solving the system I use the command
dA = decomposition(A);
to return a decomposition of matrix A that I can use to solve the linear system more efficiently. In my case, it is Cholesky decomposition. Then I solve the system
x = dA\B;
and it works perfectly. My question is: how can I do it in parallel computing? or What is the best way to solve it in a cluster?

  0 件のコメント



John D'Errico
John D'Errico 2020 年 1 月 14 日
You already are doing that!
That is, decomposition uses all of the cores you have available for large problems.
Watching my activity monitor while the decomposition was being done:
A = sprand(10000,10000,.001);
tic,DA= decomposition(A);toc
Elapsed time is 8.250635 seconds.
All 8 cores were being used. MATLAB does try to multithread many large computations, especially those involving linear algebra.

  0 件のコメント


その他の回答 (1 件)

Christine Tobler
Christine Tobler 2020 年 1 月 14 日
As John says, if you are using decomposition on one computer with several cores, the solver used already will use those cores if appropriate.
If you are working on a distributed system, and the matrix A is a distributed matrix, as of R2019b decomposition is also supported for this (see here).

  1 件のコメント

Heiko Weichelt
Heiko Weichelt 2020 年 1 月 14 日
Notice that decomposition of distributed arrays has a slightly limited subset for the underlying algorithms. Right now, sparse Cholesky, e.g., is not yet supported. Compare
>> help parallel.distributed.Decomposition.Type
>> help parallel.distributed.Decomposition
for the limitations.


Community Treasure Hunt

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

Start Hunting!

Translated by