大规模异构并行计算的容错方法

文档序号:6380832阅读:215来源:国知局
专利名称:大规模异构并行计算的容错方法
技术领域
本发明涉及计算机领域,尤其涉及一种大规模异构并行计算的容错方法。
背景技术
大规模异构高性能计算机系统是未来极大规模并行计算的重要发展方向,与传统单核/多核处理器计算机系统相比,大规模异构高性能计算机系统以异构处理器为基础,处理器核数急剧增加,系统架构和访存方式发生重大变化。在大规模异构计算机系统环境下,如何保证大规模并行计算的可靠性和稳定性是关键问题,而并行算法级的容错机制和间断处理机制是关键技术之一。需要设计高效的算法级并行容错方法,以充分利用计算资源,减少故障恢复时间,提高并行计算的可靠性。目前,在并行算法级的容错机制和间断处理机制方面,主要应用领域的并行计算软件都设计和开发了大规模并行算法的任意可变并行规模的保留恢复功能,能够保证算法 在MPI级(“消息传递接口'Message Passing Interface)的自动容错能力,但在众核并行层次上,因为GPU (“图形处理器”,GraphicProcessing Unit)、Cell处理器等架构的特殊性和复杂性,很少有应用程序考虑众核一级的容错功能实现,在计算过程中不能自动检测大规模异构计算机系统在处理器核层次的硬件故障,只能从最终的计算结果判断计算是否正常可靠,难以保证大规模异构并行计算的可靠性和稳定性。对于某些计算时间较长的中大规模众核并行课题而言,经常会出现课题运行挂起的情况,需要人工干预后重新提交。以航天飞行器全流域数值模拟应用领域为例,据目前可查文献,现有的异构众核并行只实现了中间计算结果的记录,即实现一般的保留恢复功能,没有考虑到众核级的容错功能实现,在计算过程中不能自动检测大规模异构计算机系统在处理器核层次的硬件故障,只能从最终的计算结果判断计算是否正常可靠。公开号为CN101625736A的中国专利申请中,公开了一种分布式计算环境下并行进化算法的容错方法,但该申请也未解决上述技术问题。

发明内容
本发明所要解决的技术问题是如何充分利用计算资源,减少故障恢复时间,保证大规模并行计算的可靠性和稳定性。为了解决上述问题,本发明提供了一种大规模异构并行计算的容错方法,适用于通过多个时间步迭代计算的并行计算课题,其中,每个时间步的迭代计算包括多个核心计算模块,包括对每个时间步的每个核心计算模块,进行以下处理将所述计算课题的计算数组的内容赋值给所述计算数组的备份数组;完成核心计算模块的计算;其中,所述完成核心计算模块的计算包括统计可用处理器核数,以获得第一处理器核数;所述可用处理器核并行运算所述核心计算模块;再次统计可用处理器核数,以获得第二处理器核数;
比较所述第一处理器核数和所述第二处理器核数,若所述第二处理器核数小于所述第一处理器核数,则将所述备份数组的内容赋值给所述计算数组,并重新完成核心计算模块的计算,直至所述第一处理器核数与所述第二处理器核数一致。可选的,在开始每个时间步的迭代计算之前,还包括申请所述计算数组的备份数组。可选的,在所述统计可用处理器核数,以获得第一处理器核数之后,还包括按照所述第一处理器核数进行众核任务分解。可选的,所述重新完成核心计算模块的计算包括重新统计可用处理器核数,以获得第一处理器核数;按照所述第一处理器核数进行众核任务分解; 所述可用处理器核并行运算所述核心计算模块;再次统计可用处理器核数,以获得第二处理器核数。可选的,若所述第一处理器核数与所述第二处理器核数一致,则统计完成所述核心计算模块的每个处理器核所用的时间。可选的,还包括在所述时间步的所有核心计算模块都完成之后,基于完成各核心计算模块的各处理器核所用的时间,对各处理器核的计算状态进行统计和预警。可选的,所述对各处理器核的计算状态进程统计和预警包括将所述完成各核心计算模块的各处理器核所用的时间与各处理器的预设阈值做比较;若某处理器核完成核心计算模块所用的时间大于预设阈值时,对该处理器核进行统计并预警。可选的,所述预设阈值为平均计算时间的150%。与现有技术相比,本发明的技术方案具有以下优点I、本发明采用重复计算和重新任务分解方法,对计算过程中的硬件故障和某核心计算模块完成后的硬件故障进行容错,能够自动检测大规模异构计算机系统在处理器核层次的硬件故障,充分利用计算资源,减少故障恢复时间,保证了大规模并行计算的可靠性和稳定性。2、可选方案中,还定期对各处理器核的计算状态进行统计和评估,对可能发生的硬件故障进行预警,实现对大规模异构并行计算的算法级故障检测、容错和预警。


图I为本发明的大规模异构并行计算的容错方法第一具体实施方式
的流程示意图;图2为本发明的大规模异构并行计算的容错方法第二具体实施方式
的流程示意图;图3为本发明的大规模异构并行计算的容错方法第三具体实施方式
的流程示意图;图4为本发明的大规模异构并行计算的容错方法第四具体实施方式
的流程示意图。
具体实施例方式在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施的限制。其次,本发明利用示意图进行详细描述,在详述本发明实施例时,为便于说明,所述示意图只是实例,其在此不应限制本发明保护的范围。在大规模异构并行计算课题中,一个计算课题通过多个时间步的迭代计算完成。同一时间步中可包含多个核心计算模块,每个核心计算模块由多个处理器核并行计算。本发明人试图通过提早发现计算错误,减少因计算错误而进行的重复计算,从而减少故障恢复时间,达到保证大规模并行计算的可靠性和稳定性的目的。 为了解决背景技术中的技术问题,本发明提供了一种大规模异构并行计算的容错方法,在一个计算课题的多个时间步迭代计算过程中,分别统计该时间步每个核心计算模块前后的可用处理器核数。一旦前后的可用处理器核数不一致,则表明在该核心计算模块的计算过程中有处理器当机。随即丢弃该核心计算模块的计算内容,并通过备份数据重新计算。通过上述方法,可将并行计算错误局限于每个核心计算模块中,使得重复计算量不会超出每个核心计算模块,因而减少故障恢复时间,提高并行计算的可靠性。图I为本发明的大规模异构并行计算的容错方法第一具体实施方式
的流程示意图。参考图1,第一具体实施方式
包括以下步骤执行步骤S101,将计算课题的计算数组的内容赋值给所述计算数组的备份数组。执行步骤S102,统计可用处理器核数,以获得第一处理器核数。执行步骤S103,可用处理器核并行运算核心计算模块。需要说明的是,在大规模计算课题中,核心计算模块通常为计算量较为集中的核心循环部分。通常作法是将核心计算模块的任务进行分解,交由各处理器并行共同完成。因此,核心计算模块的正确性基于每个处理器的运行结果皆正确,任一处理器发生硬件故障,都将导致该次核心计算模块的计算错误。执行步骤S104,再次统计可用处理器核数,以获得第二处理器核数。执行步骤S105,判断第二处理器核数是否小于第一处理器核数。若所述第二处理器核数小于所述第一处理器核数,则表明有处理器在核心计算模块的计算过程中发生了硬件故障,本次核心计算模块的计算结果错误。则丢弃本次计算结果,执行步骤S106,将备份数组的内容赋值给计算数组之后,从步骤S102处继续执行,重新计算该核心计算模块。若所述第二处理器核数等于所述第一处理器核数,则表明各处理器在核心计算模块的计算过程中皆正常,该核心计算模块的计算结果正确,则结束该核心计算模块的计算。下面结合具体实施例对本发明的技术方案做进一步说明。执行步骤SlOl,将计算数组A的内容赋值给计算数组A的备份数组B。执行步骤S102,统计本次核心计算模块的可用处理器核数,以获得第一处理器核数,比如第一处理器核数为100,即该核心计算模块由100个处理器共同完成。执行步骤S103,该100个处理器核并行运算核心计算模块。
执行步骤S104,在运算完毕之后,再次统计可用处理器核数,以获得第二处理器核数,比如第二处理器核数为98。执行步骤S105,判断第二处理器核数是否小于第一处理器核数。本核心计算模块结束后,第二处理器核数98小于第一处理器核数100,说明有2个处理器在计算过程中发生了硬件故障,核心计算模块的结果不正确。因此,丢弃本次核心计算模块的计算结果,需重新计算本核心计算模块。执行步骤S106,将备份数组B的内容赋值给计算数组A。从步骤S102处继续执行,再次统计本次核心计算模块的可用处理器核数,获得第一处理器核数为98。 执行步骤S103,该98个处理器核并行运算本次核心计算模块。执行步骤S104,在运算完毕之后,再次统计可用处理器核数,获得第二处理器核数,比如第二处理器核数为98。执行步骤S105,判断第二处理器核数是否小于第一处理器核数。本次核心计算模块结束后,第二处理器核数98等于第一处理器核数98,说明各处理器在核心计算模块的计算过程中皆正常,本次核心计算模块的计算结果正确,可结束本次核心计算模块的计算。若本次核心计算模块结束后,第二处理器核数仍然小于第一处理器核数,则说明在本次核心模块计算过程中仍然有处理器发生了硬件故障,本次核心计算模块的计算结果仍然不正确,需要重新计算。图2为本发明的大规模异构并行计算的容错方法第二具体实施方式
的流程示意图。与第一具体实施方式
不同的是,第二具体实施方式
在确保本核心计算模块计算正确之后,对参与本核心计算模块的各处理器核所用的时间进行了统计。而且第二具体实施方式
示出了一个时间步中多个核心计算模块的执行过程。参考图2,第二具体实施方式
包括以下步骤执行步骤S201,将计算课题的计算数组的内容赋值给所述计算数组的备份数组。执行步骤S202,统计可用处理器核数,以获得第一处理器核数。执行步骤S203,可用处理器核并行运算核心计算模块。执行步骤S204,再次统计可用处理器核数,以获得第二处理器核数。执行步骤S205,判断第二处理器核数是否小于第一处理器核数。若所述第二处理器核数小于所述第一处理器核数,则执行步骤S206将备份数组的内容赋值给计算数组后,由步骤S202处循环执行。若所述第二处理器核数等于所述第一处理器核数,则执行步骤S207,统计完成该核心计算模块的每个处理器核所用的时间。执行步骤S208,判断该时间步的所有核心计算模块是否皆已处理完。若是,则本时间步的迭代计算完成。否则,从步骤S201开始,继续完成本时间步的下一核心计算模块。下面结合具体实施例对本发明的技术方案做进一步说明。本实施例以某时间步包括2个核心计算模块modulel和module2为例。首先,执行核心计算模块modulel。执行步骤S201,将计算课题的计算数组A的内容赋值给所述计算数组的备份数组B0
执行步骤S202,统计可用处理器核数,以获得第一处理器核数,比如第一处理器核数为100。执行步骤S203,由该100个可用处理器核并行运算核心计算模块modulel。执行步骤S204,再次统计可用处理器核数,以获得第二处理器核数,比如第二处理器核数为98。执行步骤S205,判断第二处理器核数是否小于第一处理器核数。由于计算核心计算模块modulel后的第二处理器核数98小于计算前的第一处理器核数100,则执行步骤S206将备份数组B的内容赋值给计算数组A后,从步骤S202处继续执行,再次统计本次核心计算模块的可用处理器核数,获得第一处理器核数为98。执行步骤S203,由该98个处理器核并行运算核心计算模块modulel。执行步骤S204,再次统计可用处理器核数,获得第二处理器核数,比如第二处理 器核数为98。执行步骤S205,判断第二处理器核数是否小于第一处理器核数。本次核心计算模块结束后,第二处理器核数98等于第一处理器核数98,说明各处理器在核心计算模块modulel的计算过程中皆正常,核心计算模块modulel的计算结果正确,可结束核心计算模块modulel的计算。执行步骤S207,统计完成核心计算模块modulel的98个处理器核所用的时间。执行步骤S208,判断该时间步的所有核心计算模块是否处理完。本实施例中还有核心计算模块module2未处理,因此从步骤S201开始,继续处理核心计算模块module2。执行步骤S201,将计算课题的计算数组A的内容赋值给所述计算数组的备份数组B0执行步骤S202,统计可用处理器核数,以获得第一处理器核数,比如第一处理器核数为50。需要说明的是,根据不同的核心计算模块的计算量,可为所述核心计算模块分配数量不等的处理器核数,本发明对此不作具体限定。具体到本实施例,完成核心计算模块modulel和完成核心计算模块module2的可用处理器核数可不相同。执行步骤S203,由该50个可用处理器核并行运算核心计算模块modUle2。执行步骤S204,再次统计可用处理器核数,以获得第二处理器核数,比如第二处理器核数为50。执行步骤S205,判断第二处理器核数是否小于第一处理器核数。计算核心计算模块modUle2后的第二处理器核数50等于计算前的第一处理器核数50,说明各处理器在核心计算模块module2的计算过程中皆正常,核心计算模块module2的计算结果正确,可结束核心计算模块module2的计算。执行步骤S207,统计完成核心计算模块modUle2的50个处理器核所用的时间。需要说明的是,该50个处理器核可以是完成核心计算模块modulel的98个处理器核中的一部分,或者是完成核心计算模块modulel的98个处理器核以外的其他处理器核,本发明对此不做具体限定。执行步骤S208,判断该时间步的所有核心计算模块是否皆已处理完。本实施例中的2个核心计算模块都已处理,因此,本时间步的迭代计算完成。
图3为本发明的大规模异构并行计算的容错方法第三具体实施方式
的流程示意图。与第二具体实施方式
不同的是,第三具体实施方式
在统计第一处理器核数之后,按照第一处理器核数进行众核任务分解,并且示出了所有时间步的执行过程,而且在每个时间步迭代计算完成后,对各处理器核的计算状态进行统计和预警。参考图3,第三具体实施方式
包括以下步骤执行步骤S301,判断是否所有时间步的迭代计算都已结束。若是,则结束。否则,继续执行步骤S302,将计算课题的计算数组的内容赋值给所述计算数组的备份数组。执行步骤S303,统计可用处理器核数,以获得第一处理器核数。执行步骤S304,按照第一处理器核数进行众核任务分解。执行步骤S305,可用处理器核并行运算核心计算模块。 执行步骤S306,再次统计可用处理器核数,以获得第二处理器核数。执行步骤S307,判断第二处理器核数是否小于第一处理器核数。若是,则执行步骤S308将备份数组的内容赋值给计算数组后,从步骤S303开始循环执行。否则,执行步骤S309,统计完成该核心计算模块的每个处理器核所用的时间。执行步骤S310,判断该时间步的所有核心计算模块是否都已处理完。若否,则从步骤S执行步骤S302开始,继续完成该时间步的下一核心计算模块。若是,则执行步骤S311对各处理器核的计算状态进行统计和预警后,从步骤S301开始,继续完成下一时间步的迭代运算。图4为本发明的大规模异构并行计算的容错方法第四具体实施方式
的流程示意图。与第三具体实施方式
不同的是,第四具体实施方式
示出了申请备份数组,以及对各处理器核的计算状态进行统计的预警的具体步骤。参考图4,第四具体实施方式
包括以下步骤执行步骤S401,申请计算课题的计算数组的备份数组。执行步骤S402,判断所有时间步的迭代是否结束。若是,则结束。若否,则执行步骤S403,将计算课题的计算数组的内容赋值给所述计算数组的备份数组。执行步骤S404,统计可用处理器核数,以获得第一处理器核数。执行步骤S405,按照第一处理器核数进行众核任务分解。执行步骤S406,可用处理器核并行运算核心计算模块。执行步骤S407,再次统计可用处理器核数,以获得第二处理器核数。执行步骤S408,判断第二处理器核数是否小于第一处理器核数。若是,则执行步骤S409,将备份数组的内容赋值给计算数组后,从步骤S404开始循环执行。否则,执行步骤S410,统计完成该核心计算模块的每个处理器核所用的时间。执行步骤S411,判断该时间步的所有核心计算模块是否都已处理完。若否,则从步骤S403开始,继续完成该时间步的下一核心计算模块。若是,则执行步骤S412,将该处理器核完成核心计算模块所用的时间与预设阈值做比较。即在一个时间步迭代计算完成之后,才对各处理器核的计算状态进行统计和评估。这是在保证处理器计算效率和对可能的硬件故障提早预警之间进行权衡后的较佳方案。执行步骤S413,判断该处理器核所用的时间是否大于该处理器的预设阈值。若是,则执行步骤S414,对该处理器核进行统计并预警后,执行步骤S415。需要说明的是,所述预设阈值可与处理器核的平均计算时间有关。所述平均计算时间为执行并行计算前的已知参数,能较客观地反应各处理器计算速度的正常水平。具体地,所述平均计算时间可通过预先实验得知,或者根据各处 理器的出厂设置得知,但本发明对此不作具体限定。若预设阈值设置得过小,则可能引起频繁预警,甚至误报,从而导致并行任务分配时可用处理器核数无谓减少,计算资源得不到充分利用。若预设阈值设置得过大,则可能预警的作用得不到充分体现,从而导致对并行任务分配时确定可用处理器核数的参考意义不大。因此,本具体实施方式
中,优选的预设阈值为平均计算时间的150%,S卩当某个处理器的计算时间大于平均计算时间的150%,则认为该处理器的计算速度过慢,存在发生硬件故障的风险。比如平均计算时间为10ms,则当统计得到的某处理器完成核心计算模块的时间大于15ms时,对该处理器进行统计和预警。若否,则直接执行步骤S415,判断该时间步的各处理器核是否都已处理完。若是,则从步骤S402开始,继续完成本计算课题下一时间步的迭代计算。若否,则从步骤S412开始,继续对本时间步的下一处理器核进行统计和预警。需要说明的是,通过以上实施方式的描述,本领域的技术人员可以清楚地了解到本发明的部分或全部可借助软件并结合必需的通用硬件平台来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可包括其上存储有机器可执行指令的一个或多个机器可读介质,这些指令在由诸如计算机、计算机网络或其他电子设备等一个或多个机器执行时可使得该一个或多个机器根据本发明的实施例来执行操作。机器可读介质可包括,但不限于,软盘、光盘、CD-ROM (紧致盘-只读存储器)、磁光盘、ROM (只读存储器)、RAM (随机存取存储器)、EPROM (可擦除可编程只读存储器)、EEPROM (电可擦除可编程只读存储器)、磁卡或光卡、闪存、或适于存储机器可执行指令的其他类型的介质/机器可读介质。本发明可用于众多通用或专用的计算系统环境或配置中。例如个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等。本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。
权利要求
1.一种大规模异构并行计算的容错方法,适用于通过多个时间步迭代计算的并行计算课题,其中,每个时间步的迭代计算包括多个核心计算模块,其特征在于 对每个时间步的每个核心计算模块,进行以下处理 将所述计算课题的计算数组的内容赋值给所述计算数组的备份数组; 完成核心计算模块的计算;其中,所述完成核心计算模块的计算包括统计可用处理器核数,以获得第一处理器核数;所述可用处理器核并行运算所述核心计算模块;再次统计可用处理器核数,以获得第二处理器核数; 比较所述第一处理器核数和所述第二处理器核数,若所述第二处理器核数小于所述第一处理器核数,则将所述备份数组的内容赋值给所述计算数组,并重新完成核心计算模块的计算,直至所述第一处理器核数与所述第二处理器核数一致。
2.如权利要求I所述的大规模异构并行计算的容错方法,其特征在于,在开始每个时间步的迭代计算之前,还包括申请所述计算数组的备份数组。
3.如权利要求I或2所述的任一种大规模异构并行计算的容错方法,其特征在于,在所述统计可用处理器核数,以获得第一处理器核数之后,还包括 按照所述第一处理器核数进行众核任务分解。
4.如权利要求3所述的大规模异构并行计算的容错方法,其特征在于,所述重新完成核心计算模块的计算包括 重新统计可用处理器核数,以获得第一处理器核数; 按照所述第一处理器核数进行众核任务分解; 所述可用处理器核并行运算所述核心计算模块; 再次统计可用处理器核数,以获得第二处理器核数。
5.如权利要求4所述的大规模异构并行计算的容错方法,其特征在于 若所述第一处理器核数与所述第二处理器核数一致,则统计完成所述核心计算模块的每个处理器核所用的时间。
6.如权利要求5所述的大规模异构并行计算的容错方法,其特征在于,还包括 在所述时间步的所有核心计算模块都完成之后,基于完成各核心计算模块的各处理器核所用的时间,对各处理器核的计算状态进行统计和预警。
7.如权利要求6所述的大规模异构并行计算的容错方法,其特征在于,所述对各处理器核的计算状态进程统计和预警包括 将所述完成各核心计算模块的各处理器核所用的时间与各处理器的预设阈值做比较; 若某处理器核完成核心计算模块所用的时间大于预设阈值时,对该处理器核进行统计并预警。
8.如权利要求7所述的大规模异构并行计算的容错方法,其特征在于,所述预设阈值为平均计算时间的150%。
全文摘要
本发明提供了一种大规模异构并行计算的容错方法,包括对每个时间步的每个核心计算模块,进行以下处理将计算课题的计算数组的内容赋值给备份数组;完成核心计算模块的计算;其中,完成核心计算模块的计算包括统计可用处理器核数,以获得第一处理器核数;可用处理器核并行运算核心计算模块;再次统计可用处理器核数,以获得第二处理器核数;比较第一处理器核数和第二处理器核数,若第二处理器核数小于第一处理器核数,则将备份数组的内容赋值给计算数组,并重新完成核心计算模块的计算,直至第一处理器核数与第二处理器核数一致。本发明的大规模异构并行计算容错方法能充分利用计算资源,减少故障恢复时间,提高并行计算的可靠性。
文档编号G06F11/07GK102929738SQ20121044229
公开日2013年2月13日 申请日期2012年11月6日 优先权日2012年11月6日
发明者陈德训, 刘鑫, 李芳 , 徐金秀 申请人:无锡江南计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1