¿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);
:
parfeval
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?