How to use parpool for different expressions ?
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposte (1)
Raymond Norris
il 12 Ott 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 Commenti
Vedere anche
Categorie
Scopri di più su Parallel Computing Fundamentals in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!