【发布时间】:2023-03-10 01:01:01
【问题描述】:
我有一个包含 1xN 元素的数组,我想使用 4 个或更多工作线程(内核)在这个数组上并行工作。每个工作人员从该数组中获取一些元素并对其进行操作。例如,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)等等,然后对它们进行函数操作
【问题讨论】:
-
你有并行计算工具箱吗?
-
如果每个工作人员处理数组的不同元素,这究竟是如何实现共享内存的?
-
这将实现 M/M/n 队列系统,意味着一个缓冲区和多个服务器,每个服务器将从队列中获取不同的元素并为其提供服务。
标签: matlab parallel-processing