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 !
Voici le Bench:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager