MATLAB 错误 "The variable in a parfor cannot be classified."
MATLAB parfor error "The variable in a parfor cannot be classified."
我正在尝试 运行 使用 Matlab 中的并行计算工具箱 (PCT) 并行作业。我想并行 运行 的 Matlab 代码如下所示:
I=100000;
a=[-4 0.2 0.3 0.4 0.2;
-3 0.7 1.8 1.4 1.1];
beta=[0.2 0.3];
c=randi([0 3],I);
S=zeros(1,I);
parfor i=1:1:I
S(1,i)=1;
meanPr=a(S(1,1),:);
D=1/(1+exp(-(repmat(meanPr(1),1,1) + beta(1,1)*c(1,i))));
r=rand(1,1);
D(D>r)=1;
D(D<1)=0;
P(1,i)=D;
xyw(1,i)=poissrnd(meanPr(1,2),1,1);
end
我收到以下错误:
The variable S in a parfor cannot be classified.
See Parallel for Loops in MATLAB, "Overview".
我的理解是上述代码中的循环是独立的。知道为什么我会收到此错误以及如何解决它吗?
您在每次迭代中都使用了 S(1,1)
。这是不可能的,因为它在第一次迭代(写入 S(1,1)
)和所有进一步的迭代(读取 S(1,1)
)
之间添加了依赖关系
s(1,1)
是问题,在并行循环之前完全分配 s
。
我正在尝试 运行 使用 Matlab 中的并行计算工具箱 (PCT) 并行作业。我想并行 运行 的 Matlab 代码如下所示:
I=100000;
a=[-4 0.2 0.3 0.4 0.2;
-3 0.7 1.8 1.4 1.1];
beta=[0.2 0.3];
c=randi([0 3],I);
S=zeros(1,I);
parfor i=1:1:I
S(1,i)=1;
meanPr=a(S(1,1),:);
D=1/(1+exp(-(repmat(meanPr(1),1,1) + beta(1,1)*c(1,i))));
r=rand(1,1);
D(D>r)=1;
D(D<1)=0;
P(1,i)=D;
xyw(1,i)=poissrnd(meanPr(1,2),1,1);
end
我收到以下错误:
The variable S in a parfor cannot be classified. See Parallel for Loops in MATLAB, "Overview".
我的理解是上述代码中的循环是独立的。知道为什么我会收到此错误以及如何解决它吗?
您在每次迭代中都使用了 S(1,1)
。这是不可能的,因为它在第一次迭代(写入 S(1,1)
)和所有进一步的迭代(读取 S(1,1)
)
s(1,1)
是问题,在并行循环之前完全分配 s
。