How to speed up huge matrix mldivide?

How to speed up huge matrix mldivide? I was solved this matrix on single core but it took too long. So, i was used distributed array using parallel computing tool box, but i didn't get speed up. Using distributed array took too long than single core. How to speed up solution.

3 Commenti

How large? Are there any special features of the matrix such as sparsity or symmetry or patterns?
n = 5000; M = rand(n); x = ones(n,1);
tic
u = M\x;
clear A b
disp(['Time to solve on single core = ' num2str(toc)])
% parallel operations in spmd
tic
spmd
m = codistributed(M, codistributor('1d',2)); % by column
y = codistributed(x, codistributor('1d',1)); % by row
v = m\y;
end
disp(['Time to solve on 4 core = ' num2str(toc)])
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Time to solve on single core = 2.4375
Time to solve on 4 core = 4.4646
This is a sample coding. And another problem i has. The huge matrix size hurts memory. If run the program using huge matrix with codistributed array in SPMD, the Matlab software is delay because of full of memory.

Accedi per commentare.

 Risposta accettata

Edric Ellis
Edric Ellis il 8 Giu 2020

0 voti

distributed arrays on a single machine will generally perform worse than normal arrays - this is because the standard MATLAB mldivide is already intrinsically multithreaded.
If you have access to a capable GPU, and your problem fits in the memory of the GPU, this might be a good option. See this example which compares mldivide performance on the CPU and GPU.

1 Commento

Thank you! For your suggestion. I really appreciated that. I had already build MJS cluster, so i executed the mldivide fun, but i didn't get speed up. If i use more core, the program more take time. Any suggestion or guidence.

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by