Mtalab R2015b 多核并行运算以加快速度

来源:互联网 发布:淘宝店铺值多少钱 编辑:程序博客网 时间:2024/05/18 23:57

目前网上给出的大部分matalb并行计算代码为

matlabpool local x %开始并行设置 生成并行poolmatlabpool close  %关闭 并行pool

但对于matlab2015版本,已经没有了matlabpool命令,修改为

parpool local %开启delete(gcp('nocreate'))%关闭

并利用parfor命令实现并行for循环的计算,实例程序如下:

%传统方式ticc1=1;for i = 1:500   c1 = c1+max(eig(rand(i,i)));endt1 = toc;%parfor并行方式计算parpool localc2=1;ticparfor ii = 1:500  c2 = c2+max(eig(rand(ii,ii)));enddelete(gcp('nocreate'))t2 = toc;display(strcat('客户端串行计算时间:',num2str(t1),'秒'));display(strcat('parfor并行计算时间:',num2str(t2),'秒'));
但在实际应用时,使用parfor是,提示问题:The variable X1 in a parfor cannot be classified.
我的代码如下:

parpool localparfor m=1:Mont    X1 = [100.*rand(1,N);20.*rand(1,N)]    X2 = X1;    X1(1,:) = X1(1,:)-1+.3*randn(1,N);    X2(1,:) = X2(1,:)+3+.3*randn(1,N);    ...    disp(m)enddelete(gcp('nocreate'))
查了相关帮助文档 doc parfor和相关答疑帖子:http://blog.sina.com.cn/s/blog_866e7fa70101cv08.html

没看太明白,不断尝试后,在end后面加入部分语句后,得到了解决。

parpool localparfor m=1:Mont    %产生数据    X1 = [100.*rand(1,N);20.*rand(1,N)]    X2 = X1;    X1(1,:) = X1(1,:)-1+.3*randn(1,N);    X2(1,:) = X2(1,:)+3+.3*randn(1,N);    ....    disp(m)endX1=0;X2=0;delete(gcp('nocreate'))


原创粉丝点击