在我的Matlab脚本中,我运行了一个带有for
循环的算法,其中,在每次迭代中,我需要进行梯度下降。所有梯度下降都是独立的。这是我的脚本的结构:
for i=1:p
x=gradient_descent(x_init,grad_g,opts(i));
end
其中opts(i)
是包含梯度下降所必需的变量的结构。在这种情况下,$ p = 145 $。我的脚本在我的机器上运行$ 8 $秒(不使用任何并行技巧)。
我的印象是我的脚本可以并行化,因为每个梯度都是独立的。当我在计算机上取消matlabpool
时,我最多可以使用4个实验室。同时,每个实验室都可以运行梯度下降,而不是一次做一个梯度下降,我可以做4.但我不知道如何并行化我的脚本。根据我在互联网上发现的内容,我可以使用batch
功能,对吗?
答案 0 :(得分:4)
我认为这应该有效:
parfor i=1:p
x{i}=gradient_descent(x_init,grad_g,opts(i));
end