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.