FDTD仿真提高工作站性能
目录
- 性能测试
- 11.25号更新:若进行参数扫描,则其实还要更改capacity,能够极致利用多CPU、大内存工作站的性能进行多个任务并发运算!
- fdtd仿真需要多次迭代模型,和comsol很不一样。
- 在windows中,除非要gpu加速,否则就应该用2020版的fdtd,而不是2024版,因为对2024版,当comsol和fdtd存在时,工作站会优先把几乎所有cpu给comsol,fdtd就特别慢。而2020版没这个问题。
性能测试
问题:对lumerical fdtd软件,为什么在https://optics.ansys.com/hc/en-us/articles/4403780894355-FDTD-Performance-Benchmarks网页中,使用Intel Xeon Scalable 8375C 2.9GHz、64cores、256GB RAM的高性能工作站能够获得2106.1 mNodes/s的求解器速度,我自己的高性能工作站为Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz 3.50 GHz (2 个处理器),64cores,1064GB内存,只跑一个光子晶体激光器的四能级两电子模型的仿真,在fdtd软件中,我的processes设为38,threads设为1,结果速度才270 mNodes/s,CPU占用就30%. 和官网给出的求解器速度相比,我的慢了快10倍,我不知道是为什么?你能告诉我答案吗?请仔细搜索各种中英文网页和文献再回答,用中文回复
以下所参考的测试速度的方法见:https://blog.csdn.net/weixin_49613620/article/details/143775283 【当工作管理器中的状态指示模拟已完成初始化和网格划分,并且处于“正在运行”状态时,点击退出并保存。(注意,不用等到仿真结束)】
2号机 64核 128处理器,以下是只有一个fdtd任务时。【若有两个fdtd任务或其他很多人在跑comsol,也会变慢】
- 进程38 线程1:速度:178 mnode/s
- 进程16 线程4:在很多人跑的情况下: total FDTD solver speed on 16 processes: 342.338 Mnodes/s 运行时间16小时
- 进程64 线程1:142 mmode/s
- 进程32 线程4 316.28 mmode/s
- 进程32 线程2 total FDTD solver speed on 32 processes: 369.269 Mnodes/s【这个很节约内存和核】
- 进程8 线程8 285 mmode/s
FDTD solver speed on process 0: 35.6628 Mnodes/s total FDTD solver speed on 8 processes: 285.302 Mnodes/s
- 进程4 线程16 total FDTD solver speed on 4 processes: 252.204 Mnodes/s
- 进程2 线程32
- 进程16 线程8 total FDTD solver speed on 16 processes: 373.867 Mnodes/s
- 进程20 线程2 total FDTD solver speed on 20 processes: 330.873 Mnodes/s
- 进程20 线程6 total FDTD solver speed on 20 processes: 389.55 Mnodes/s
- 进程24 线程5
- 进程18 线程7 total FDTD solver speed on 18 processes: 349.634 Mnodes/s
- 进程16 线程6 total FDTD solver speed on 16 processes: 367.029 Mnodes/s
综上,对这种光子晶体激光器,都用进程20 线程6
- 注意始终保持进程x线程小于等于128
对3和4号机,linux,128个处理器(实际核0
在三号机和四号机上成功安装了FDTD的linux版本。【安装很困难,解决了很多bug】
当process=20、thread=6时,运行速度达到574 mnode/s(并且是有其他comsol程序在运行时), 而2号机最高运行速度就396 mnode/s.
linux确实运行速度更快。
1号机 56核 112个处理器
- 进程30,线程1:速度231 mnode/s
- 进程14 线程4 total FDTD solver speed on 14 processes: 333.502 Mnodes/s
- 进程28 线程2 total FDTD solver speed on 28 processes: 173.575 Mnodes/s
- 进程8 线程7 total FDTD solver speed on 8 processes: 227.034 Mnodes/s
- 进程18 线程6 total FDTD solver speed on 18 processes: 367.507 Mnodes/s
- 进程22 线程5 total FDTD solver speed on 22 processes: 383.947 Mnodes/s
- 进程16 线程7 total FDTD solver speed on 16 processes: 313.542 Mnodes/s
- 进程7 线程8
- 进程4 线程14
- 进程2 线程24
综上,对这种光子晶体激光器,都用进程22 线程5
自己电脑 内存8
- 进程6 线程1: total FDTD solver speed on 6 processes: 76.3556 Mnodes/s
- 进程2 线程4:
- 进程4 线程2 total FDTD solver speed on 4 processes: 79.873 Mnodes/s
- 进程8 线程1
- 线程1 进程8
- 进程2 线程3
- 进程8 线程2 total FDTD solver speed on 8 processes: 95.2849 Mnodes/s
- 进程5 线程3 total FDTD solver speed on 5 processes: 96.4523 Mnodes/s
- 进程4 线程4 total FDTD solver speed on 4 processes: 93.029 Mnodes/s
综上,对这种光子晶体激光器,都用进程5 线程3
注意以上仿真都是在别人也都在用1、2号机的情况下。若别人没有在用,速度可以再提高两百mnode/s
11.25号更新:若进行参数扫描,则其实还要更改capacity,能够极致利用多CPU、大内存工作站的性能进行多个任务并发运算!
官网有提到这点。
对1号机
- 进程22 线程5 capacity2: total FDTD solver speed on 22 processes: 579.763 Mnodes/s【在只有我一个人,就一个任务,cpu占用达到50%】
- 进程22 线程5 capacity1: total FDTD solver speed on 22 processes: 597.791 Mnodes/s【只有一个任务】
- 进程22 线程5 capacity2:total FDTD solver speed on 22 processes: 290.025 Mnodes/s 【存在两个fdtd任务时,这是第二个fdtd任务的速度】
当分别提交两个模型时,cpu占用率会上升,也就是说两个模型会进行并发运算。所以不需要设置capacity。
- 若不进行参数扫描,而是一个模型一个模型提交,就不需要设置capacity,因为我测试过,当分别提交两个模型时,cpu占用率会上升,也就是说两个模型会进行并发运算。所以不需要设置capacity。 官网也是说在参数扫描时才需要设置capacity,这样多个扫描可以同时运行。
fdtd仿真需要多次迭代模型,和comsol很不一样。
迭代网格、迭代软件中进程和线程设置(何时速度最快)、迭代不同泵浦强度下的峰值波长偏移量
对不同结构的模型,不一定是按上面测试得到的进程和线程速度最快,都需要临时测试【官网说的】。网格也是要临时测试。
在windows中,除非要gpu加速,否则就应该用2020版的fdtd,而不是2024版,因为对2024版,当comsol和fdtd存在时,工作站会优先把几乎所有cpu给comsol,fdtd就特别慢。而2020版没这个问题。
这与软件绑定电脑core有关。还是要用2020版
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架