主要内容

用并行计算提高性能

影响速度的因素

一些因素可能会影响并行处理的执行速度:

  • 并行开销。电话费是经常性的parfor而不是.如果函数的计算速度很快,那么这个开销可能会非常可观。特别是,并行解决问题可能比串行解决问题要慢。

  • 没有嵌套parfor循环。这在嵌套并行功能parfor从另一个内部调用时不并行工作吗parfor循环。如果你已经编程了你的目标函数或约束函数来利用并行处理的优势,那么没有嵌套的限制parfor循环可能导致求解器的运行速度比预期的要慢。特别地,有限差分的并行计算优先,因为那是一个外循环。这会导致目标函数或约束函数中的任何并行代码串行执行。

  • 当串行执行,parfor循环运行的速度比循环。因此,为了获得最佳性能,请确保只有最外层的并行循环调用parfor.例如,假设您的代码调用fmincon在一个parfor循环。在这种情况下,要获得最佳性能,请设置fminconUseParallel选项

  • 传递参数。在执行并行计算时,参数自动传递给工作机器。如果有大量的参数,或者它们占用大量的内存,传递它们可能会降低计算的执行速度。

  • 资源的争夺:网络和计算。如果工作机器的网络具有低带宽或高延迟,计算速度可能会变慢。

影响结果的因素

当使用并行处理时,一些因素可能会影响数值结果。还有更多有关的注意事项parfor中列出的并行for循环(parfor)(并行计算工具箱)

  • 持久变量或全局变量。如果目标函数或约束函数使用持久变量或全局变量,这些变量在不同的工作处理器上可能具有不同的值。此外,它们可能无法在工作处理器上正确清除。求解器可能抛出尺寸不匹配等错误。

  • 访问外部文件。在并行计算期间,外部文件可能以不可预测的方式访问。在并行处理过程中,计算的顺序不能保证,因此外部文件可能以不可预知的顺序访问,导致不可预知的结果。

  • 访问外部文件。如果两个或多个处理器试图同时读取一个外部文件,该文件可能会被锁定,导致读取错误,并停止优化的执行。

  • 如果你的目标函数调用Simulink®,结果可能是不可靠的平行梯度估计。

  • 非计算函数,例如输入,情节,键盘,在目标函数或约束函数中使用时可能表现不好。当被叫到parfor循环中,这些函数在工作机器上执行。这可能导致工作线程变得无响应,因为它正在等待输入。

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

正在搜索全局优化

为了寻找全局最优,一种方法是从不同的初始点对求解器进行评估。方法将这些计算分布到多个处理器上parfor函数,禁用并行梯度估计,因为parfor循环不能嵌套。如果您将计算分布到所有处理器上,而不是通过并行梯度估计串行地运行它们,那么优化通常会运行得更快,因此禁用并行估计可能不会降低计算速度。但是,如果处理器数量多于初始点,则不清楚是分配初始点更好,还是启用并行梯度估计更好。

如果你有全局优化工具箱许可证,您可以使用MultiStart(全局优化工具箱)并行检查多个起点的求解器。看到并行计算(全局优化工具箱)而且平行MultiStart(全局优化工具箱)

相关的话题

Baidu
map