Распределение / разделение переменных для параллельного получения изображений (MATLAB) - PullRequest
0 голосов
/ 18 апреля 2020

Я хочу распараллелить мой код путем распределения / разделения переменных между доступными работниками, запустить параллельное получение изображений с использованием определенной функции myWatershedFun, которая возвращает сегментированное двоичное изображение bw_seg, и собрать выходные результаты каждого работника. Здесь у меня есть два изображения одинакового размера, изображение в градациях серого img, соответствующее двоичное изображение bw и массив структур param. Я разбил каждое изображение на n_workers вертикальные полосы, но как я могу распределить каждую часть для соответствующего работника? Я также хочу разослать структуру param всем работникам, чтобы вычислить myWatershedFun.

По сути, последовательное приобретение, которое я пытаюсь распараллелить, это

bw_seg = myWatershedFun(img, bw, param); % img, bw and bw_seg have the same size

Попытка

[n_rows n_cols] = size(img);

% Set up parallel environment 
poolobj = gcp;
n_workers = poolobj.NumWorkers;

% Split images into equal verticale stripes 
for k = 1:n_workers
    img_temp{k} = img(:, floor((k-1)*(n_cols/n_workers) + 1): ...
        floor(k*(n_cols/n_workers)));
    bw_temp{k} = bw(:, floor((k-1)*(n_cols/n_workers) + 1): ...
        floor(k*(n_cols/n_workers)));
end

spmd
    % Distribute img_temp{k} and bw_temp{k} to worker k, along with param
    ...???

    % Each worker segments the assigned vertical area of the image
    bw_seg_worker = myWatershedFun(img_temp{k}, bw_temp{k}, param) 
end

% Merge the 'n_workers' binary outputs bw_seg_worker into a single binary image
bw_seg = ...

% Delete pool
delete(gcp)

Может ли кто-нибудь мне помочь? Большое спасибо заранее за любой вклад!

...