Matlab并行计算时间效率

时间:2017-02-01 22:24:14

标签: matlab parallel-processing

目前我已经开始使用matlab的并行计算工具箱了。我想用面部识别代码测试它。我的第一次尝试是使用10.000图像的Eigenfaces函数:

脚本:

function [m, A, Eigenfaces] = EigenfaceCore(T)
tic
Train_Number = size(T,2);
A = [];  

for i = 1 : Train_Number
temp = double(T(:,i)) - m; 
A = [A temp,]; % Merging all centered images
end

L = A'*A;
[V D] = eig(L); 

x = zeros(1,size(D,1));
for i = 1 : size(D,1)
x (i) = D(i,i);
end

L_eig_vec = [];
for i = 1 : size(V,2) 
    if( x(i) > 1)
        L_eig_vec = [L_eig_vec V(:,i)];
    end
end

Eigenfaces = A * L_eig_vec; % A: centered image vectors
toc

对于这段代码,我需要大约112秒的时间。

如果我打开一个包含4个内核的POOL,并使用parfor而不是for,则需要421秒。有人能帮助我吗?我想通过增加图像的数量(首先是大约20张图像和parfor需要更多时间),并行计算版本将通过正常版本。

0 个答案:

没有答案