%0 Journal Article %T 面向规则doacross循环的流水并行代码自动生成 %A 刘晓娴? %A 赵荣彩? %A 赵捷? %A 徐金龙? %J 软件学报 %P 1154-1168 %D 2014 %R 10.13328/j.cnki.jos.004425 %X 发掘doacross循环中蕴含的并行性,选择合适的策略将其并行执行,对提升程序的并行性能非常重要.流水并行方式是规则doacross循环并行的重要方式.自动生成性能良好的流水并行代码是一项困难的工作,并行编译器对程序自动并行时常常对doacross循环作保守处理,损失了doacross循环包含的并行性,限制了程序的并行性能.针对上述问题,设计了一种选择计算划分循环层和循环分块层的启发式算法,给出了一个基于流水并行代价模型的循环分块大小计算公式,并使用计数信号量进行并行线程之间的同步,实现了基于openmp的规则doacross循环流水并行代码的自动生成.通过对有限差分松弛法(finitedifferencerelaxation,简称fdr)的波前(wavefront)循环和时域有限差分法(finitedifferencetimedomain,简称fdtd)中典型循环以及程序poisson,lu和jacobi的测试,算法自动生成的流水并行代码能够在多核处理器上获得明显的性能提升,使用的流水分块大小计算公式能够较为精确地计算出循环流水并行时的最佳分块大小.自动生成的流水并行代码与基于手工选择的最优分块大小的流水并行代码相比,加速比达到手工选择加速比的89%. %K 流水并行 %K 自动并行 %K doacross %K 循环 %K 代价模型 %U http://www.jos.org.cn/ch/reader/view_abstract.aspx?file_no=4425&flag=1