A
, B
, C
: réseaux de cellules de taille 100 x 1.
Chaque cellule de A
est une matrice. Tous ont la même taille.
B
et C
contiennent des vecteurs.calcul parallèle avec matrice de cellules
Je dois créer un réseau de cellules D
de taille 100 x 1. Code série ressemblera à quelque chose comme:
for i=1:100
D{i}=my_func(A{i},B{i},C{i});
end
où my_func
est une fonction qui prend l'entrée d'une matrice et des vecteurs, la production d'un vecteur. Je veux utiliser parfor
(ou spmd
) pour accélérer les choses. Cependant, A
a une grande taille, donc je ne veux pas diffuser A
à tous les travailleurs. Y at-il un moyen de le faire efficacement, étant donné que my_func
prend parfois? Si quelqu'un peut me donner un petit exemple, je l'apprécierai.
Alors son vraiment étrange, car en utilisant comme parfor qui est beaucoup plus lent que le code série. Je ne sais pas vérifier mais si je cours sur 3 cœurs, mon ordinateur est complètement gelé. Je soupçonne donc que les données étaient diffusées aux travailleurs. Merci. – Bluesking
@Bluesking Dans quelle version de MATLAB êtes-vous? Si ≥ R2016b, alors vous pouvez jeter un oeil à [ticBytes] (https://nl.mathworks.com/help/distcomp/ticbytes.html) –
J'ai été capable de vérifier la quantité de données envoyées à chaque travailleur, environ 300 Mo, soit environ la moitié de la taille de la matrice A. Donc, il semble que rien ne va pas. Comment se fait-il qu'il n'y avait aucun avantage dans le temps de course? – Bluesking