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?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage