我在闪亮的服务器上使用MATLAB的并行工具箱(32个物理内核,64个逻辑,512GB RAM)。我所有的并行化需求都可以归类为“令人尴尬的并行”,例如:
parfor i_par = 1:n_tot
[CalcOutputs_array(:,:,i_par), AdvancedCalcOutputs_array(i_par)] = CPU_DemandingFunction(InputsStruct_array(i_par));
end
为了最大限度地减少开销,我已经将输入分开,以便每个工作人员只接收所需的内容。
然而,输出可能会变得非常大(1GB-10GB),而且工作人员的数据收集对计算本身的影响非常大。
我很肯定是这种情况,因为通过降低从函数输出的数据量(我有一个控制它的标志) - 运行时间改进因子接近使用的核心数#i
可以改进吗?数据收集开销是否有任何补救措施?