让软件进程bind to core?
不同启动方式/并行方式,实现进程和cpu绑定的方式不同,以lammps为例,使用mpirun命令调用,使用–bind-to core参数即可把mpi进程绑定到cpu,大幅提高计算效率。
mpirun –use-hwthread-cpus -np 32 –bind-to core /mnt/softs/LAMMPS/lammps20220817git/lammps/build_zen2/lmp -k on t $v_t -sf kk -in $job
-np mpi进程数
–use-hwthread-cpus 识别物理cpu作为一个mpi slot而非逻辑cpu
–bind-to core 把mpi进程绑定到cpu –bind-to socket表示绑定到同一个cpu插槽, bind-to node表示不绑定
经测试,使用–bind-to core参数的计算速度是使用–bind-to none的三倍,是使用–bind-to socket的两倍
对于非mpirun启动的软件,如g16,自带调控参数
部分超算中心在module模块中针对性的优化了系统环境变量,或是修改了软件的配置文件,因此slurm脚本则无需过多设置。因此,这部分内容则需要各位负责人贡献自己时间,替大家探索。
