一个数组和多个worker在matlab上工作并更改该数组

时间:2012-12-17 16:47:57

标签: matlab parallel-processing

我有一个带有1xN元素的数组,我想在这个数组上并行使用4个或更多个worker(核心)。每个工作者从该数组中获取一些元素并对其进行操作。例如,worker1将占用3个元素,worker2将占用接下来的2个,依此类推。 这些工人将并行工作。

这些工人如何能够同步工作? 看起来这需要多个CPU之间的共享内存。

我需要每个工作人员同时从该数组中读取不同大小的数据:例如:


arr=1:100; % the common array 
serv1 = 3; % random numbers 
serv2 = 2; % random numbers 
serv3 = 1; % random numbers 
serv4 = 1; % random numbers 
我需要同时worker1读取array(1:serv1),worker 2读取array(serv1+1:serv1+serv2),worker3读取array(serv1+serv2+1:serv1+serv2+serv3)等等,然后操作它们上的函数

1 个答案:

答案 0 :(得分:0)

如果我的问题是对的,我会提出类似的建议

n = numel(array); % this would be the common array
nw = 5; % number of workers, assuming you have at least that many workers up and running
start_i = floor(linspace(1,n,nw+1)); % each worker will start working from start_i 
start_i( end ) = [];
end_i = [start_i(2:end)+1 n]; % each worker will work till end_i
parfor ( ii = 1:nw, nw )
     processArray( array( start_i(ii):end_i(ii) ) ); % do your magic here
end