主要内容

何时并行运行统计函数

为什么并行运行?

并行运行统计计算的主要原因是提高速度,即减少程序或函数的执行时间。影响速度的因素讨论影响程序或函数速度的主要项目。影响结果的因素讨论可能导致并行运行与串行运行给出不同结果的细节。

请注意

一些Statistics和Machine Learning Toolbox™函数具有内置的并行计算能力。看到统计和机器学习工具箱的快速启动并行计算.您还可以使用任何统计和机器学习工具箱函数与并行计算工具箱™函数,如parfor循环。要决定何时并行调用函数,请考虑影响速度和结果的因素。

影响速度的因素

影响并行处理执行速度的一些因素包括:

  • 并行环境设置。跑步需要时间parpool并行地开始计算。如果您的计算速度很快,那么设置时间可能会超过并行计算所节省的时间。

  • 并行开销。并行运行时,通信和协调方面存在开销。如果函数的计算速度很快,那么这个开销将占总计算时间的相当一部分。因此,并行地解决问题可能比串行地解决问题要慢。例如,请参见通过并行计算提高优化性能在MATLAB®消化,2009年3月。

  • 没有嵌套parfor循环。这在与parfor合作parfor当从另一个内部调用时不能并行工作parfor循环。如果您已经将您的自定义函数编程为利用并行处理,则没有嵌套的限制parfor循环会导致并行函数的运行速度低于预期。

  • 当串行执行,parfor循环的运行速度略慢于循环。

  • 传递参数。在执行并行计算期间,参数会自动传递给worker会话。如果有很多参数,或者它们占用大量内存,传递参数会减慢计算的执行。

  • 资源竞争:网络和计算。如果工作者池具有低带宽或高延迟,并行计算可能会很慢。

影响结果的因素

在使用并行处理时,有些因素会影响结果。您可能需要调整代码以并行运行,例如,您需要独立的循环,并且工作人员必须能够访问变量。一些重要的因素是:

  • 持久变量或全局变量。如果任何函数使用持久变量或全局变量,这些变量可以在不同的工作处理器上取不同的值。身体parfor循环不能包含全局或持久变量声明。

  • 访问外部文件。在并行处理过程中,不能保证计算的顺序,可能会以不可预测的顺序访问外部文件,导致不可预测的结果。此外,如果多个处理器试图同时读取一个外部文件,该文件可能会被锁定,导致读取错误,并停止函数执行。

  • 非计算函数,例如输入情节,键盘,在您的自定义函数中使用时可能会表现不良。不要在aparfor循环,因为它们会导致工作进程变得无响应,因为它正在等待输入。

  • parfor不允许打破返回语句。

  • 你使用的随机数会影响你的计算结果。看到并行统计计算中的再现性

有关转换For循环以使用的建议parfor,请参阅并行for循环(parfor)(并行计算工具箱)