Petsc代码在2990WX平台上没有并行加速
当我在旧的Intel Xeon平台上运行代码时(X5650@2.67GHz)在两倍处理器使用率的情况下,80%~95%的速度提高,并行效率似乎很好。然而,当我在AMD2990WX平台上运行相同的代码时,我无法获得任何线程数的加速 我很困惑,为什么我的新AMD平台执行如此糟糕的并行效率,我几乎不知道我的代码中哪里有错误的设置 我有一个基于PetSc库的C代码来解决一个非常大的稀疏线性方程,我代码中的并行部分由PetSc提供,它自动涉及MPI(我只将矩阵构造任务安排到每个进程,不添加任何其他通信例程) 计算平台的系统均为Centos7,MPI库的版本均为MPICH3,PetSc的版本均为3.11。XEON平台上的BLAS包含在MKL中,而AMD平台上的BLAS包含在BLIS库中 当程序在AMD平台上运行时,我使用Petsc代码在2990WX平台上没有并行加速,c,mpi,amd-processor,petsc,C,Mpi,Amd Processor,Petsc,当我在旧的Intel Xeon平台上运行代码时(X5650@2.67GHz)在两倍处理器使用率的情况下,80%~95%的速度提高,并行效率似乎很好。然而,当我在AMD2990WX平台上运行相同的代码时,我无法获得任何线程数的加速 我很困惑,为什么我的新AMD平台执行如此糟糕的并行效率,我几乎不知道我的代码中哪里有错误的设置 我有一个基于PetSc库的C代码来解决一个非常大的稀疏线性方程,我代码中的并行部分由PetSc提供,它自动涉及MPI(我只将矩阵构造任务安排到每个进程,不添加任何其他通信例程
top
检查处理器的运行情况,发现不同的运行设置下CPU的使用情况实际上是不同的:
对于32个进程:
/usr/lib64/mpich/bin/mpiexec-n32./${bin_DIR}/main
对于64个进程:
/usr/lib64/mpich/bin/mpiexec-n64./${bin_DIR}/main
在XEON平台上:
/public/software/Petsc/bin/petscmpiexec-n 64-f mac8./${bin_DIR}/main
使用mac8
文件:
ic1:8
ic2:8
ic3:8
ic4:8
ic5:8
ic6:8
ic7:8
ic8:8
64可能太大了。试试48。X5650系统有多少内核?我试了16、24、32、48、64甚至128个(虽然2990WX只有64个线程),代码可以在所有设置下运行,但速度几乎没有变化。每个节点2个X5650 cpu,总共8个节点。每个X5650有2个内核和4个线程。这会稍微好一点。旧系统在每个节点的内存性能方面具有相当大的优势,即使内存运行较慢。我相信旧系统总共有24个DDR3通道,而新系统有4个更快的DDR4通道。