并行计算通信库测试方法研究及实践熊玉庆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]又是建立在P4[7]上的。这二个新的测试方法就是利用某平台上正确的上层通信库的可移植测试程序来测试另一平台上的下层通信库。上层通信库测试程序也可看作下层通信库的应用程序,但是由于上层库的实现一般覆盖了下层库的各个部分,上层库的测试程序又覆盖了上层库1本文完成于中国科学院软件研究所并行软件研究开发中心,并得到国家863计划资助。的各个部分。因而与一般的下层库应用程序不同,上层库的测试程序也覆盖了下层库的几乎所有部分,且将它们有机地组合起来,在运行时,它们形成一种对下层库来说极复杂的情形。这种复杂的情形从下层通信库测试角度很难人为地构造出来。在这种情形下,许多下层库测试程序不能测的错误就可能暴露出来。本文以成功地在HitachiSR2201和曙光2000上...