Matlab并行程序设计(二)parfor VS for

来源:互联网 发布:ubuntu更新火狐浏览器 编辑:程序博客网 时间:2024/06/06 16:31

一、执行效果

    通过两者生成简单数组向量

function [] = ex2_3()%ex2_3.mstartmatlabpool;N = 8;A1 = zeros(N,1);for i = 1:N    A1(i) = i;endA2 = zeros(N,1);parfor i = 1:N    A2(i) = i;end[A1 A2]closematlabpool; 

>>ex2_3

Starting matlabpool using the 'local' configuration ... connected to 2 labs.
matlabpool 已经启动

ans =

     1     1
     2     2
     3     3
     4     4
     5     5
     6     6
     7     7
     8     8

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

二、执行顺序

    显示简单数组的生成过程

function [] = ex2_4()%function [] = ex2_4()startmatlabpool;N = 8;display('for:');for i = 1:N      display(num2str(i));enddisplay('parfor:');parfor i = 1:N       display(num2str(i));end


>>ex2_4

Starting matlabpool using the 'local' configuration ... connected to 2 labs.
for:
1
2
3
4
5
6
7
8
parfor:
3
2
1
7
8
6
5
4
    而且可以发现parfor的运行结果每次都不尽相同。

三、执行效率

function [] = ex2_5(N)%N 循环次数startmatlabpool;tic;parfor ii = 1:N   b(ii) = wastetime2;endt1 = toc; display(strcat('parafor:',num2str(t1),'s')); tic;b = zeros(N,1);for ii = 1:N    b(ii) = wastetime2;endt2 = toc; display(strcat('for:',num2str(t2),'s'));function [out] = wastetime2()%function [out] = wastetime2()% a = rand(1e6,10);out = 0;for kk = 1:1e6    out = out + rand;end

>> ex2_5(100)
matlabpool 已经启动
parafor:1.7325s
for:3.4783s

    上文简单的比较了parfor与for的不同点,其实两者还有很多的不同之处,比如对变量的影响、循环内外通讯的影响等等。在下面的文章中将进行介绍。

原创粉丝点击