转 HPL浮点性能测试:你这数据有亿点问题啊(含龙芯跑分不正常结果)

360影视 2025-01-16 10:13 2

摘要:最近在学习使用HPL测试机器的浮点性能,遇到一些错误的时候在网上搜索资料,偶然间发现了这么一篇文章,下图是部分截图。

原作者:pp酱_ppchan​

编辑于 2025年01月15日 21:53

最近在学习使用HPL测试机器的浮点性能,遇到一些错误的时候在网上搜索资料,偶然间发现了这么一篇文章,下图是部分截图。

某文章的截图

只能说这张表格有点儿意思,让我来评价啰嗦一番(你有什么资格评论?你有资质吗??)

什么是PST?什么是HPL?

PST全称Phoronix Test Suite,是一个开源、自动的测试化套件,而HPL是High Performance Linpack,用于在分布式存储计算机上以双精度(64 位)算法解决(随机)密集线性系统。

这个表格有什么问题?

1、PTS测试套件的HPL标注了自动生成的HPL.dat是实验性质的,直接拿来用不合适吧?

HPL.dat配置文件关系到测试成绩,关键参数:N, NB, P, Q。

N的大小与内存相关,N越大,分数越高,但相应内存也占用越大,一般设置为全部内存的80%以上;NB的分块,越小负载平衡越好,但是会限制性能,一般256以下;P,Q对应行数和列数,它的大小和核心数有关,乘积=CPU数量。

这些参数设置不合理,跑出的成绩可差距很大。

2、PTS里面的HPL调度有时候不太行。

例如在双模块四线程老APU上的,会默认分配两个线程(P=1 Q=2,合理,毕竟只有两个浮点单元),但它却把两个线程放在同一个模块上的两个核心来运行,就会造成结果严重偏低,甚至低于单线程。只能通过手动指定核心,让两个线程在不同的模块上。

在ARM平台,由于簇的不同,甚至出现8核心还不如4核心的情况。

支持超线程的平台关闭超线程还会带来提升。

测试结果还关系到指令集,SSE4,AVX/AVX2,AVX512,这几个处理起FP64可不一样。不手工优化一些机器跑不出真实水平。

3、表中的R5 5600G水平严重偏低

理论峰值水平:核心数X频率X每个内核每个时钟周期的浮点运算次数

这个每周期操作数网上可查,关键词:“Floating point operations per clock cycle per core”

牢英

牢A

那么AMD R5 5600G的峰值浮点(FP64)是多少呢?按照给出的4.2GHz来算

6x4.2x16 = 403.2 GFLOPS

表中给的不到76真的很有问题,就算是再怎么拉也不至于这么拉。

Haswell的E3 1220 V3都能跑到 146GFLOPS,它的理论峰值(有睿频,但是AVX负载下只有3.1GHz)为198.4GFLOPS,它的效率为74%。

下面是测试的截图,结果为145.5GFLOPS。

难道6核心的5600G还不如四核心的1220V3?

Github上有位老哥测试的3.7G下的5600x的成绩(偏低),作为兄弟的5600G怎么也不至于是两位数吧。地址:https://github.com/geerlingguy/top500-benchmark?tab=readme-ov-file#results

4、我既没有5600G也没有3A5000,只能说怀疑这个分数不正常。

我测试过3A3000@1.45G,它的单线程为4.99GFLOPS,多线程为16.27GFLOPS。这不是最优,官方宣传峰值性能为24GFLOPS@1.5GHz,我这个频率低点,为23.3,单线程跑到了理论的86%,多线程为70%,算是不错了。

24GFLOPS可不是我瞎说的嗷,白皮书上写着呢。

按照下面官网的数据,如果是完整的256位浮点单元的话(特殊的参考zen1),一周期内可以操作16个FP64,那么3A5000的理论峰值为4x2.5x16,也就是160GFLOPS,如果对标3A3000的多线程效率,多线程结果得112GFLOPS,实际测试看第一张图吧,不到55,也太低了吧。

在测试中发现的一些影响测试成绩的因素

硬件层面:内存频率、通道数、CPU散热和供电

软件层面:系统调度(ondemend、performance、powersave等)、Boost开关

一些命令

PTS运行HPL:phoronix-test-suite benchmark hpl

PTS套件里面的HPL执行文件和配置文件的路径(手动执行时需要):

Debian下:/var/lib/phoronix-test-suite/installed-tests/pts/hpl-1.0.0/hpl-2.3/testing

Ubuntu下:./home/[USER]/.phoronix-test-suite/installed-tests/pts/hpl-1.0.0/hpl-2.3/testing

测试单核心:设置p,q均为1,最好直接绑定到一个物理核心上,在上面的路径下执行下面命令。

mpirun --allow-run-as-root -np 1 taskset -c 0 ./xhpl

这里面taskset -c 0,表示让xhpl运行在第一个核心上。

以上就是一点小小的看法,毕竟原作者很多细节没提,也不好说这成绩是怎么来的。

我也是刚接触不久,写得东西难免会有些问题。之前那版有些地方不太合适,而且还卡审核了,重新编编辑发上来。

PS:

你这也就是只发了文章没出视频还卡审核了,不然龙芯圈KPI就要来干你了

为了以防万一我先把全文备份了

来源:失传技术研究所

相关推荐