您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 并行计算通信库测试方法研究及实践
212并行计算通信库测试方法研究及实践熊玉庆1张云泉2(中科院计算所,100080,北京)1(中科院软件所,100080,北京)21摘要并行计算通信库的测试在并行计算系统中起一个极其重要的作用。一般对通信库的测试都是通过设计一些测试程序对库的各个或几个部分分别单独隔离测试。但是许多库中的错误是这种隔离测试方法测不出来的,只有当库的多个部分以某种复杂的,有机的方式组合运行时才会暴露出来。这种复杂有机的组合方式,从设计库的测试角度很难形成。本文提出二个新的测试方法,这二方法是根据通信库结构的分层特性,利用可移植的上层库的测试程序来测试下层库。上层库的测试程序也可看作是下层库的应用程序,但与一般的下层库应用程序不同,它几乎覆盖了下层库的各个部分,且有机地将它们组合起来,运行时形成某种复杂的形态,而仅用下层库的测试程序往往达不到这种形态。这样逃过下层库测试程序的错误就可能暴露出来。关键词并行计算,通信库,测试方法,MPI,BLACSStudyandPracticeofTestingApproachesofCommunicationLibrariesforParallelComputingXiongYuqing1ZhangYunquan2(TheinstituteofComputingTechnology,ChineseAcademyofSciences,100080,Beijing)1(TheinstituteofSoftware,ChineseAcademyofSciences,100080,Beijing)2AbstractTestingofcommunicationlibrariesforparallelcomputinghasanimportantroleinparallelcomputingsystems.Ingeneral,testingofcommunicationlibrariesisdonebysometestersdesignedtotesteveryorseveralpartsofthelibrariesseparately.However,manyerrorsoflibrariesnottestedbytheseparatemethodscanbeexposedwhenmanypartsoflibrariesarerunningbycombinationofthemintermofakindofcomplicatedandorganicways.Butitisratherdifficultthatthecomplicatedandorganiccombinationsresultfromthedesignoflibrarytestersthemselves.Thispaperproposestwonewtestingapproaches,whicharebasedonthefeatureoflayeredlibraryarchitecturesandtestslowerlibrariesbyportabletestersofupperlibraries.Thetestersofupperlibrariescanalsoberegardedasapplicationprogramsoflowerlibraries,buttheyaredifferentfromgeneralapplicationprogramsoflowerlibraries.Theyalmostcoververypartsoflowerlibraries,combinethemorganically,andformacomplicatedsituationinruntime,whichcannotbeeasilyobtainedonlybytestersoflowerlibraries.Inthiscase,theerrorsmaybeexposedwhichcanescapefromtestersoflowerlibraries.Keywords:parallelcomputing,communicationlibrary,testingapproach,MPI,BLACS1引言并行计算通信库的测试对并行计算系统至关重要,因为一个正确的通信库是并行计算系统的基础。对通信库的测试,一般是对库的各个或几个部分分别隔离测试[1][2]。虽然也有所谓的系统测试,但也往往只是考虑到有限的方面。然而,库中的许多错误是在多个成分以某种有机的方式组合起来相互作用时才暴露出来,而人们很难从测试角度有意识地构造出这种情形。本文根据通信库的结构特性,提出二个新的测试方法。一般地,通信库结构都是分层的。例如,用于线性代数计算的通信库BLACS[3](BasicLinearAlgebraCommunicationSubprograms)是建立在MPI[4]和PVM[5]等通信库上的,而MPI的一个实现MPICH[6]又是建1本文完成于中国科学院软件研究所并行软件研究开发中心,并得到国家863计划资助。213立在P4[7]上的。这二个新的测试方法就是利用某平台上正确的上层通信库的可移植测试程序来测试另一平台上的下层通信库。上层通信库测试程序也可看作下层通信库的应用程序,但是由于上层库的实现一般覆盖了下层库的各个部分,上层库的测试程序又覆盖了上层库的各个部分。因而与一般的下层库应用程序不同,上层库的测试程序也覆盖了下层库的几乎所有部分,且将它们有机地组合起来,在运行时,它们形成一种对下层库来说极复杂的情形。这种复杂的情形从下层通信库测试角度很难人为地构造出来。在这种情形下,许多下层库测试程序不能测的错误就可能暴露出来。本文以成功地在HitachiSR2201和曙光2000上运行的,建立在MPI和PVM上的BLACS的测试程序来测试其他并行计算系统(在本文中我们统称它们为X系统)上已通过MPI测试程序测试的MPI系统为例,证明本文提出的测试方法的可行性。2通信库测试新方法原理测试方法一:设LC是一个在平台上的要测试的通信库,UC是建立在LC上的可移植通信库(如图1)。TEST_UC是UC的一个测试程序,在另一平台上TEST_UC成功地通过对UC的测试。因而在平台上TEST_UC的正确性被确保。为了对上的LC库进行测试,把TEST_UC在上运行。由于UC是可移植的,因而如果上的LC是正确的话,TEST_UC应该与在上一样成功通过;若不能,则应该可以判定是上的LC或其下层库有错误。图1通信库UC的结构(对于方法一)测试方法一只能确定LC或其下层库有错误。如果需要准确确定错误位置,则可应用下面的测试方法二。测试方法二:设LCa和LCb是二个在平台上的要测试的通信库,它们是建立在另一较低层通信库LLC上。UC是建立在LCa和LCb上的可移植通信库(如图2)。TEST_UC是UC的一个测试程序,在另一平台上TEST_UC成功地通过对UC的测试。因而在平台上TEST_UC的正确性被确保。为了对上的LCa和LCb库进行测试,把TEST_UC在上运行。由于UC是可移植的,因而如果上的LCa和LCb是正确的话,TEST_UC应该与在上一样成功通过;若不能,则⑴若对建立在LCa上的UC,TEST_UC不能通过而对建立在LCb上的UC,TEST_UC能通过,则应该可以判定是上的LCa有错误;⑵若对建立在LCb上的UC,TEST_UC不能通过而对建立在LCa上的UC,TEST_UC能通过,则应该可以判定是上的LCb有错误;⑶若都不能通过,则上LLC有错误的可能性比LCa和LCb都错的可能性大。UCLC214UCUC图2通信库UC的结构(对于方法二)在上述二个测试方法中UC的可移植性很关键,否则的话,当TEST_UC在上不能通过时,就不能判定是上的LC(对方法一)或LCa或LCb或LLC(对方法二)有错误。因为这时候的错误可能是UC不可移植带来的。测试方法一比测试方法二简单,快捷。但测试方法二可更准确地定位错误。当用测试方法一确定LC或其下层库有错误,但很难确定错误的准确位置时,可用测试方法二。若满足测试方法二中⑶的条件,则错误出在LC下层库的可能性很大。这时,可将注意力集中在LC的下层库中进行排错。3BLACS,BLACS测试程序及MPICH测试程序BLACS是一个面向线性代数计算的,可移植的通信库,它是建立在MPI和PVM等较低层的通信库上的。在并行计算系统X上BLACS的结构如图3所示.BLACS系统基本上由二部分组成:通信子程序和支撑子程序。通信子程序由点到点通信,广播通信和组合操作组成。支撑子程序主要由系统初始化,退出系统及逻辑进程网格信息获取组成。建立在MPI和PVM上的BLAC的这些部分几乎涉及MPI和PVM的各个部分。图3通信库BLACS在系统X上的结构BLACS测试程序对BLACS的上述各个部分分别进行测试,重点对通信子程序,尤其是广播通信和组合操作测试较多,对各种矩阵的形状,大小,各种数据类型,各种逻辑进程网格形状,及群通信时数据在进程之间的流向等进行多种组合测试。MPICH是MPI的一个著名实现[1]。MPICH测试程序也是对MPICH的各个部分分别进UCLCaLCbLLC215行测试。这些测试是由很多小的测试程序来执行的。它们分成下面几类:⑴测试各种点到点通信子程序;⑵测试各种群通信子程序;⑶测试通信上下文(context)操作;⑷测试环境子程序;⑸测试拓扑子程序;⑹一些其他的测试程序。它们进行一些所谓的系统测试,但考虑的情形很简单。由此可看出,MPICH的测试程序并没有对MPICH的各个部分进行复杂的混合的测试。事实上,很多复杂的情形从测试程序的设计角度,也很难构造出来。BLACS测试程序虽然是为测试BLACS而进行设计的,考虑的情况是有限的。然而它对于下层的MPI来说,却是一个极复杂的应用程序。由于BLACS几乎涉及MPI的各个部分,而BLACS测试程序又完全覆盖了BLACS的所有部分。因而与一般的MPI应用程序不同,它几乎覆盖了MPI的各个部分,且将它们有机地组合在一起,运行时呈现出一个极其复杂的状态,这种状态是MPICH测试程序达不到的。这样,逃过了MPICH测试程序的错误可能这时就暴露出来了。基于这一情况利用第2节的方法,我们用已经在曙光2000和HitachiSR2201上顺利运行了的BLACS测试程序来测试新的并行系统上的MPI实现。4BLACS测试程序对X系统上的MPI的测试X系统上的MPI(其实现是MPICH)已经通过MPI(即MPICH)测试程序的测试。但运用上述测试方法及BLACS测试程序,我们发现这些系统的MPI的下列问题:⑴MPI同步及进程挂起问题。由于BLACS测试程序提供了输入参数的组合测试(数据精度,实现算法(逻辑拓扑),进程网格,消息长度),使得用户很容易通过修改输入文件参数改变测试的组合数目及测试模式。改变了原有MPI软件包中同一种通信模式多次重复测试的做法使得整个测试具有动态的效果。由于有些系统在实现MPI的同步时,为了提高同步速度,采用硬件实现所有进程的同步。但未考虑到只有部分进程参与同步时的情况。这导致部分进程同步时的挂起现象。这种情况在原有MPI软件包单一重复的测试情况下,是不可能查出来的。而运用前述的测试方法一和BLACS测试程序,通过不断改变参与同步的进程数目,使该问题暴露出来。⑵消息处理器与MPI通信buffer之间的Cache一致性问题。MPI软件包在进行正确性测试时,只选取小规模问题进行测试,这就使得系统的某些关键参数不能受到充分的测试。而这些关键参数正是消息系统设计时的分支点(重新判断分包及buffer重用等操作),极易发生意想不到的问题。由于BLACS测试程序可以很容易地产生大量不同类型和长度的消息传递测试。我们运用测试方法一和BLACS测试程序,在消息量大,buffer出现重用时,发现了有的系统消息处理器与MPI通信buffer之间的Cache一致性问题。⑶更
本文标题:并行计算通信库测试方法研究及实践
链接地址:https://www.777doc.com/doc-316183 .html