【发布时间】:2014-02-22 08:10:28
【问题描述】:
我正在使用 parfor 来并行化 matlab 中的循环。代码如下
parfor i = 1:15
tmp{i,1} = theta(i) * Fw{i,1}' * var1 * Wi{i,1} * var2 * Fw{i,1} ;
end
FW, Wi 是包含矩阵的单元格。 var1, var2 是矩阵。 Theta 是一个向量。
当我执行此代码时,matlab 永远挂起,当我终止代码很长时间后,它显示以下错误。
警告:评估侦听器回调时出错。
主要是 58 使用 main 时出错(第 58 行)
原因: 使用 distcomp.remoteparfor/getCompleteIntervals 时出错
当我在没有 parfor 的情况下执行代码时,它工作正常。
完整代码如下
Fw = cell(15,1);
Wi = cell(15,1);
tmp = cell(15,1);
for i = 1 : 15
Fw{i,1} = randn(25344);
Wi{i,1} = randn(12672);
theta(i) = 10;
end
var1 = randn(25344,12672);
var2 = randn(12672,25344);
parfor i = 1:15
tmp{i,1} = theta(i) * Fw{i,1}' * var1 * Wi{i,1} * var2 * Fw{i,1} ;
end
【问题讨论】:
-
该方法是我希望您的客户阻止等待结果从工作人员返回的地方。你有我们可以尝试的复制步骤吗?您正在运行哪个版本的 MATLAB?您使用的是什么集群类型?您打开了多大的 matlabpool?
-
我使用的 matlab 版本是 8.2.0.701 (R2013b)。 Matlabpool 包含 12 个工人
-
好的。你有我们可以尝试的复制品吗?
-
你能澄清一下你所说的复制是什么意思吗?
-
我们可以实际运行的一些代码会重现问题。 sscce.org
标签: matlab parallel-processing