摘要

针对现有的将C或Fortran程序映射到通用图形处理单元(GPU)的自动转换工具主要关注将单个循环生成一个独立的GPU内核,从而阻碍了对循环间数据重用的利用的问题,提出一种新的面向GPU的循环合并的代码变换方法,该方法通过循环分块(strip mining)和冗余计算等手段达到消除迭代间数据依赖的目的,并可充分利用GPU片上的共享内存进行线程间数据交换,从而将此类程序高效地映射到GPU上。通过典型程序在GPU上的实验表明,该新方法由于能够减少对全局内存的访问,带来了最多高达1.96倍的加速比。