Fluent仿真是否应该开启超线程技术,选cpu是考虑主频高,还是核心多,本文做一个简单测试。
案例:一个网格数1.4m的三维模型,进行LES计算,由于计算较慢,跑完太耗时间,仅测试相同工况下,先计算20个时间步长耗时,再计算每个时间步长平均耗时(每个时间步20次迭代)。
测试cpu:3900xt,12c24t。
测试一:开启超线程,并行计算24线程拉满,cpu默认频率4.1GHz左右,平均下来44s/时间步长;
测试二:开启超线程,并行计算12线程(实际物理核数目),cpu默认频率4.1GHz左右,平均下来47s/时间步长;
测试三:关闭超线程,并行计算12核心拉满,cpu默认频率4.1GHz左右,平均下来48.2s/时间步长;
测试四:关闭超线程,串行计算1核心,cpu默认频率4.1GHz左右,平均下来7min/时间步长;
测试五:开启超线程,并行计算24线程拉满,cpu超频到4.25GHz,平均下来44.1s/时间步长;
测试六:开启超线程,并行计算24线程拉满,cpu超频到4.3GHz,平均下来43.1s/时间步长;
结论:
Fluent 18.2以后取消了真正的串行计算,现在版本的串行计算其实是一个核的并行了。网上一种说法,网格少时用串行减少核心间数据通信时间效率更高,不可信。
网上一种说法,CFD计算尽量关闭超线程,以物理核心进行计算。这种说法有一定道理,包括很多OpenFOAM教程,都建议关闭超线程。但实际结果,至少说明本cpu开启超线程更有优势。
核心数目对CFD计算影响很大,特别是20线程以内,提升巨大,在提升到40线程,效果提升越来越慢(网上相关测试);
主频对计算影响较小,多超0.2Ghz,cpu性能提升5%左右,Fluent计算效率提升2-3%,完全是在挤牙膏。4GHz左右的频率做CFD应该够了,在提升频率没什么大作用了,反而对散热成了大问题。但是,可以想象,3GHZ的主频和4GHz应该是有较大的差距的。
总结:
cpu,当然是越贵越好!线程撕裂者64c128t,个人生产力首选,其次再是3950x这类,Intel的cpu主频高打游戏首选,但CFD更吃核心数,AMD性价比更高。志强系列,高端的面向服务器,太贵,低端的洋垃圾核心多,主频太低,但架不住便宜和核心多,也是可选方案。买中端的Intel cpu,对于CFD计算而言,应该是最没有性价比的。