问题Parfor Implemenation
3视图(30天)
显示旧的评论
你好,
我新的并行计算和我试图并行化(相对密集的)代码,使它运行得更快。然而,我面临很多问题,我不能够地址。的代码如下:
%初始猜测政策功能
c_pol = max (cmin r * 1(年代,1)* b_grid);
c_poli = c_pol;%的下一个迭代
%猜V_t + 1
负载CRRA.mat%加载c_pol和n_pol CRRA在原始GL代码(开始前检查线终端党卫军部分)
v_pol = (1 / (1-bet)) * (c_pol。^ (1-gam) / (1-gam)) + pssi * (((1-n_pol)。^ (1-eta)) / (1-eta));
v_poli = v_pol;%的下一个迭代
dif = 1;
而dif > tol_pol
ui =公关* (((-v_pol)。^ (t1)。* (c_pol。^ (gam)));
ui = ui (:, b_grid > =φ);
v_u =公关* ((-v_pol)。^(1α));
v_un = v_u (:, b_grid > =φ);
v_con = v_u (:, b_grid <φ);
为s = 1: s% %这里我需要并行化
c = ((1 + r) *注* ((v_un(年代,:))。^(α/(1α)。* ui(年代,:)))。^ (1 / gam);
n = max (0,1 - fac (s) * c。^ gameta);
b = b_grid (b_grid > =φ)/ (1 + r) + c -θ(s) * n - z(年代);
v = c。^ (1-gam)。* ((1 / (1-gam))) + pssi *(((其它)。^ (1-eta)) / (1-eta)) -赌* ((v_un(年代,:))。^(1 /(1α)));
如果(1)>φ
c_c = linspace (cl (s), c (1), Ic);% * * *
n_c = max (0, 1 - fac (s) * c_c。^ gameta);
b_c =φ/ (1 + r) + c_c -θ(s) * n_c - z (s);
六世= cl (1,1) ^ (1-gam)。* ((1 / (1-gam))) + pssi * (((1-n_c)。^ (1-eta)) / (1-eta)) -赌* ((v_un(1,1))。^(1 /(1α)));
v_c = linspace(六世(1),v (1), Ic);
b = [b_c (1: Ic-1), b];
c = [c_c (1: Ic-1), c);
v = [v_c (1: Ic-1), v);
结束
c_poli(年代)= interp1 (b, c, b_grid,“线性”,“extrap”);%真实c_t + 1
v_poli(年代)= interp1 (b, v, b_grid,“线性”,“extrap”);%真实v_t + 1
v_poli (v_poli > 0) = 1 e-6;
结束
%检查收敛性
c_poli = max (c_poli cmin);
v_poli = min (v_poli cmin);
dif1 = max (max (abs (c_poli - c_pol)));
dif2 = max (max (abs (v_poli-v_pol)));
dif = max ([dif1 dif2]);
%更新
c_pol = c_poli;
v_pol = v_poli;
结束
尝试使用“parfor”我得到以下错误“无法分类变量v_poli parfor-loop身体的”,我不知道如何解决。
任何帮助将不胜感激
0评论
接受的答案
沃尔特·罗伯森
2021年6月19日
改变
v_poli(年代)= interp1 (b, v, b_grid,“线性”,“extrap”);%真实v_t + 1
v_poli (v_poli > 0) = 1 e-6;
来
v_polis = interp1 (b, v, b_grid,“线性”,“extrap”);%真实v_t + 1
v_polis (v_polis > 0) = 1 e-6;
:v_poli (s) = v_polis;
否则你要测试
所有
v_poli()包括行是由其他循环迭代。