[Parallel Computing Toolbox] Problème de calcul parallèle
Hey la compagnie !
J'ai décidé de m'essayer au calcul parallèle. Ca n'a pas été évident d'y arriver T_T.
Bon j'ai enfin réussi à me faire un benchmark, le seul hic c'est que j'ai un speedup négatif !
Genre je fait mon calcul sur un proc il est plus de 5 fois plus rapide que lorsque je lance le calcul sur 4 procs. Là je sèche. Si quelqu'un à une idée de ce qui ne va pas, je suis preneur ! :ccool:
Voici le Bench:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
% calcul de 100 polynomes de degres 10 en 50 valeur de t differente
nv = 100;
nt = 50;
deg = 10;
c = cell(nv,1);
t = sort(rand(nt,1));
for i = 1:nv
c{i} = rand(1,deg+1);
for j = 1:nt
mC{i,j} = [i, j];
end
end
R1p = cell(nv,nt);
Rmp = cell(nv,nt);
% calcul sur un processeur (en séquentiel)
tic
for k = 1:numel(mC)
R1p{k} = sum(c{mC{k}(1)}.*t(mC{k}(2)).^(0:deg));
end
toc
% lancement de 4 workers matlab
matlabpool open 4
tic
parfor k = 1:numel(mC)
Rmp{k} = sum(c{mC{k}(1)}.*t(mC{k}(2)).^(0:deg));
end
toc
matlabpool close |
Voici ce que j’obtiens:
Code:
1 2 3 4 5 6 7 8 9
| Elapsed time is 0.058805 seconds.
Starting matlabpool using the parallel configuration 'local'.
Waiting for parallel job to start...
Connected to a matlabpool session with 4 labs.
Elapsed time is 0.320436 seconds.
Sending a stop signal to all the labs...
Waiting for parallel job to finish...
Performing parallel job cleanup...
Done. |