AMD Ryzen Threadripper 2990WX和intel 9980XE 用于第一性原理计算对比

       目前除去工作站服务器多路CPU,个人桌面CPU性能也不断提高,特别是年初AMD发布了第二代线程撕裂者CPU,同时intel也是在原来7980XE的基础上发布了升级后主频更高的i9 9980XE,目前从各种测评和核数线程等来看,AMD的线程撕裂者2990WX拥有32核64线程,网上各种测评都暗示其性能在intel之上。

        但是,除了程序多开等应用,具体到数值并行计算,特别是第一性原理计算等需要矩阵迭代等Fortran以及C++编写的程序,两者性能如何?

       这里使用24原子体系以及57原子体系,利用Quantum-espresso程序计算,k格点等计算参数经过收敛测试。

       首先利用intel 7980XE,内存使用8条8G 2666MHz内存,cpu无超频,2.6GHz,使用MKL库,编译使用intel编译器ifort(比使用GNU版本普通编译器提升约2倍),使用openmpi作为并行程序。则24原子体系,每次迭代平均用时20s;57原子体系每次100~110s;

       利用AMD的线程撕裂者2990WX,内存使用4条16G 2666MHz,由于AMD cpu无专用编译器,只有OpenBLAS数学库有针对zen处理器的优化,同时AMD官网提供一些数学库(AOCL),链接https://developer.amd.com/amd-cpu-libraries/,BLAS库,计算同样24原子体系(计算全程没有超频):

      1.不使用任何专用库,用GNU版本编译器和数学库,使用openmpi并行编译,计算使用32核,24原子体系每次迭代用时85s;mpirun使用8核数,时间128s,可见mpirun多核后效率提升不明显。

      2. 使用openBLAS库,编译器采用GNU版本,使用openmpi并行计算,发现计算使用4核效率最高,24原子体系每次迭代用时65s;mpirun使用核数增大,计算效率降低。

      3. 并行计算使用mpich,同openmpi差别不大。

     总结:使用openBLAS数学库后,AMD 芯片计算效率有显著提升,但是对于AMD Ryzen 2990WX,单程序数值计算并行效率随核数增大反而降低,对原子数较小的体系,计算效率随核数增加下降明显,最优核数反倒仅使用4核计算时获得,此时性能大于为intel 7980 XE的1/3,随着原子体系增大,如对57原子体系,AMD 这款cpu最优核数为12,此时性能约为intel 7980XE的1/2。

    综上,从程序窗口多开的角度看,AMD的线程撕裂者性能遥遥领先,但是对于单程序多核计算,目前针对AMD的优化还不够,导致CPU的性能没有全部发挥,不严谨的说,在目前优化状态下,针对小原子体系计算,AMD Ryzen 2990wx相当于8台安装MKL库后的6核芯片,程序多开角度来看性能强大,但是对于单个并行程序每台的极限性能只有intel 18核7980XE的1/3;随着原子数目增大,AMD 线程撕裂者的性能提升明显,接近于优化后intel芯片的1/2。并且目前问题只是优化问题,并且对于AMD芯片还有超频等选项,也不排除更大数目原子体系计算效率会更接近与intel 7980芯片整体性能。

    所以建议根据用途确定cpu平台,intel做数值计算等有优势,容易发挥出多核性能,AMD针对数值计算优化不多,但是程序多开等应用优势明显,对于单程序多核并行计算优化不够,导致对于小原子体系性能随核数增加反而下降,多核性能不能完全发挥。

 

 

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页