在进行多个仿真项目时,需要在前一个仿真完成后手动启动下一个项目,这不仅效率低下,还容易出现操作遗漏。我希望能实现仿真任务的批量化运行。
软件提供Jobs功能,用户可将需要运行的仿真任务添加到Jobs序列中并运行,或者使用脚本命令runjobs
运行当前队列任务。
用户需了解并掌握Jobs功能的基本用法。
在软件中实现排队计算有以下两种方式:
1. 通过软件Jobs选项卡直接设置仿真队列。
点击 Resources 可设置仿真的最大并行线程数。如下图所示,当将 Maximum simulation threads of parallel 设置为2时,仿真工程会以每组2个任务的方式并行运行。
2. 使用脚本命令设置仿真队列,主要涉及addjob
,runjobs
命令,具体用法可参考Job Management。
Code | Function |
---|---|
runjobs; |
在当前工程现有(活动)求解器的仿真队列中依次运行仿真任务。若未打开工程,默认使用FDTD求解器队列。 |
runjobs('solver_type', parallel_set) |
在指定求解器的仿真队列中运行任务。parallel_set=0:以单进程模式运行任务。parallel_set=1:使用Jobs页面设置的并行数量来运行任务。 |
以下脚本示例展示了如何使用addjob
和runjobs
命令实现参数扫描。使用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功能授权后方可使用。已完成的仿真结果会自动覆盖原工程。