论文部分内容阅读
多核已经成为处理器设计的主流技术,应用软件要想获得性能提升也必须实施并行化,并行编程也就成为了广大程序员不可回避的问题。
传统的并行计算多集中在高性能数值计算领域,随着多核处理器的普及,大量非数值计算应用迫切需要并行化。但是,传统的并行编程模型并不能很好地满足这些应用的需求,新兴应用领域对任务并行和编程产能提出了更高的要求。很多遗产软件在算法层面蕴含着丰富的并行性,但是,软件的串行编程风格导致它们在并行化过程中遇到许多障碍。因此,本文针对非数值计算应用的并行化需求,开展面向多核架构的高产能、高性能的并行编程模型研究。
本文的主要创新和贡献如下:
1.提出一个面向多核处理器的并行编程模型:PTA(Process-based TAsk parallelprogramming model)。PTA基于进程模型,任务具备继承性、隔离性和可定序性。PTA可自动避免数据竞争、原子性违反等常见并发错误,有效减轻程序员的编程负担。
2.提出一种分割自调度执行模型,该模型将循环体划分成序言段和任务段,对它们采取不同的调度策略,保证了依赖关系并提高了执行效率。与常规的主从调度模型相比,对于论文中选用的9个非数值计算测试用例,在8核和48核系统上分别获得平均37.30%和55.63%的性能提升。
3.给出PTA模型的产能评估。通过9个非数值计算应用程序对PTA进行了产能评估,应用范围涉及自然语言处理、编译器、生物计算、金融计算、图像检索、游戏等,最大程序规模可达50万行以上。实验表明,使用PTA编程模型比现有多线程模型(Pthread、OpenMP、Cilk)产能显著提高。使用PTA模型并行化上述程序平均只需修改约15行代码,不到多线程模型修改量的10%。
4.给出PTA模型的性能评估。通过上述程序对PTA和多线程模型进行了性能评估。在8核并行系统上,PTA可获得最高7.90、平均6.97的加速比,相比多线程模型平均提升6.14%;在48核并行系统上,PTA可获得最高44.88、平均29.55的加速比,相比多线程模型平均提升18.58%。
5.实现了PTA模型的编译系统,系统特点如下:
a)兼容现有OvenMP,可与OpenMP有机结合,实现多层次并行。
b)支持程序中存在I/O的并行化。
c)提供了程序分析工具,帮助找出程序中潜在影响正确并行化的数据访问或代码,进一步提高并行编程产能。