前言:ZEN2架构下EPYC-7742处理器,具有256M L3级缓存,8内存通道、支持DDR4-3200MHz内存,支持PICE4.0, 支持avx2指令集。在科学计算领域具有很强的计算性能。其计算性能已超越intel铂金8280。
本文将逐步阐述centos7下针对7742的优化处理及VASP的编译举例:
S1: 升级linux内核使其更好地支持7742
uname -r #查看内核版本,若内核版本低于4.0则需要进行内核升级
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org #导入ELRepo源公共密钥
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm #安装ELRepo源
yum --enablerepo=elrepo-kernel install kernel-ml #安装最新linux内核
grub2-mkconfig -o /boot/grub2/grub.cfg #重建内核启动配置文件
grub2-set-default 0 #设置新安装的内核默认启动(新安装的内核在内核顺序中一般为0)
reboot #重启后用uname -r验证内核是否升级成功
S2: 开启7742睿频
cat /proc/cpuinfo | grep MHz #查看cpu的主频(睿频未开启前,或者内核未升级前,主频处于1500-2500MHz之间)
yum install cpupowerutils #安装cpupower
cpupower frequency-set -g performance #设置cpu模式为性能模式
S3: 安装Intel环境(Parallel_studio_xe_2017)
tar –xzf parallel_studio_xe_2017_update×.tgz #解压
cd parallel_studio_xe_2017_update× #进入文件夹
./install.sh #命令行安装(相关过程可自行百度, 默认安装在/opt/intel下)
source /opt/intel/parallel_studio_xe_2017/psxevars.sh intel64 #加载intel编译、MKL、Intelmpi等
echo source /opt/intel/parallel_studio_xe_2017/psxevars.sh intel64>>~/.bashrc #将intel环境加入用户环境变量下,每次用户终端开启,则自动加载intel环境
make -C /opt/intel/mkl/interfaces/fftw3xf libintel64 #编译mkl对fftw3的接口
S4: VASP-5.4.4 安装
tar -xvf vasp-5.4.4.tar.gz #解压
cd vasp-5.4.4 #进入文件夹
cp arch/makefile.include.linux_intel ./makefile.include #套用intel编译器框架下的Makefile模板
vi makefile.include #修改makefile.include使其支持avx2指令集(-xHost/-xavx2/-xcore-avx2效果一样);加入mkl对fftw3的接口
make all #开始编译,编译后在vasp-5.4.4文件夹将产生bin文件夹,vasp的三种执行文件会出现在里面
S5: 相关加速环境设置
export MKL_DEBUG_CPU_TYPE=5 #加速代码
export MKL_CBWR=AVX2 #使cpu默认支持avx2
export I_MPI_PIN_DOMAIN=numa #内存位置与cpu位置绑定,加速内存读取。对于内存带宽要求高的计算提速明显
总结:
加速的关键点:内核升级+睿频开启+intel编译器+编译参数中加入对avx2的支持+加速环境设置。
按照上述完成操作,则ZEN2架构下的任何CPU计算速度将会达到极致。
备注1:
释放性能后的7742发热量极高,塔式服务器的散热很可能需要升级。7742通常会因为CPU温度过高(cpu温度超过95度),而发生异常降频(主频降到400MHz)。异常降频后,服务器会发出持续蜂鸣。需关机、断电后插电重启才能清除报警。
备注2:
lammps等分子动力学软件对于avx2的支持一般,加速效果不明显,编译时lammp等分子模拟软件时,按照intel编译器一般操作就行,当前的lammps版本自动支持到最高指令集。
对于量化计算其他软件来说,avx2的支持可以带来较大的提速,编译时,可在相应位置加入-xHost使其对avx2进行支持。同时需将export MKL_DEBUG_CPU_TYPE=5 和export MKL_CBWR=AVX2 加入到用户环境变量或者作业提交脚本中。