matlab中并行条件,Matlab中的并行处理

我创建了两个函数:生成数据和处理数据.数据处理非常耗时,因此我想在并行线程中处理它们.但是我遇到了一些问题.首先,这是我的计划:

result = zeros(1, 10);

matlabpool open local 2

spmd

for a = 1:5

data = generate_data();

display(sprintf('Received data on CPU%d: %d', labindex, data));

result(end + 1) = process_data(data);

end

display(sprintf('All done on CPU%d', labindex));

end

matlabpool close

并记录它返回的内容:

Starting matlabpool using the 'local' profile ... connected to 2 workers.

Lab 1:

Received data on CPU1: 100

Lab 2:

Received data on CPU2: 100

Lab 1:

Received data on CPU1: 101

Received data on CPU1: 102

Received data on CPU1: 103

Received data on CPU1: 104

All done on CPU1

Lab 2:

Received data on CPU2: 101

Received data on CPU2: 102

Received data on CPU2: 103

Received data on CPU2: 104

All done on CPU2

Sending a stop signal to all the workers ... stopped.

有问题,我有:

> generate_data返回的值与之相同

两个线程.我应该是不同的.线程应该处理不同

数据,而不是两次相同的数据.我无法生成整个数据

立即设置并使用getLocalPart.

>变量结果不是1×10的双精度矩阵,而是1×2矩阵的

复合材料.我读了(共)分布式阵列,但没有帮助

我.我应该怎么做才能获得1×10的双打矩阵?

>完成后,我应该对CPU1处理CPU2的数据做些什么

处理自己的数据?一般来说,我不知道如何做到这一点.

>可以删除“实验1:”和“实验2:”?他们搞乱了

我的日志:)

考虑到上述情况,log(对于较大的数据集)应该是这样的:

Starting matlabpool using the 'local' profile ... connected to 2 workers.

Received data on CPU1: 100

Received data on CPU2: 101

Received data on CPU1: 102

Received data on CPU1: 103

Received data on CPU1: 104

Received data on CPU1: 105

Received data on CPU2: 106

Received data on CPU1: 107

Received data on CPU1: 108

Received data on CPU2: 109

All done on CPU1

All done on CPU2

Sending a stop signal to all the workers ... stopped.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值