学位论文简介
新型体系结构计算系统是由高性能通用处理器和多种专用加速器构成的高度可扩展的异构计算系统。受系统结构复杂性影响,计算程序在此计算系统上开发和移植过程中面临更复杂的性能优化需求。计算任务是计算程序的核心执行者,其性能直接影响软件的整体效率。计算任务的调度优化决定了计算计算程序的整体性能优化,然而在新型体系结构计算系统中计算任务的调度优化面临着三大挑战:新型体系结构计算系统中动态任务并行的调度优化挑战;计算任务中算子难以利用领域专用的数学计算库的困难以及新型体系结构下计算任务算子难以适配最优算子实现的困难。本文的研究目标是通过优化动态任务并行调度和计算任务算子调度来解决上述三个挑战。为此开展了如下三个研究工作:
(1)设计了面向新型体系结构的动态任务并行调度框架。该框架包含统一线程管理模块、自适应批流调度模块和就近任务窃取负载均衡模块。通过统一线程管理和基于芯粒的线程核簇绑定策略,简化了多线程编程中的资源管理问题。采用自适应批流调度策略和基于芯粒的就近任务窃取方法,提升了动态任务并行的性能。实验结果表明,该框架优于业内其他主流并行解决方案。
(2)开发了线性代数计算算子的自动识别组件。该组件具有三个重要模块,分别是线性代数计算算子逻辑特征表示模块,线性代数计算算子逻辑特征库,线性代数计算算子识别模块。算子逻辑特征是算子内在的本质特征,由算子的数学运算表达式和必要数据处理方式构成。围绕算子逻辑特征,线性代数计算算子逻辑特征表示模块提供了一个抽象层,使得不同的算子实现可以在更高层次上被识别;线性代数计算算子逻辑特征库为算子逻辑特征表示提供了存储空间,为算子识别提供了搜索空间;线性代数计算算子识别模块通过代码解析,依赖分析,依赖转化,识别比对四个过程捕获算子逻辑特征进而识别算子。
实验结果显示,采用该识别组件能够帮助计算程序有效利用高性能计算库提升程序性能,性能优化效果优于直接使用高级编译器优化的结果。
(3)提出了计算任务算子自适应调度组件。该组件利用编译器辅助技术,动态地将计算算子调度到最适合的数学计算库例程上执行,实现了算子的最优实现。组件采用惰性运行时方式支撑算子自适应调度,并设计了基于机器学习的库例程性能评估方法。实验验证表明,该组件显著提高了数值模拟软件与机器学习应用程序的性能,系统计算资源利用率显著提升。
主要学术成果
[1] Qinyun Cai, Guanghua Tan, Wangdong Yang, Xianhao He, Yuwei Yan, Keqin Li, Kenli Li. COALA: A Compiler-Assisted Adaptive Library Routines Allocation Framework for Heterogeneous Systems [J]. IEEE Transactions on Computers, 2024, 73(7): 1724-1737. (CCF-A, 第一作者)
[2] Qinyun Cai, Guoqing Xiao, Shengle Lin, Wangdong Yang, Keqin Li, Kenli Li. ABSS: An Adaptive Batch-Stream Scheduling Module for Dynamic Task Parallelism on Chiplet-based Multi-Chip Systems [J]. ACM Transactions on Parallel Computing, 2024, 11(1): 1-24. (ACM Tans,第一作者)
[3] Yuwei Yan, Yikun Hu, Qinyun Cai, WangDong Yang, Kenli Li. DIDS: A distributed inference framework with dynamic scheduling capability [J]. Future Generation Computer Systems, 2024. (中科院SCI 2区, 第三作者)
[4] Shengle Lin, Wangdong Yang, Yikun Hu, Qinyun Cai, Minlu Dai, Haotian Wang, Kenli Li. HPS Cholesky: Hierarchical parallelized supernodal Cholesky with adaptive parameters [J]. ACM Transactions on Parallel Computing, 2024, 11(1): 1-22. ((ACM Tans,第四作者)