论文部分内容阅读
在过去的20年间并行计算在硬件层面迎来了巨大的发展,从原来单一提升CPU主频到如今的单CPU多核化、众核主流化、多线程、高并发、分布式再到GPU、MIC等异构加速部件的出现。但与之相对应的是编程模型的相对滞后,以MPI为主的高性能计算模型已经出现了超过20年,不仅越来越难以发挥硬件计算性能,同时复杂多样的平台也增加了MPI的编程和调试难度。所以,并行计算领域需要新一代的编程标准,在保证性能的同时,提供标准的、易用的编程界面,从而进一步促进并行计算的发展。 基于这样的背景,本文通过研究传统整体同步并行模式与数据流模式的优劣以及在共享内存和分布式环境下的数据驱动动态运行时环境特点,开发出一套基于数据流模型的并行计算任务调度框架STAR及其分布式版本STARD。 STAR主要有易用性、可扩展性以及高性能等特点。易用性体现在无论是STAR还是STARD均为用户提供了一整套简单易用的框架API,框架将基于MPI、pthread等并行计算工具的开发与调试巧妙地隐藏起来,从而把用户从考虑并行计算运行环境的各种细节中解放出来,专注于程序本身的逻辑正确以及性能调试上。在降低STAR使用门槛的同时也提高了使用STAR进行开发的效率。可扩展性则表现在计算规模的可伸缩以及对于共享内存以及分布式环境下的可兼容上。最后,借助数据流模型本身的特点以及调度优化达到较好的性能。 本文首先设计并实现了共享内存版本STAR。STAR通过用户串行代码的数据依赖性建立基于数据流的任务依赖有向无环图DAG,并以此为依据进行任务调度,避免了传统整体同步模式下的全局等待,最大限度地挖掘并行性,因而有良好的运行效率。在通过加入负载均衡、数据本地性追踪以及Work Stealing等等优化技术后,性能有了进一步提升。 在STAR的基础之上,本文开发出STAR的分布式版本STARD。STARD同样以DAG作为调度依据,并采取了典型的Master/Slave结构,同时为了避免Master与Slave的通信瓶颈,本文开发了一套分布式共享内存环境STAR-MEMORY以保证跨节点数据传输的高效。