☰ 目录

如何实现多个仿真任务批量化运行?

问题描述

在进行多个仿真项目时,需要在前一个仿真完成后手动启动下一个项目,这不仅效率低下,还容易出现操作遗漏。我希望能实现仿真任务的批量化运行。

可能的原因

软件提供Jobs功能,用户可将需要运行的仿真任务添加到Jobs序列中并运行,或者使用脚本命令runjobs运行当前队列任务。

解决方案

问题排查

用户需了解并掌握Jobs功能的基本用法。

解决方法

在软件中实现排队计算有以下两种方式:

1. 通过软件Jobs选项卡直接设置仿真队列。

点击 Resources 可设置仿真的最大并行线程数。如下图所示,当将 Maximum simulation threads of parallel 设置为2时,仿真工程会以每组2个任务的方式并行运行。

2. 使用脚本命令设置仿真队列,主要涉及addjobrunjobs命令,具体用法可参考Job Management

Code Function
runjobs; 在当前工程现有(活动)求解器的仿真队列中依次运行仿真任务。若未打开工程,默认使用FDTD求解器队列。
runjobs('solver_type', parallel_set) 在指定求解器的仿真队列中运行任务。parallel_set=0:以单进程模式运行任务。parallel_set=1:使用Jobs页面设置的并行数量来运行任务。

以下脚本示例展示了如何使用addjobrunjobs命令实现参数扫描。使用saveproject保存多个不同参数的工程文件,利用for循环将工程文件添加到Jobs队列,并依次运行仿真。

addcircle;
addfdtd;
rad=[1:0.5:3].*1e-6;
for i=1:length(rad)
    setnamed('Circle','radius',rad(i));
    saveproject('D:/new_project/circle/'+'circle'+num2str(i));
    addjob('D:/new_project/circle/'+'circle'+num2str(i),'FDTD');
end
runjobs;

当前Jobs功能在SimWorks Finite Difference Cloud Client客户端可免费试用,用户仅需支付服务器计算费用,相关工程结果将保存在云端。SimWorks Finite Difference Solutions客户端需用户获得Jobs功能授权后方可使用。已完成的仿真结果会自动覆盖原工程。

相关阅读

Job Management