Отправка данных работникам
Я пытаюсь создать кусок параллельного кода, чтобы ускорить обработку очень большого (пара сотен миллионов строк) массивов. Чтобы распараллелить это, я разбил свои данные на 8 (количество ядер) частей и попытался отправить каждому работнику по 1 части. Однако, глядя на использование моей оперативной памяти, кажется, что каждая часть отправляется каждому работнику, что эффективно увеличивает мое использование оперативной памяти на 8. Минимальный рабочий пример:
A = 1:16;
for ii = 1:8
data{ii} = A(2*ii-1:2*ii);
end
Теперь, когда я отправляю эти данные работникам, использующимparfor
кажется, что отправляется полная ячейка, а не только нужный кусок:
output = cell(1,8);
parfor ii = 1:8
output{ii} = data{ii};
end
Я на самом деле использую какую-то функцию вparfor
цикл, но это иллюстрирует случай. Действительно ли MATLAB отправляет полную ячейкуdata
каждому работнику, и если да, то как заставить его отправлять только нужный кусок?