进程绑定

基础知识

  1. 插槽socket:服务器上的物理CPU插槽,双路CPU指的是服务器上可以插2个物理CPU
  2. 核心:现代CPU为多核架构,CPU中的可独立调用的处理器但愿
  3. 超线程:单个CPU核心虚拟为多个逻辑核心,充分利用计算单元的资源,例如8核16线程可能就是包括了超线程的虚拟核心
  4. NUMA架构:每个插槽中的某个核心直接连接内存和外设叫做一个NUMA Domain,跨NUMA会导致访存性能下降
  5. Die:从wafer上切割下来的小方块,就是芯片,INTEL和AMD的处理器有很大的不同就在于Die的大小不一样,Intel把多个核心集成在1个Die中,从而共享CPU缓存提高性能

进程绑定

多核处理器在调度时进程将在不同的核心间漂移,如果进程被迁移到了不同的Numa Domain,则会导致性能的下降

在运行计算密集型程序时,需要将进程线程和CPU核心进行绑定,控制CPU亲和性

并行计算中的影响

MPI

MPI不共享内存,所以跨NUMA Domain对性能的影响比较小

OpenMP

OpemMP共享内存,会收到Numa效应的影响,如果访问内存比较频繁时可能导致性能下降

slurm中的绑定

--cpu-bind=cores 自动绑定一个进程到核心
--ntask-per-socket=14 每个CPU插槽绑定14个进程 --cpu-bind=sockets等价

ref: https://lab.cs.tsinghua.edu.cn/hpc/doc/faq/binding/

posted @ 2024-04-11 10:43  codesucks  阅读(74)  评论(0)    收藏  举报