¿Ahorrando tiempo y memoria usando parfor?

Considerarprova.mat en MATLAB obtenido de la siguiente manera

for w=1:100
    for p=1:9    
        A{p}=randn(100,1); 
    end
    baseA_.A=A;

    eval(['baseA.A' num2str(w) '= baseA_;'])

end

save(sprintf('prova.mat'),'-v7.3', 'baseA')

Para tener una idea de las dimensiones reales en mis datos, el1x9 cell enA1 está compuesto por lo siguiente9 matrices:904x5, 913x5, 1722x5, 4136x5, 9180x5, 3174x5, 5970x5, 4455x5, 340068x5. El otroAj's tienen una composición similar.

Considere el siguiente código

clear all
load prova
tic
parfor w=1:100
       indA=sprintf('A%d', w);
       Aarr=baseA.(indA).A;
       Boot=[];
       for p=1:9
           C=randn(100,1).*Aarr{p};
           Boot=[Boot; C];  
       end
       D{w}=Boot;
end
toc

Si corro elparfor bucle con4 Los trabajadores locales en mi Macbook Pro tardan 1,2 segundos. Sustituciónparfor confor toma 0.01 seg.

Con mis datos reales, la diferencia de tiempo es 31 segundos versus 7 segundos [la creación de la matrizC también es más complicado].

Si lo he entendido correctamente, el problema es que la computadora tiene que enviarbaseAa cada trabajador local y esto requiere tiempo y memoria.

¿Podría sugerir una solución que sea capaz de hacerparfor más conveniente quefor? Pensé que guardar todas las celdas enbaseA era una forma de ahorrar tiempo cargando una vez al principio, pero tal vez me equivoque.

Respuestas a la pregunta(2)

Su respuesta a la pregunta