How to use parpool for different expressions ?
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
This is my first time trying to use parallel computing.
Would this code pass Dx1 Dx2 Dx3 Dx4 to different cores and then continue with Dx5 to speed computation ?
And can 'subs' in Dx5 be used by more than one core?
I have 4 cores on my computer.
x1 = linspace(-1,1,10000);
S = @(x) exp(sin(x));
syms x
D1 = diff(S(x), x,1);
D2 = diff(D1, x,1);
D3 = diff(D2, x,1);
D4 = diff(D3, x,1);
D5 = diff(D4, x,1);
parpool
Dx1 = double(subs(vpa(D1), x, x1));
Dx2 = double(subs(vpa(D2), x, x1));
Dx3 = double(subs(vpa(D3), x, x1));
Dx4 = double(subs(vpa(D4), x, x1));
Dx5 = double(subs(vpa(D5), x, x1));
0 commentaires
Réponses (1)
Raymond Norris
le 12 Oct 2020
Hi Ole,
The parpool command will start a pool of workers (in this case most likely on your 4-core machine). Conceptually, think of this as now 5 MATLAB processes running, with one of them being your MATLAB Desktop and the other 4 as headless compute engines. The true parallelization then comes from leveraging the MATLAB parallel language constructs, such as parfor and spmd.
In pratice, it's possible that anyone of the functions you've called (double, subs, and vpa) could call a parallel constructor and therefore be dispearsed onto other cores, but in this case, it's unlikely. Instead, you'll want to explicitly call them yourself. For instance, I might rewrite your example as such:
x1 = linspace(-1,1,10000);
S = @(x) exp(sin(x));
syms x
D1 = diff(S(x), x,1);
D2 = diff(D1, x,1);
D3 = diff(D2, x,1);
D4 = diff(D3, x,1);
D5 = diff(D4, x,1);
DN = {D1; D2; D3; D4; D5};
D = nan(5,10000);
parfor didx = 1:5
D(didx,:) = double(subs(vpa(DN{didx}), x, x1));
end
Notice I left off the call to parpool? In fact, parfor will start a parpool if one hasn't already started. What the code above now does is assign each call to double (and thefore subs and vpa) to its own core.
Thanks,
Raymond
0 commentaires
Voir également
Catégories
En savoir plus sur Parallel Computing Fundamentals dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!