动态核心绑定实现负载均衡
1. 引言
在并行计算中,负载均衡是提高性能和降低能耗的关键。本文介绍了一种基于动态核心绑定(DCB)的方法,旨在改善并行应用程序的性能和能耗。该方法集成了改变核心数量以提升性能和降低能耗的思想,并考虑了节点间的负载均衡。
2. 动态核心绑定(DCB)
2.1 DCB 概念
DCB 的基本概念是通过改变每个进程绑定的核心数量来均衡核心间的负载。其目标是基于 OpenMP/MPI 混合的并行应用程序。在一般的混合并行环境中,每个进程绑定的核心数量相同。在核心级别进行负载均衡可以减少计算时间和/或能耗。
例如,若“进程 1”的计算量是“进程 2”的三倍,那么分配给核心 1 - 4 的计算量也会是核心 5 - 8 的三倍。通过 DCB 的基本概念,有望减少核心间的负载不均衡。
在 OpenMP 中,“omp_set_num_threads”函数可改变线程数量,但不能改变每个进程可用的核心数量。改变每个进程绑定的核心数量需要系统调用,如“sched_set_affinity”。DCB 库内部调用这些系统调用,允许用户轻松受益于每个进程绑定不同数量核心的环境,且使用普通权限即可。
2.2 绑定策略
DCB 库实现了两种策略来提高并行性能或降低应用程序的能耗:
- RC 策略 :专注于减少应用程序的计算时间。所有核心根据负载绑定到进程。核心数量 $c_p$ 的计算公式如下:
[c_p = \left\lfloor\frac{l_p}{\sum_{\tilde{p} \in P_n}l_{\tilde