资源描述:
《面向对象的并行消息传递库的设计与实现分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第25卷第3期计算机应用Vo.l25No.32005年3月ComputerApplicationsMar.2005文章编号:1001-9081(2005)03-0628-03面向对象的并行消息传递库的设计与实现分析马珂绛(浙江工业大学软件开发环境实验室,浙江杭州310014)(makejiang@126.com)摘要:MPI是并行程序设计中广泛使用的一个消息传递库,虽然标准MPI-2定义了C++绑定,但它并不严格符合面向对象的观点。在分析各类已有面向对象消息传递系统的基础上,用C++设计并实现了一个面向对象的、易于传递对象(包括用户自定义类型和STL容器)的、M
2、PI一致的、类型安全的、基于MPI的并行消息传递库,并给出了相应的使用实例及性能分析。关键词:面向对象;C++;traits;MPI;并行科学计算中图分类号:TP311.52文献标识码:ADesignandimplementationanalysisofanobject-orientedparallelmessagepassinglibraryMAKe-jiang(LaboratoryofSoftwareDevelopmentEnvironment,ZhejiangUniversityofTechnology,HangzhouZhejiang310014,Chi
3、na)Abstract:MPIisawidelyusedmessage-passinglibraryforparallelprograms.ThestandardMPI-2alsodefinesC++bindings.Nevertheless,thereisalackofintegrationofobject-orientedconcepts.Wediscussedsomeexistingobject-orientedmessage-passingsystems,thendescribedourdesignofaparallelmessage-passingli
4、brary,anobject-orientedlibrarywritteninC++onMPI.Ithasthecharacteristicsofeasytransmissionofobjects(includinguser-definedtypesandSTLcontainers),MPIconformityandtypesafety.Examplesandresultsofperformanceanalysisweregiven.Keywords:object-orientation;C++;traits;MPI;parallelscientificcomp
5、uting[1~3]MPI是一种广泛认可的并行消息传递标准,虽然它果可能,就不申请额外的缓存,以节约内存并让下面的MPI已经为所有的MPI接口函数定义了C++绑定,但是这些定去优化通讯,如MPI可以利用能自动发送和接收分散内存块义仅仅封装了MPI的构造等,并没有很好地符合了面向对象的网络硬件。的观念,而且MPI也没有提供用于传递对象的方法,没有支5)线程安全。另外一个目标是保证线程安全,并提供所有[4,5]持STL(标准模板库,C++标准程序库中最重要的部分)建立在这个库上的应用程序或实时并行系统的最大灵活性。等。本文将分析如何用C++设计实现一个真正面向对象的
6、1.2相关问题并行消息传递库,来解决上面提到的这些问题。在一个面向对象的消息传递系统中,理想的状态是有一个简单的接口提供一个发送和接收任何对象的方法,而且这1设计目的和相关问题个方法是类型安全的,并不需要用户提供任何关于被发送对1.1设计目标象的类型信息。设计前先给出一个功能的综述,本文认为以下功能是一重载的方法适合内建类型和已知的库类型如STL容器,个用C++实现的现代并行消息传递库所必备的:但如果用于用户自定义类型,就不得不重载库所提供的消息1)面向对象和类型安全。提供一个面向对象的并行消传递类的方法。一个解决方法是提供一个纯虚类供用户继息传递类库的主要目标
7、是紧紧结合面向对象的概念,特别是承,实现已传输的方法,重载了这个纯虚类的发送和接收函数能传递对象,并且使用简单,高效和类型安全。解决方案可以就可以调用相应的虚拟函数去处理用户定义的数据类型了,使用C++的基本功能如封装和类继承。缺点就是额外的虚拟函数调用和用户必须为每个类实现序列2)C++集成。使用C++的实现必须考虑到C++最新化的方法,而且还必须设计一个纯虚类给应用程序。但总而的功能,如异常捕获等,更重要的是集成C++的标准程序库,言之,虚拟函数可以说是唯一的传递实际用户对象的方法。支持STL的容器,并符合STL的接口协议。3)MPI一致性。在不违反面向对象
8、概念的前提下,设计2现有