¿Cómo funciona la función parfeval de MATLAB?

En la documentación de MATLAB tenemos un ejemplo de código para elparfeval función. Tengo algunas preguntas al respecto. Este es el código:

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
Cómoparfeval ¿trabajo?¿Esta función envía cada (idx) evaluación delmagic funcionar a un trabajador específico?

Si solo tuviéramos una línea de códigof = parfeval(p,@magic,1,10);:

¿Cómo funcionaría este código?¿Se enviará la evaluación solo a un trabajador y devolverá la salida?Cuál es la diferencia entreparfeval yparfevalOnAll?Cuál es la diferencia entrefetchNext yfetchOutputs?Por qué necesitamosfetchNext después del primerofor bucle y un segundo bucle para obtener los resultados?¿No tenemos todos los resultados después del primer ciclo? ¿Por qué?Creo que estamos esperando que los trabajadores completen el proceso en el segundo ciclo. ¿Es esto cierto? ¿No podemos hacerlo sin ningún bucle?

Creo que podemos usarmagicResults{idx} = fetchOutputs(f(idx)); en el segundo bucle Tenemos los mismos resultados. ¿Cuál es la diferencia entre estas dos estructuras?

Respuestas a la pregunta(1)

Su respuesta a la pregunta