专利名称:多网络环境下基于强化学习的mpi消息调度方法
技术领域:
本发明涉及多套通信网络环境下MPI系统中的消息调度方法。
背景技术:
在高性能计算领域,并行应用程序的进程间通信多采用消息传递的方式,并提供 标准的消息传递接口(Message Passing Interface,MPI)用于并行程序的设计。实现标准 的消息传递接口的具体部件称为MPI系统,在高性能并行计算机系统中,MPI系统负责并行 应用程序的进Mam值。当单个计算结点的计算能力不高,高性能并行计算机只需配置一 套通信网络用于计算结点间的通信,这时不存在MPI消息在多套网络上调度的问题。随着 处理器和集成电路技术的迅猛发展,目前高性能并行计算机的计算结点通常为多路多核的 SMP结点,即单个计算结点配有多个CPU,每个CPU均为多核结构,而且处理器正由多核向众 核发展,单CPU的峰值性能不断提高,因此单个计算结点的计算能力必将持续增长。伴随着 单个计算结点的计算能力的提高,计算结点之间的通信带宽必须增大,以使高性能并行计 算机的通信能力能够与计算能力相匹配。由于单套网络的通信带宽已很难满足应用需求, 高性能计算机需要配置多套网络用于计算结点间的通信,每个计算结点通过多个网络接口 控制器NIC(Networklnterface Controller)接入这些网络。在这种结构的高性能并行计 算机系统中,本地计算结点上的并行应用进程向其他结点上的进程发送的消息需要合理地 调度到各套网络上,才能最大限度地利用通信带宽,充分发挥出高性能并行计算机系统的 计算性能。为此,MPI系统需要支持多套网络同时通信,即将消息调度到这些网络上并行发 送。针对配有多套通信网络的高性能并行计算机,目前的MPI系统采用简单的循环调 度方法进行消息的调度,对配有m,(m>l)套通信网络的高性能并行计算机,循环调度法的 流程如图1所示,该方法包括以下步骤第一步、初始化1. 1在MPI系统启动过程中,将第0套网络设置为发送网络,即将发送网络的标识 i设置为i = 0;1. 2设置消息段的最大长度segjnax 为了使多套网络尽量并发工作,对于较长的 MPI消息,可将其分段,然后将消息段调度到不同的网络发送。当通信网络的带宽高,延迟 小,可将segjnax设置的大一些,否则将其设置的小一些,seg_max的一般取值范围为1MB 64MB。1. 3设置发送计时器timer 设置timer = 0,并启动该计时器;第二步、等待并行应用程序的消息发送请求如果有未处理的消息发送请求,取出 最先到达的消息请求,获取该请求需要发送的MPI消息,将MPI消息的未发送部分的长度 messagejength设置为该MPI消息的长度,并设置调度结束标识FINISHED = 0,转第三步; 否则继续等待;第三步、获取当前消息段根据segjnax的值获取当前消息段,具体如下
3. 1如果FINISHED = 1,说明该MPI消息已调度完毕,转第二步;3. 2如果MPI消息的未发送部分的长度message_length大于seg_max,则从前至 后取出长度为segjnax的一段作为当前消息段,并按如下公式更新messagejength message_length = message_length_seg—max转第四步;3. 3如果MPI消息的未发送部分的长度message_length小于等于seg_max,则直 接将未发送部分作为一个消息段,设置调度结束标识FINISHED = 1,转第四步;第四步、发送消息段将当前消息段放置到第i套网络的发送队列;第五步、更新发送网络i :i = (i+l)modm,转第三步。第六步、如果发送计时器timer的值超过预设的值(一般为IOms Is),则触发消 息段发送处理,依次检测每套通信网络的发送队列,并将发送队列中的消息段发送至相应 的网络接口控制器,具体步骤如下6.1设置待检测网络的标识i工=0 ;6. 2检测第I1套网络的发送队列,如果发送队列中有消息段,则转步骤6. 3 ;否则 转步骤6. 4 ;6. 3如果第I1套网络接口控制器有可用资源,即可以发送新的消息段,则按先来先 服务(First Come First Service,FCFS)的策略取出该网络发送队列中最前面的消息段j, 将其发送至相应的网络接口控制器,然后转步骤6.2 ;如果第I1套网络接口控制器无可用 资源,则说明该网络目前繁忙,无法发送新的消息段,转步骤6. 4;6. 4如果I1 < m-1,则I1 = ifl,转步骤6. 2,继续检测下一套网络的发送队列;否 则设置发送计时器timer = 0,并启动新一轮计时。循环调度法十分简单,但是在实际应用中,这种方法存在如下缺陷(1)通信负载分配不均衡。虽然循环调度法调度到每套网络的MPI消息段数量基 本均衡,但是由于各MPI消息的长度差异很大,导致每个MPI消息段的长度不同,例如有的 消息段长度达到1MB以上,但有的消息段只有几个字节,因此实际上调度到每套网络上的 负载是不均衡的,可能导致有些网络的通信负载很重,有些网络的通信负载很轻,从而影响 整个系统的实际应用性能。(2)没有考虑各网络的状态变化。循环调度法只是简单地将消息段依次放置到各 套网络的发送队列中,调度过程中没有考虑各套网络的状态变化。在实际应用中,各网络的 状态互不相同,可能有些网络由于拥塞导致其发送队列很长,有些网络由于发送队列中的 消息已全部发送至目的端而处于空闲状态,因此各网络的状态可能差异很大。循环调度法 由于没有考虑网络状态的变化,使得通信负载在各套网络上的分配无法达到最佳分配,导 致高性能并行计算机的计算性能得不到充分发挥。(3)对计算环境的适应性差。循环调度法对所有网络一视同仁,主要针对多套通信 网络为同构网络的计算环境。如果这些网络是异构的,带宽和延迟相差较大,则循环调度法 更容易导致通信负载分配不合理,进一步降低了高性能并行计算机的实际应用性能。因此, 循环调度法对计算环境的适应性差。所以,现有的循环调度法存在通信负载分配不均衡、无法适应网络状态的动态变 化、对计算环境的适应性差的缺陷。由于并行应用程序的运行性能取决于运行最慢的进程,因此上述缺陷严重影响着高性能并行计算机的实际应用性能。
发明内容
本发明要解决的技术问题是针对循环调度法存在的缺陷,提出基于强化学习的 MPI消息调度方法,通过自学习的方式获取并保存调度过程的经验值,消息调度时根据各网 络的当前状态与历史经验值动态选择发送网络,解决通信负载分配不均衡、无法适应网络 状态动态变化、对计算环境的适应性差的问题,提高高性能并行计算机的实际应用性能。本发明的具体技术方案如下第一步初始化,在MPI系统启动过程中,完成如下初始化的工作1. 1设置消息段的最大长度seg_max :seg_max的取值范围为1MB 64MB。
1. 2设置初次发送消息段标识FIRST_SIGN = 1 ;1.3设置学习率β 学习率β用于控制学习的速度,满足0彡β <1,学习率越 大,学习过程收敛越快,但是容易产生振荡;学习率越小,学习过程收敛越慢,但不易产生振 荡。为了保证学习过程的稳定性,一般将学习率设置为一个较小的值,缺省情况下取β = 0. 1 ;1. 4设置延迟回报的折扣因子Y 折扣因子Y表示未来回报相对于立即回报的重 要程度,满足γ < 1,折扣因子越小,表明越关注最近动作的影响,对未来回报的关注 较小,折扣因子越大,则对较长时间内的动作都很关注。由于高的未来回报是强化学习的目 标,因此折扣因子的取值一般较大,缺省情况下取Y =0.95;1. 5构造并初始化消息段计数器为每套网络设置一个消息段计数器,用于记录 当前该网络的发送队列中的消息段数目,第i套网络的消息段计数器数值用Coimter[i]表 示,初始值为0;1.6构造并初始化等待时间变量为每套网络设置一个变量,用于记录当前发 送至该网络接口控制器上的消息段在发送队列中的等待时间,第i套网络的等待时间用 wait_time[i]表示,初始值为0 ;为每个消息段设置一个变量用于记录其进入某通信网络 发送队列中的时间,消息段j的进入时间用enterjimeU]表示,用于更新等待时间的值;1. 7设置单套通信网络的状态数k 通信网络的状态用于反映该网络的繁忙程度, 取值为W,k_l]中的整数。每套通信网络的状态数为一个固定值k,当k的取值较大时,网 络状态变换的粒度小,能够较准确地反映消息调度的情况,但会使环境状态数过大,强化学 习过程收敛速度慢;当k的取值较小时,学习过程收敛快,但网络状态变换的粒度大,不能 充分反映消息调度带来的状态变化。为了保证强化学习的适用性,取k值为区间[8,32]内 的整数。1. 8构造并初始化Q表本发明提出多Q表组合法用于更新并保存消息调度过程 获得的经验信息。在多Q表组合法中,每两套网络生成一个Q表,第i套网络和第j (0 < i, j彡m-1且i < j)套网络生成的Q表用Q^表示,因此,对于配有m套网络的高性能计算 机系统,共生成Cm2个Q表。每个Q表用一个三维数组表示,前两维分别表示两套网络的状
态,第三维表示可能的动作。将各Q表中的所有Q值初始化为+;1. 9设置并启动发送计时器timer 设置timer = 0,并启动该计时器。第二步、计算队列间隔queue_interval和时间间隔time_interval的值2. 1根据网络的个数m、各网络发送队列的最大长度queuejiiax和单套通信网络的 状态数k,按如下公式确定队列间隔queuejnterval的大小
formula see original document page 82. 2根据单套网络的理论带宽bandwidth和MPI系统设定的最大消息段长度seg_ max,按如下公式计算时间间隔time_interval的值formula see original document page 8
第三步、等待并行应用程序的消息发送请求如果有未处理的消息发送请求,取出 最先到达的消息请求,获取该请求需要发送的MPI消息,将MPI消息的未发送部分的长度 messagejength设置为该MPI消息的长度,并设置调度结束标识FINISHED = 0,转第四步; 否则继续等待;第四步、获取当前消息段根据segjnax的值获取当前消息段,具体如下4. 1如果FINISHED = 1,说明该MPI消息已调度完毕,转第三步;4. 2如果MPI消息的未发送部分的长度message_length大于seg_max,则从前至 后取出长度为segjnax的一段作为当前消息段,并按如下公式更新messagejength message—length = message_length-seg_max转第4· 4 步;4. 3如果MPI消息的未发送部分的长度message_length小于等于seg_max,则直 接将未发送部分作为当前消息段,设置调度结束标识FINISHED = 1,转第4. 4步;4. 4如果FIRST_SIGN = 1,则设置FIRST_SIGN = 0,转第五步;否则转第六步;第五步、按如下方式设置当前环境状态Scmrait和当前动作a。u mt (动作是指将当前 消息段调度至m套网络中的某一套,具体动作用所选的调度网络的标识表示,所有动作的 集合为区间
内的整数)5. 1 设置 Scurrent = (k0, k2,…,^1) = (0,0,…,0),其中 Iii 为第 i 套网络的状 态;5. 2从m套通信网络中随机选择一套网络作为调度网络,记当前动作a。UMt为该 网络的标识号;5. 3转第八步;第六步、按如下方式获取当前环境状态s。umnt和当前动作a。UMt 6. 1对于网络i,0彡i彡m-1,获取其消息段计数器counter [i]和等待时间wait_ time[i]的值;6. 2令当前环境状态为Smt = (k0,k2,…,U,其中网络i的状态Iii按如下公
式得到formula see original document page 96. 3获得当前动作a。umnt 对于每个可能的动作a,按如下公式计算该动作的总Q 值
Qtotal (Scurrent ^)= Σ Q(U) ^current ^)= Σ Q(U) ^ ^liJ ][到formula see original document page 9其中Qt。tal (scurrent, a)表示在当前环境状态Scmrent下选择第a套网络作为调度网络 的总Q值,Q(i,j) (scurrent, a)表示在当前环境状态s。umnt下选择第a套网络作为调度网络时, Q(i, j)表中的Q值,其对应在表中的具体值为Qa, j) [kj [kj] [a]的值。当前动作acu ent是所
有动作中总Q值最大的动作,即 臓拟=arg max^Qtotal {scumnt,…,其中函数arg表示返回总 Q值最大的通信网络的标识。第七步、更新Q值对于表Q(i,j),0彡i,j彡!11-1且1 < j,按如下公式更新表中 “环境状态_动作”对(spMV,aprev)对应的Q值Q(i, j) (Sprev' aprev) =* Q(i, j) (Sprev' aPrev) + ^ · (r+ Y * Q(i,j) (Scurrent' Current))第八步、将当前消息段调度至网络a。umnt的发送队列中8. 1判定边界条件如果counter [acurrent]彡queue_max,说明所选网络a。urrent的发 送队列已满,则持续等待,直到counter [a。urrent] < queue_max ;8. 2设置当前消息段的enter_time值为当前时间,然后将消息段调度至网络 acurrent的发送队列中;8. 3按如下方式更新网络a—的消息段计数器的值counter [acurrent] = counter [acurrent]+1第九步、按如下公式计算当前动作a。UMt产生的瞬时奖赏值r,瞬时奖赏值为执行 动作^urrait后从环境获得的立即回报
formula see original document page 9第十步、更新前一次的环境状态Spmv和前一次的动作apMV Spr^v ^current ^prev ^"current并转第四步。第十一步、如果发送计时器timer的值超过预设的值(一般为IOms Is),则触发 消息段发送处理,依次检测每套通信网络的发送队列,并负责将发送队列中的消息段发送 至相应的网络接口控制器,具体步骤如下11. 1设置待检测网络的标识为I1 = 0 ;11. 2检测第I1套网络的发送队列,如果发送队列中有消息段,则转步骤11. 3,否 则转步骤11. 4;11. 3如果第I1套网络接口控制器有可用资源,则按先来先服务(First Come FirstService, FCFS)的策略取出该网络发送队列中最前面的消息段j,将其发送至相应的 网络接口控制器,并按如下公式更新该网络的消息段计数器和等待时间的值counter [i] = counter [i]_lformula see original document page 10然后转步骤11. 2 ;如果第I1套网络接口控制器无可用资源,则说明该网络目前繁 忙,无法发送新的消息段,转步骤11. 4 ;11. 4如果I1 < m-1,则I1 = 01,转步骤11. 2,继续检测下一套网络的发送队列; 否则设置发送计时器timer = 0,并启动新一轮计时。与现有技术相比,采用本发明可达到以下技术效果(1)实时获取各网络的最新状态,动态调整所选的调度网络。采用本发明可以随时 获得各通信网络的消息段计数器和等待时间的数值,这两个值直接反映出当前该网络的繁 忙程度,从而使得消息调度能够根据各个网络的当前状态来确定,即调度网络的选择能够 随着网络状态的变化动态调整。(2)保证消息调度过程的通信负载平衡,提高高性能并行计算机的实际应用性能。 本发明将获得的消息调度经验以Q值的形式保存在Q表中,并实时更新Q表中的Q值,一旦 学习过程收敛,后续的消息调度则为当前网络状态下的最佳调度,使得各网络的通信负载 达到平衡,避免了有的网络拥塞,有的网络空闲的不合理现象,从而提高了高性能并行计算 机的实际应用性能。(3)本发明适应性强。循环调度法主要针对配有多套同构网络的计算环境,本发明 不仅能够很好的适用于同构网络环境,对多套异构网络的计算环境,该方法经过短暂的自 学习过程,能够将各网络的性能差别体现在各Q表的Q值中,因此在多套异构网络的计算环 境下也能得到优越的调度效果。
图1是背景技术中循环调度法的流程图;图2是本发明基于强化学习的消息调度方法流程图。
具体实施例方式图1是背景技术中循环调度法的流程图。具体实施如下第一步、初始化设置发送网络的标识i = 0,设置消息段的最大长度segjnax的 值,设置并启动发送计时器timer ;第二步、等待并行应用程序的消息发送请求如果有未处理的消息发送请求,取出 最先到达的消息请求,获取该请求需要发送的MPI消息,并设置调度结束标识FINISHED = 0,转第三步,否则继续等待;第三步、根据segjnax的值获取当前消息段如果MPI消息已经全部调度完毕,即 FINISHED = 1,则转第二步;如果消息中未调度部分的长度大于segjnax,则从MPI消息的 未调度部分中按从前至后的顺序取出长度为segjnax的一段内容作为当前消息段,并更新 消息未调度部分的长度,转第四步;否则直接将MPI消息的剩余部分作为当前消息段,并设 置FINISHED = 1,转第四步;第四步、发送消息段将当前消息段放置到第i套网络的发送队列;第五步、更新发送网络将发送网络的标识设置为i = (i+l)modm,转第三步;
第六步、如果timer计时器超时,则触发消息段发送处理,依次检测每套通信网 络的发送队列,将发送队列中的消息段发送至相应的网络接口控制器,检测完毕后,重置 timer = 0,并启动新一轮计时。图2是本发明基于强化学习的消息调度方法流程图。具体实施如下第一步初始化包括设置消息段最大长度segjnax、初次消息段调度标识FIRST_ SIGN、学习率β、折扣因子Y和网络状态数k,构造并初始化消息段计数器和等待时间,构 造并初始化Q表,设置并启动发送计时器timer ;第二步、计算队列间隔queue_interval和时间间隔time_interval的值;第三步、等待并行应用程序的消息发送请求如果有未处理的消息发送请求,取出 最先到达的消息请求,获取该请求需要发送的MPI消息,并设置调度结束标识FINISHED = 0,转第四步;否则继续等待;第四步、根据segjnax的值获取当前消息段如果MPI消息已经全部调度完毕, 即FINISHED = 1,则转第三步;如果消息中未调度部分的长度大于segjnax,则从MPI消 息的未调度部分中按从前至后的顺序取出长度为segjnax的一段内容作为当前消息段, 并更新消息未调度部分的长度,否则直接将MPI消息的剩余部分作为当前消息段,并设置 FINISHED = 1 ;然后判断FIRST_SIGN标识,如果是初次消息段调度,转第五步,否则转第六
止
少;第五步、设置当前环境状态Scmrait= (0,0,…,0),随机选择一套网络作为发送网 络,记当前动作^urralt为该网络的标识号,转第八步;第六步、获取各网络的消息段计数器和等待时间的值,计算得到当前环境状态
current 和当前动作 current ‘第七步、对于每个Q表Q(i,j),0彡i,j彡m-l且1 < j,更新表中环境状态-动作
对(Sprev, 3-prev )对应的Q值;第八步、根据动作a。UCTent,将当前消息段调度至第ac;u ent套网络的发送队列中,设 置该消息段的enterjime值为当前时间,并更新该网络消息段计数器的值;第九步、计算执行当前动作a。UMt产生的瞬时奖赏值;第十步、更新Vev和apra,并转第四步。第—^一步、如果计时器timer超时,则触发消息段发送处理,依次检测每套通信网 络的发送队列,将发送队列中的消息段发送至相应的网络接口控制器,并更新消息段计数 器和等待时间的值。网络检测结束后,重置计时器timer,开始新一轮的计时。
权利要求
一种多网络环境下基于强化学习的MPI消息调度方法,其特征在于包括以下步骤第一步初始化,在MPI系统启动过程中,完成如下初始化的工作1.1设置消息段的最大长度seg_maxseg_max的取值范围为1MB~64MB;1.2设置初次发送消息段标识FIRST_SIGN=1;1.3设置学习率β0≤β≤1;1.4设置延迟回报的折扣因子γ0≤γ≤1;1.5构造并初始化消息段计数器为每套网络设置一个消息段计数器,用于记录当前该网络的发送队列中的消息段数目,第i套网络的消息段计数器数值用counter[i]表示,初始值为0;1.6构造并初始化等待时间变量为每套网络设置一个变量,用于记录当前发送至该网络接口控制器上的消息段在发送队列中的等待时间,第i套网络的等待时间用wait_time[i]表示,初始值为0;为每个消息段设置一个变量用于记录其进入某通信网络发送队列中的时间,消息段j的进入时间用enter_time[j]表示,用于更新等待时间的值;1.7设置单套通信网络的状态数k通信网络的状态用于反映该网络的繁忙程度,取值为
中的整数,设置单套通信网络的状态数k为区间[8,32]内的整数;1.8构造并初始化Q表每两套网络生成一个Q表,第i套网络和第j(0≤i,j≤m-1且i<j)套网络生成的Q表用Q(i,j)表示,每个Q表用一个三维数组表示,前两维分别表示两套网络的状态,第三维表示可能的动作,将各Q表中的所有Q值初始化为1.9设置并启动发送计时器timer设置timer=0,并启动该计时器;第二步、计算队列间隔queue_interval和时间间隔time_interval的值2.1根据网络的个数m、各网络发送队列的最大长度queue_max和单套通信网络的状态数k,按如下公式确定队列间隔queue_interval的大小2.2根据单套网络的理论带宽bandwidth和MPI系统设定的最大消息段长度seg_max,按如下公式计算时间间隔time_interval的值第三步、等待并行应用程序的消息发送请求如果有未处理的消息发送请求,取出最先到达的消息请求,获取该请求需要发送的MPI消息,将MPI消息的未发送部分的长度message_length设置为该MPI消息的长度,并设置调度结束标识FINISHED=0,转第四步,否则继续等待;第四步、获取当前消息段根据seg_max的值获取当前消息段,具体如下4.1如果FINISHED=1,说明该MPI消息已调度完毕,转第三步;4.2如果MPI消息的未发送部分的长度message_length大于seg_max,则从前至后取出长度为seg_max的一段作为当前消息段,并按如下公式更新message_lengthmessage_length=message_length-seg_max转第4.4步;4.3如果MPI消息的未发送部分的长度message_length小于等于seg_max,则直接将未发送部分作为当前消息段,设置调度结束标识FINISHED=1,转第4.4步;4.4如果FIRST_SIGN=1,则设置FIRST_SIGN=0,转第五步;否则转第六步;第五步、按如下方式设置当前环境状态scurrent和当前动作acurrent,动作是指将当前消息段调度至m套网络中的某一套,具体动作用所选的调度网络的标识表示5.1scurrent=(0,0,…,0);5.2从m套通信网络中随机选择一套网络作为调度网络,记当前动作acurrent为该网络的标识号;5.3转第八步;第六步、按如下方式获取当前环境状态scurrent和当前动作acurrent6.1对于网络i,0≤i≤m-1,获取其消息段计数器counter[i]和等待时间wait_time[i]的值;6.2令当前环境状态为scurrent=(k0,k2,…,km-1),其中网络i的状态ki按如下公式得到6.3获得当前动作acurrent对于每个可能的动作a,按如下公式计算该动作的总Q值 Qtotal(scurrent,a)=Σ0≤i<m-10<j≤m-1i<jQ(i,j)(scurrent,a)=Σ0≤i<m-10<j≤m-1i<jQ(i,j)[ki][kj][a]其中Qtotal(scurrent,a)表示在当前环境状态scurrent下选择第a套网络作为调度网络的总Q值,Q(i,j)(scurrent,a)表示在当前环境状态scurrent下选择第a套网络作为调度网络时,Q(i,j)表中的Q值,其对应在表中的具体值为Q(i,j)[ki][kj][a]的值;当前动作acurrent是所有动作中总Q值最大的动作,即其中函数arg表示返回总Q值最大的通信网络的标识;第七步、更新Q值对于表Q(i,j),0≤i,j≤m-1且i<j,按如下公式更新表中“环境状态-动作”对(sprev,aprev)对应的Q值Q(i,j)(sprev,aprev)=(1-β)·Q(i,j)(sprev,aprev)+β·(r+γ·Q(i,j)(scurrent,acurrent));第八步、将当前消息段调度至网络acurrent的发送队列中8.1判定边界条件如果counter[acurrent]≥queue_max,说明所选网络acurrent的发送队列已满,则持续等待,直到counter[acurrent]<queue_max;8.2设置当前消息段的enter_time值为当前系统时间,然后将消息段调度至网络acurrent的发送队列中;8.3按如下方式更新网络acurrent的消息段计数器的值counter[acurrent]=counter[acurrent]+1;第九步、按如下公式计算当前动作acurrent产生的瞬时奖赏值r,瞬时奖赏值为执行动作acurrent后从环境获得的立即回报 r=1wait_time[acurrent]+1-4k;第十步、更新前一次的环境状态sprev和前一次的动作aprevsprev=scurrent;aprev=acurrent并转第四步;第十一步、如果发送计时器timer的值超过预设的值,则触发消息段发送处理,依次检测每套通信网络的发送队列,并负责将发送队列中的消息段发送至相应的网络接口控制器,所述预设的值为10ms~1s,具体步骤如下11.1设置待检测网络的标识为i1=0;11.2检测第i1套网络的发送队列,如果发送队列中有消息段,则转步骤11.3,否则转步骤11.4;11.3如果第i1套网络接口控制器有可用资源,可以发送新的消息段,则按先来先服的策略取出该网络发送队列中最前面的消息段j,将其发送至相应的网络接口控制器,并按如下公式更新该网络的消息段计数器和等待时间的值counter[i]=counter[i]-1 wait_time[i]=current_time-enter_time[j]time_interval然后转步骤11.2如果第i1套网络接口控制器无可用资源,则说明该网络目前繁忙,无法发送新的消息段,转步骤11.4;11.4如果i1<m-1,则i1=i1+1,转步骤11.2,继续检测下一套网络的发送队列;否则设置发送计时器timer=0,并启动新一轮计时。FSA00000081338100011.tif,FSA00000081338100021.tif,FSA00000081338100022.tif,FSA00000081338100031.tif,FSA00000081338100033.tif
2.如权利要求1所述的一种多网络环境下基于强化学习的MPI消息调度方法,其特征 在于所述取0 =0.1。
3.如权利要求1所述的一种多网络环境下基于强化学习的MPI消息调度方法,其特征 在于所述Y =0.95。
全文摘要
本发明公开了一种多网络环境下基于强化学习的MPI消息调度方法,目的是解决现有的循环调度方法导致高性能并行计算机实际应用性能低的缺陷。技术方案是在MPI系统启动过程中,对参数进行初始化,对于配有m套网络的计算环境,根据多Q表组合法创建Cm2个Q表;在MPI系统运行过程中,不断接收应用发出的MPI消息发送请求,确定当前消息段,然后获取当前环境状态,根据状态信息与各Q表中保存的历史经验值,将当前消息段调度至最佳网络,最后计算本次调度获得的瞬时奖赏值,并更新各Q表中的Q值。采用本发明可解决通信负载分配不均衡、无法适应网络状态动态变化、对计算环境的适应性差的问题,提高了高性能并行计算机的实际应用性能。
文档编号G06F9/54GK101833479SQ20101014864
公开日2010年9月15日 申请日期2010年4月16日 优先权日2010年4月16日
发明者卢宇彤, 周恩强, 所光, 曹宏嘉, 董勇, 蒋艳凰, 谢旻, 赵强利, 陈海涛 申请人:中国人民解放军国防科学技术大学