Main Content

Optimization Toolbox 中使用并行计算

使用多核处理器执行并行计算

如果您有多核处理器,可以通过使用并行处理来提高处理速度。您可以使用一个 Parallel Computing Toolbox™ 许可证建立由多个工作进程组成的并行池。有关 Parallel Computing Toolbox 软件的描述,请参阅 Get Started with Parallel Computing Toolbox (Parallel Computing Toolbox)

假设您有双核处理器,并且要使用并行计算。请在命令行中输入以下代码。

parpool

MATLAB® 会启动使用多核处理器的工作进程池。如果您之前设置了非默认集群配置文件,则可以通过输入以下代码来实现多核(本地)计算。

parpool('local')

注意

根据您的预设项,MATLAB 可以自动启动并行池。要启用此功能,请在主页选项卡上的环境组中选择 Parallel > Parallel Preferences,然后选择 Automatically create a parallel pool

设置求解器选项以使用并行计算。

options = optimoptions('solvername','UseParallel',true);

使用 options 运行适用的求解器时,适用的求解器会自动使用并行计算。

要停止并行计算优化,请将 UseParallel 设置为 false。要停止所有并行计算,请输入以下代码。

delete(gcp)

注意

文档建议在调用 Simulink® 时不要使用 parforparfeval;请参阅Using sim Function Within parfor (Simulink)。因此,在使用求解器的内置并行功能并行优化 Simulink 仿真时,可能会遇到问题。

在多处理器网络中使用并行计算

如果网络上有多个处理器,请使用 Parallel Computing Toolbox 函数和 MATLAB Parallel Server™ 软件来建立并行计算。

请确保您的系统针对并行计算进行了正确配置。请咨询系统管理员,或参考 Parallel Computing Toolbox 文档。

  1. 通过输入以下代码执行基本检查,其中 prof 是您的集群配置文件。

    parpool(prof)
  2. 工作进程必须能够访问您的目标函数文件,以及(如果适用)您的非线性约束函数文件。完成以下步骤之一以确保可以访问:

    • 使用 parpool (Parallel Computing Toolbox) AttachedFiles 参量将文件分发给工作进程。在此示例中,objfun.m 是您的目标函数文件,constrfun.m 是您的非线性约束函数文件。

      parpool('AttachedFiles',{'objfun.m','constrfun.m'});

      工作进程可以访问它们自己的文件副本。

    • 给出目标或约束函数文件的网络文件路径。

      pctRunOnAll('addpath network_file_path')

      工作进程通过网络访问函数文件。

  3. 检查文件是否在每个工作进程的路径中。

    pctRunOnAll('which filename')
    如果任一工作进程没有该文件的路径,则它会报告
    filename not found.

设置求解器选项以指定使用并行计算。参量 'solvername' 表示支持并行计算的非线性求解器。

options = optimoptions('solvername','UseParallel',true);

建立并行计算环境后,只要您使用 options 调用适用的求解器,它们就会自动使用并行计算。

要停止并行计算优化,请将 UseParallel 设置为 false。要停止所有并行计算,请输入以下代码。

delete(gcp)

注意

文档建议在调用 Simulink 时不要使用 parforparfeval;请参阅Using sim Function Within parfor (Simulink)。因此,在使用求解器的内置并行功能并行优化 Simulink 仿真时,可能会遇到问题。

测试并行计算

按照以下步骤进行操作,以测试您的问题是否能以并行方式正确运行。

  1. 在不使用并行计算的情况下尝试运行您的问题,以确保它以串行方式运行。在进行下一个测试之前,需确保此测试成功(给出正确的结果)。

  2. UseParallel 设置为 true,并通过输入 delete(gcp) 确保不存在并行池。要确保 MATLAB 不会创建并行池,请在主页选项卡上的环境组中选择 Parallel > Parallel Preferences,然后清除 Automatically create a parallel pool。您的问题将以串行方式运行 parfor,循环迭代顺序与 for 循环相反。在进行下一个测试之前,需确保此测试成功(给出正确的结果)。

  3. UseParallel 设置为 true,并使用 parpool 创建一个并行池。除非您有多核处理器或网络设置,否则此测试不会提高处理速度。此测试只简单用于验证计算的正确性。

请记住使用 options 参量调用您的求解器来测试或使用并行功能。

相关主题