Purley平台Linpak测试,从踏坑开始一步步优化

Purley平台Linpak测试,从踏坑开始一步步优化

#记2017年11月第一次踏坑事件

测试平台配置:

6nodes

CPU: Intel Gold 6132 @2.6GHz 14C

RAM: 8G *12 @2666MHz

NET: Infiband FDR

OS: centos7.2

mpi: Intel-mpi

hpl: xhpl.intel

 

开始踏第一坑

现象:运行单机Linpack,一颗CPU主频699MHz,另一颗3299MHz。当然效率很低啦。

原因分析:此现象原因是CPU节能模式造成。需要关闭CPU节能。

解决方法一:内核启动参数加入“intel_idle.max_cstate=0 processor.max_cstate=1 intel_pstate=disable idle=nomwait”,

      然后开机执行cpupower -c all frequency-set -g performance,可以写入/etc/rc.local开机自动执行,注意/etc/rc.d/rc.local要给执行权限。

      查看CPU是否为“performance”模式了

      cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

解决方法二:有时重启cpupower服务也有效

      systemctl restart cpupower

结果:CPU运行频率平稳。Linpack效率提升显著。280(12%) > 提升到930(40%)

      turbostat  查看cpu频率(Linpack测试时,基本稳定在2200MHz)

 

但是40%的效率,还是太低啊,需要提高

原因分析:我们注意到Purley平台支持了AVX512指令集,需要打开才能发挥最高性能。

操作方法:在Linpack测试脚本里加入“export MKL_ENABLE_INSTRUCTIONS=AVX512”

     perf top 查看avx512指令集有没有生效

结果:性能提升也很明显,达到64%,基本满足要求。930(40%) > 1500(64%)

 

下面开始整机测试,又出现问题啦。

执行mpirun报错
原因分析:因此项目要求特殊,配置了两块HCA卡,一块双口FDR+一块单口FDR,实际测试使用单口HCA卡。需要指定使用哪个适配器的端口。
操作方法:在整机Linpack执行脚本里加入:
     “export I_MPI_OFA_NUM_ADAPTERS=2
     export I_MPI_OFA_NUM_PORTS=1”
结果:好,mpirun运行无报错。

 

但是又有问题来了。

每个节点占用内存不同,进程数也不同。也导致效率极低。

原因分析:从故障描述也看出来了,需要绑定进程。

操作方法:intelmpi绑定核数,每节点28个核:
     mpirun -ppn 28 -np 168

结果:可以跑出一个正常的结果了。虽然效率一般般。

 

至此,还有哪些可以优化呢?
改为一颗CPU一个进程,然后开14个线程,性能会有略微提高。
操作方法:export OMP_NUM_THREADS=14
 
还有能提高的点吗?
有啊,用Intel MKL。在Intel编译器安装目录里有mkl/benchmark/mp-linpack
使用里面的runme脚本或xhpl二进制程序会提高几个点。
对于使用MKL的几点建议:
  单机Linpack,直接使用mkl里的runme脚本,2进程14线程运行(2颗6132)。
  整机Linpack,使用mkl里的xhpl执行文件,6进程28线程运行(6节点,每节点起28线程)。
 
 
 
 

posted on 2019-03-09 18:07  T-crazy  阅读(2040)  评论(0)    收藏  举报

导航