使用HPL进行CPU性能测试

CPU型号为:AMD Ryzen 7 5800H,本次实验使用两台Linux虚拟机测试,每个虚拟机分配一个CPU。

理论浮点峰值=CPU主频×CPU核数×CPU每周期执行浮点运算的次数

本机CPU的基准频率为3.2GHZ,加速频率为4.4GHZghz。CPU有8核16线程(一个核虚拟成2个CPU),CPU单个周期浮点计算值比较复杂,查询网上资料,得知CPU支持AVX2架构,每周期执行浮点运算的次数为16。因此峰值速度为:3.2GHZ816=409.6GFLOPS

重要参数有:

  1. 要运算的矩阵规格NS:NS代表着问题规模(矩阵规格)。在测试中,内存是仅次于CPU速度的瓶颈。扩大NS理论上需要更大的内存空间。经过测试发现,当内存足够时,扩大问题规模N后的测试结果更优。
  2. NB:数据分布的块大小。
  3. P Q 😛 和 Q 是 HPL.dat 中的进程网格的参数,P代表行数、Q代表列数,PQ的组合。P * Q 必须是 HPL 正在使用的 MPI 进程数。

单机测试:

CPU GPU浮点计算精度不同导致模型结果不一样怎么避免 cpu浮点性能理论值_性能测试

单机2进程测试:

CPU GPU浮点计算精度不同导致模型结果不一样怎么避免 cpu浮点性能理论值_HPL_02

CPU GPU浮点计算精度不同导致模型结果不一样怎么避免 cpu浮点性能理论值_性能测试_03

双机3进程运行

CPU GPU浮点计算精度不同导致模型结果不一样怎么避免 cpu浮点性能理论值_浮点_04

双机4进程运行

运行线程可视化(两个虚拟机,每个机器分配一个CPU,AMD5800H每个CPU可双线程,共4个线程)

CPU GPU浮点计算精度不同导致模型结果不一样怎么避免 cpu浮点性能理论值_HPL_05

CPU GPU浮点计算精度不同导致模型结果不一样怎么避免 cpu浮点性能理论值_性能测试_06

将HPL最佳测试结果填写下面表格:

CPU GPU浮点计算精度不同导致模型结果不一样怎么避免 cpu浮点性能理论值_HPL_07

成上述测试后比较和分析测试结果,特别是如何能够得到高的性能测试值

通过对比测试,发现了一些现象:

  1. P、Q 的取值会显著影响结果。如在单机2进程测试中,发现p=1,q=2时最短时间只需1.13s,而p=2,q=1时则需要20s+,相差十倍左右。其余测试结果类似。由于尚不理解进程网格的参数有什么意义,因此不清楚造成该现象的原因。
  2. 当只使用一台虚拟机测试时,当N取1960时获得最佳测试结果;当使用两台时,N取2048获得最佳测试结果。考虑到虚拟机的内存分配问题,推测当使用两台虚拟机时,平均每个进程可获得的内存资源更多,因此N变大时效果变好。
  3. 理论上而言进程数越多获得的性能更好,然而测试结果显示随着进程数的增加,测试结果GFLOPS仅在由2进程变为3进程时有增加,而且均小于1个进程时的测试结果。目前尚不清楚为何多进程并发执行的优势没有显现,推测有两个可能:其一是当前问题规模较小,进程之间的任务分配、通信等消耗抹平了并发执行的优点,甚至拖慢了速度;其二是由于每台虚拟机的CPU资源和内存资源都相对有限,且最多的测试进程也只是2台虚拟机上的4个进程,不能反映出普遍情况下的并发运算状态。此外,由于本机CPU是具有虚拟CPU功能的,即一个CPU划分为2个虚拟的处理器,因此情况更加复杂。

综上所述,在现有条件下,尽可能增加P/Q的值(P多给一些)、使用一个进程跑测试,或者在多台机器上跑测试的同时给予更多内存资源,都会获得高的性能测试值。