Enviando dados para trabalhadores
Estou tentando criar um pedaço de código paralelo para acelerar o processamento de uma matriz muito grande (algumas centenas de milhões de linhas). Para paralelizar isso, cortei meus dados em 8 (meu número de núcleos) e tentei enviar a cada trabalhador 1. Porém, olhando para o uso da minha RAM, parece que cada peça é enviada para cada trabalhador, multiplicando efetivamente o uso da RAM por 8. Um exemplo de trabalho mínimo:
A = 1:16;
for ii = 1:8
data{ii} = A(2*ii-1:2*ii);
end
Agora, quando eu envio esses dados para trabalhadores usandoparfor
parece enviar a célula completa em vez da peça desejada:
output = cell(1,8);
parfor ii = 1:8
output{ii} = data{ii};
end
Na verdade, eu uso alguma função dentro doparfor
loop, mas isso ilustra o caso. O MATLAB realmente envia a célula completadata
para cada trabalhador e, em caso afirmativo, como fazê-lo enviar apenas a peça desejada?