Daten an Mitarbeiter senden
Ich versuche, einen parallelen Code zu erstellen, um die Verarbeitung eines sehr großen Arrays (einige hundert Millionen Zeilen) zu beschleunigen. Um dies zu parallelisieren, habe ich meine Daten in 8 (meine Anzahl von Kernen) Teile zerlegt und versucht, jedem Arbeiter 1 Teil zu schicken. Betrachtet man jedoch meine RAM-Auslastung, so scheint es, als ob jedes Stück an jeden Arbeiter gesendet wird, was meine RAM-Auslastung effektiv mit 8 multipliziert. Ein minimales Arbeitsbeispiel:
A = 1:16;
for ii = 1:8
data{ii} = A(2*ii-1:2*ii);
end
Nun, wenn ich diese Daten an Mitarbeiter sende, die @ verwendparfor
es scheint die volle Zelle anstatt nur das gewünschte Stück zu senden:
output = cell(1,8);
parfor ii = 1:8
output{ii} = data{ii};
end
Ich benutze tatsächlich eine Funktion innerhalb desparfor
Schleife, aber dies veranschaulicht den Fall. Sendet MATLAB tatsächlich die volle Zelledata
an jeden Arbeiter, und wenn ja, wie soll er nur das gewünschte Stück schicken?