MATLAB-parfor并行程序实例
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Startmatlabpool等关键词在Matlab R2016a中不再支持,在左下角,有按钮可以直接启动和关闭Parallelpool。由于我的电脑是4核,默认打开了4个worker。
下面在启动Parallelpool后,比较parfor和for的计算效率。
程序代码:
clear;
N = 1e4;
A = magic(N);
B = rand(N);
S = zeros(N,N);
tic;
for i=1:N*N
S(i) = sin(A(i))*cos(B(i)) + cos(A(i))*sin(B(i));
end
t1 = toc;
fprintf('for:%.3fs\n',t1);
S = zeros(N,N);
tic;
parfori=1:N*N
S(i) = sin(A(i))*cos(B(i)) + cos(A(i))*sin(B(i));
end
t2 = toc;
fprintf('parfor:%.3fs\n',t2);
运行结果为:
for:50.105s
parfor:15.757s
可见,parfor并行计算效率接近for的1/4,这是由于各循环计算之间是相互独立的。