论文部分内容阅读
长期以来,并行计算机的计算能力持续遵循Moore定律快速增长,新的体系结构不断出现,但并行计算却一直未能真正成为计算的主流。人们逐渐认识到仅仅设计和建造并行硬件是不够的,并行计算的真正挑战在于支持并行程序设计的软件。现有并行程序设计系统普遍存在抽象层次较低、程序开发困难的问题。并行程序与相应并行算法描述相比往往要复杂得多,导致并行程序的可读性和可扩展性较差。同时,并行体系结构的多样性也造成了并行程序设计模型和软件系统的多样性,限制了并行应用程序的通用性和灵活性。因此,如何提高并行程序设计模型和相应并行程序设计系统的抽象层次,支持通用并行数据结构和算法的开发,并最终提高并行程序开发的效率,成为并行计算中需要解决的关键问题。本文针对上述问题开展了以下研究工作: (1) 消息传递并行程序设计模型研究 针对现有消息传递系统抽象层次过低的问题,提出新的泛型面向对象消息传递接口——GOOMPI,创建了完整的数据划分、序列化和传输框架,有效地解决了任意用户自定义、复杂、动态数据结构和抽象数据类型的消息传递问题;设计和实现了基于策略的多功能通信端口,提供流式接口和消息类型检查机制,支持基于消息传递的并行算法到相应并行程序的快速和直观地映射;利用GOOMPI实现了若干典型的基于消息传递的并行算法,并与相应的MPI实现进行了对比。 (2) 共享存储并行程序设计模型研究 针对现有多线程程序设计系统的不足之处,提出新的并行多线程接口——PMT,在不依赖于语言扩展和专用编译器的前提下,实现直接面向多线程并行程序设计的支持,包括并行任务的管理和线程池机制、各种并行执行区域、并行循环的静态和动态调度、各种支持并行访问的共享数据结构等;利用PMT对C++标准模板库中的若干数据结构和算法进行了并行化。 (3) 锁无关的投机并行多线程研究 讨论了未来的多核体系结构上基于事务性执行的投机并行多线程技术——SPT/TX。由于目前尚没有支持投机并行多线程的硬件产品,因此提出基于软件的SPT/TX功能性模拟算法和正确性验证算法,并在此基础上,提出利用二进制代码动态插桩技术,设计并实现了基于软件的SPT/TX功能性模拟器和正确性验证器,有效支持了对SPT/TX技术的进一步研究。 (4) 统一架构并行程序设计模型研究