Wie funktioniert die parfümale Funktion von MATLAB?

In der MATLAB-Dokumentation haben wir ein Codebeispiel für dasparfeval Funktion. Ich habe einige Fragen dazu. Dies ist der Code:

p = gcp();
%// To request multiple evaluations, use a loop.
for idx = 1:10
    f(idx) = parfeval(p,@magic,1,idx); % Square size determined by idx
end
%// Collect the results as they become available.
magicResults = cell(1,10);
for idx = 1:10
    %// fetchNext blocks until next results are available.
    [completedIdx,value] = fetchNext(f);
    magicResults{completedIdx} = value;
    fprintf('Got result with index: %d.\n', completedIdx);
end
Wie funktioniertparfeval ArbeitSendet diese Funktion jede (idx) Auswertung desmagic Funktion zu einem bestimmten Arbeiter?

Wenn wir nur eine Codezeile haben würdenf = parfeval(p,@magic,1,10);:

Wie würde dieser Code funktionieren? Wird die Auswertung nur an einen Worker gesendet und die Ausgabe zurückgegeben?Was ist der Unterschied zwischenparfeval undparfevalOnAll?Was ist der Unterschied zwischenfetchNext undfetchOutputs?Warum brauchen wirfetchNext nach dem erstenfor Schleife und eine zweite Schleife, um die Ergebnisse zu erhalten?Wir haben nicht alle Ergebnisse nach der ersten Schleife? Warum Ich denke, wir warten darauf, dass die Mitarbeiter den Prozess in der zweiten Schleife abschließen. Ist das wahr? Können wir das nicht ohne Schleife machen?

Ich denke, wir können @ verwendmagicResults{idx} = fetchOutputs(f(idx)); in der zweiten Schleife. Wir haben die gleichen Ergebnisse. Was ist der Unterschied zwischen diesen beiden Strukturen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage