【问题标题】:Parallel image processing with MATLAB使用 MATLAB 进行并行图像处理
【发布时间】:2013-05-07 15:44:55
【问题描述】:

我编写了一个对视频执行计算的 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

它成功输出每个工人将在各自的部分工作(例如,实验室 1 在 1:50 工作,实验室 2 50:100 等)。

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

谢谢

【问题讨论】:

    标签: matlab image-processing parallel-processing


    【解决方案1】:

    根据你所拥有的,你不只是需要这样的东西吗:

    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
    

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

    【讨论】:

    • 嘿,这很有帮助。我只是无法控制每个单独的实验室在其框架部分上工作。但现在我明白了,正如你所说,每个实验室都有自己的“a 和 b”。应该能够从这里得到一些东西。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 2011-07-15
    相关资源
    最近更新 更多