本帖最后由 激发态的Xe 于 2025-5-7 20:42 编辑
在sob老师的《正确认识超线程(HT)技术对计算化学运算的影响》一文中我们知道"对于具有HT技术的有N个物理核心的CPU,跑计算化学程序时,一般来说最佳使用方式是:开着HT,但把并行核数设为N。"
故本人在计算时一直使用“%nproc=N",但由于近期气温升高本人的9950X一直会高温死机,但由于频率和功耗都是正常范围,故在更换新主板B850M和瓦尔基里360水冷后还是会高温死机(核心温度超过115℃),又在和商家寄回CPU检测无问题后开始进一步排查,发现在window系统下(win11工作站版)运行Gaussian使用%nproc=16会出现CCD0与CCD1温差超过30℃!例如CCD0已经100℃了,CCD1才70℃,但是CPU功耗又有210W(在该CPU核心频率下用其他软件如CPU-Z、AIDA64烤机也只有200多瓦但两CCD温差不超过2℃),所以一直以为是window的调度问题。
但本人再次仔细研究AMD的CCD后,开始了以下测试,得出的结论是,高端AMD 非单CCD CPU使用%nproc=n,只会使一个CCD满载即使用n/2个物理核数和n个逻辑核心!
以下是测试内容和有关CCD介绍内容:
AMD的CPU是通过一个一个CCD拼起来的,比如现在的Zen5架构的9000系列CPU,一个CCD是包含8个物理核心,两个完整未损坏CCD拼起来就是16核的9950X,一个完整未损坏CCD就是8核9700X,一个完好一个损坏CCD拼起来就是9800X,一个损坏CCD就是9600X,而撕裂者系列也是通过n个CCD拼起来的,故戏称AMD为胶水U。
具体测试内容:
Gaussian16 A.03 9950X 64GB CPU定频5.15GHz 以下测试都没关闭超线程,出现的时间是计算均三甲基苯的单点能,M062X/Def2-TZVP ,使用AIDA64 检测CCD温度(AIDA64在图吧工具箱里有,搜索图吧工具箱即可)
关键词 CPU做高使用率
%nproc=16 51% 62s
%nproc=8 26% 101s
%nproc=32 100% 47s 大体系下功耗会超过300W,此时的功耗为220W
%nproc=32/2 95%(大体系能到100%) 47s
%cpu=0-7 26% 121s
%cpu=0-15 使用率50% 68s
%cpu=16-23 26% 120s
%cpu=16-31 50% 67s
%cpu=0-31 报错,输出空白文档,Gaussian界面空白 %cpu=0-31/2 报错
%cpu=0-16/2 26% 84s
%cpu=0-15/2,16-31/2 51% 49s
超线程会极大的增加发热量,故可以尝试在高斯里关闭超线程外加在Bios里拉高CPU频率,我手上只有一颗双CCD的CPU,论坛的其他各位老师同学若是有其他型号的CPU可以试试我说的看看使用%nproc=n并打开温度检测软件,看看是不是也是只有一个CCD在运行(注:需要用AIDA64的传感器选项,其他温度检测软件只会记录温度最高的那个CCD,是看不出来其他CCD有没有运行的!) 在计算我课题的较大体系时 5.15GHz 使用%nproc=16 %npro=32、%nproc=32/2 都会超过115℃自动关机,使用%cpu=0-15/2,16-31/2 可使最高温度降低至90℃并保持平均温度维持在90℃左右。 |