用MATLAB进行并行图像处理

时间:2013-05-07 15:44:56

标签: matlab image-processing parallel-processing

我编写了一个MATLAB程序,用于对视频进行计算。我认为它是适应多个cpu内核的理想选择,因为有很多平均值已经完成。我只是将第一部分框架发送到每个实验室。说(为简单起见)它是一个200帧的文件。我已经阅读了一些指南并使用SPMD得到了这个。

spmd
limitA = 1;
limitB = 200;  
a = floor(((limitB-limitA)/numlabs)*(labindex-1)+limitA);                               
b = floor((((limitB-limitA)/numlabs)*(labindex-1)+limitA)+(((limitB-limitA)/numlabs)));
fprintf (1,'Lab %d works on [%f,%f].\n',labindex,a,b); 
end

它成功地输出每个工作人员将在他们各自的部分工作(例如Lab 1工作在1:50,Lab 2 50:100等)。

现在我陷入困境的是如何让我的主体代码在每个Lab的框架部分上工作。是否有一个提示或一种简单的方法来编辑我的主要代码,以便它知道基于labindex工作的帧?将spmd添加到循环会导致错误,因此我的问题。

由于

1 个答案:

答案 0 :(得分:0)

继续你所拥有的,不要只需要这样的东西:

spmd
    % each lab has its own different values for 'a' and 'b'
    for idx = a:b
        frame = readFrame(idx); % or whatever
        newFrame = doSomethingWith(frame);
        writeFrame(idx, newFrame);
    end
end

当然,如果那是你正在做的事情,你可能需要序列化帧写入(即确保一次只有一个进程写入)。