matlab中的parfor问题; “向工作人员抛出UndefinedFunction错误”和Matlab崩溃

时间:2015-11-05 21:32:17

标签: matlab parallel-processing parfor

我有一些代码可以在系列中完美地运行,但是我试图通过将它并行来加速它,并且它让我适合多个地方。这是我的代码:

parfor q = 1:num_ranges;
    timenumber = squeeze(DATA(q,:,:));
    timenumber_shift = circshift(timenumber, [0 1]);
    for m = 1:total_working_channels;
        timenumberm = timenumber(m,:);
        for n = 1:total_working_channels;
            R_P(m,n,q) = mean(timenumberm.*conj(timenumber(n,:)),2);
            R_V(m,n,q) = mean(timenumberm.*conj(timenumber_shift(n,:)),2);
        end
    end
end

DATA是一个复杂的双倍大小1716x32x400。当我尝试像这样运行时,Matlab就崩溃了(“Matlab遇到了内部问题,需要关闭”)。数组太大而无法发送?我觉得那是问题,但我不确定。

为了解决这个问题,我尝试更改parfor命令的位置;这是第2次尝试:

for q = 1:num_ranges;
    timenumber = squeeze(DATA(q,:,:));
    timenumber_shift = circshift(timenumber, [0 1]);
    parfor m = 1:total_working_channels; %this is line 145!
        timenumberm = timenumber(m,:);
        for n = 1:total_working_channels;
            R_P(m,n,q) = mean(timenumberm.*conj(timenumber(n,:)),2);
            R_V(m,n,q) = mean(timenumberm.*conj(timenumber_shift(n,:)),2);
        end
    end
end

当我这样做时,Matlab不会崩溃。但是,在命令行中,它显示“分析并将文件传输给工作人员......已完成。”,然后出现错误。这是错误消息:

使用DBFCode12时出错(第145行)。在''的工人身上抛出了UndefinedFunction错误。这可能是因为包含''的文件无法访问 工作人员。使用addAttachedFiles(pool,files)指定要附加的所需文件。请参阅文档 'parallel.Pool / addAttachedFiles'了解更多详情。引起:未定义的函数或变量“”。

我对这个很难过。为什么在parfor行上有一个未定义的函数(没有名字!)?

我使用的是版本R2014a。

0 个答案:

没有答案