HPL:多进程CPU性能测试

使用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 进程数。

单机测试:

image-20230429170511869

单机2进程测试:

image-20230429171825637

image-20230429173034665

双机3进程运行

image-20230429180806186

双机4进程运行

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

image-20230427215408786

image-20230429182035185

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

image-20230429183439898

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

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

  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多给一些)、使用一个进程跑测试,或者在多台机器上跑测试的同时给予更多内存资源,都会获得高的性能测试值。

posted @ 2023-04-29 18:44  丘丘王  阅读(715)  评论(2编辑  收藏  举报
鼠标点击页面特效

尝试在空白处点击鼠标