论文部分内容阅读
近十年来,多核、众核体系结构逐渐成为主流,如何充分利用多核、众核体系结构上丰富的计算资源成为学术界和工业界研究的热点。异步的任务图并行能发掘应用中更多的并行性而受到学术界的广泛关注,如何在任务图并行中充分利用缓存层次是一个重要的研究课题。 结构化网格应用是7类HPC(High Performance Computing)计算模式中重要的一类,具有数据量大、计算量大的特点,其性能严重受限于主存带宽。目前用户主要采用循环级并行结构来发掘多核上的线程并行性,该方式在并行性和数据局部性两个方面都表现较差,远不能充分利用多核、众核结构上的计算能力,无法满足数值计算用户对性能的强烈追求。 本文面向结构网格领域,研究了其扁平任务图的特点,分析了多种领域信息对调度的影响,其中重点关注了网格算子的亲和性、算子特征和任务图分区特征,设计了利用领域信息优化任务图调度中数据重用的多种技术。本文的主要贡献如下: 1)设计和实现了一个各功能模块可配置的、高效的任务调度系统,作为任务调度优化研究的平台基础。该任务调度系统实现了对任务队列组织、派生顺序、任务获取、任务进队等各个调度环节的选择和控制;它还可以利用程序的分区、亲和、任务类型等领域信息来指导调度。 2)提出了基于亲和性的动静态结合的任务调度机制,可以根据编译给出的任务亲和策略及信息,尽可能地让任务在其亲和的调度线程上执行。对于四个典型的网格应用,相比于TBB(Threading Building Blocks)任务调度系统,基于亲和性的动静态结合的任务调度机制可以显著改善应用的缓存重用,提升了网格应用的性能,最高加速可达22%。 3)利用网格应用任务图的分区特征,我们探索了分区调度的优化实现和用户接口。实验结果表明分区调度可以得到最高35%的性能提升,对于缓存的优化效果显著。