面向DCU非一致控制流的编译优化
2023-10-21杨小艺赵荣彩王洪生韩林徐坤坤
杨小艺,赵荣彩,王洪生,韩林,徐坤坤
面向DCU非一致控制流的编译优化
杨小艺1,2,赵荣彩1,2,王洪生2*,韩林1,2,徐坤坤1,2
(1.郑州大学 计算机与人工智能学院,郑州 450001; 2.国家超级计算郑州中心,郑州 450001)( ∗ 通信作者电子邮箱whs1814@foxmail.com)
国产DCU采用单指令多线程(SIMT)的并行执行模型,在程序执行时核函数内会产生非一致控制流,导致线程束中的线程部分只能串行执行,即线程束分化。针对核函数的性能因线程束分化受到严重制约的问题,提出一种减少线程束分化时间的编译优化方法——部分控制流合并(PCFM)。首先,通过散度分析找到同构且含有大量相同指令和相似指令的可融合发散区域;其次,统计合并后节省的指令周期百分比,从而评估可融合发散区域的融合盈利;最后,查找对齐序列,并合并有收益的可融合发散区域。在DCU上使用PCFM测试从图形处理器(GPU)基准测试套件Rodinia和经典的排序算法中选择的测试用例,实验结果表明,PCFM对测试用例能够取得1.146的平均加速比,与分支融合+尾合并方法相比,使用PCFM的加速比平均提高了5.72%。可见,所提方法减少线程束分化的效果更好。
DCU;单指令多线程;线程束分化;复杂控制流;编译优化
0 引言
国产DCU (Deep Computer Unit)[1]的单指令多线程(Single Instruction Multiple Thread, SIMT)并行执行模型采用锁步的机制,使一个线程束在某一时刻只能有一个活跃的程序计数器(Program Counter, PC)。但是,在很多通用的并行应用程序中存在频繁的分支指令和不规则的数据访问,导致非一致的控制流行为,此时线程束中的线程根据相应分支指令的执行结果选择不同的执行路径。……
