欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

并行算法的性能度量——函数句柄在并行程序分析中的应用(2-4)

程序员文章站 2024-02-26 19:40:34
...

函数句柄在并行程序分析中的应用

由前面的内容可以知道,parfor并行效率除了与数据通信有关的大小有关,也与循环体执行的操作本身有关。

如果Matlab并行计算池中的worker数目已经知道,那么数据传输量一般比较容易测算。但是对parfor循环体的操作进行分析一般比较困难。

为了程序的可读性和可维护性,循环执行的操作一般都是通过函数来实现的。如果对每个函数都编写测试函数的话,工作量比较大,而且容易出错。所以,很多时候都是通过使用函数句柄来解决这个问题。

调用格式如下:    

functionname(输入参数,hfunc,flag)    

function [t1,t2]=partry29(N,M,hfunc,flag)
%N为循环次数;M为矩阵大小;
%hfunc为函数句柄;flag为标识(输入数据的格式)
if nargin==2                      
   aaa@qq.com;                    
   flag='matrix';               
end
if nargin==3
   flag='matrix';
end
data=cell(1,N);
for kk=1:N
    data{kk}=rand(M);
end
tic;
mypool=parpool;
parfor ii=1:N
       c1(:,ii)=eig(data{ii});
end
t1=toc;
display(strcat('function:',func2str(hfunc),':','parfor:',num2str(t1),'seconds'));    
delete(mypool)
tic;      
for ii=1:N
    c1(:,ii)=eig(data{ii});
end
t2=toc;
display(strcat('function:',func2str(hfunc),':' ,'for:',num2str(t2),'seconds'));

运行结果 

并行算法的性能度量——函数句柄在并行程序分析中的应用(2-4)

相关标签: 并行算法