主要内容

何时并行运行统计函数

为什么要并行运行?

并行运行统计计算的主要原因是为了提高速度,这意味着减少程序或函数的执行时间。影响速度的因素讨论影响程序或函数速度的主要项目。影响结果的因素讨论可能导致并行运行与串行运行产生不同结果的详细信息。

请注意

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

影响速度的因素

影响并行处理执行速度的因素有:

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

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

  • 没有嵌套parfor循环。这在使用parforparfor当从另一个内部调用时,不并行工作parfor循环。如果您已经编写了自定义函数来利用并行处理,则没有嵌套的限制parfor循环会导致并行函数比预期的运行速度慢。

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

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

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

影响结果的因素

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

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

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

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

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

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

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