本文提出并探讨了一种多维数据分割手法,目的是将原本为单一GPU编写的CUDA代码,自动扩展到多GPU环境下加速执行。主要解决问题是:如何高效分割大规模多维数据,使其能分配到多个GPU上处理,从而突破单GPU显存的容量限制,且尽可能降低数据传输量与开发负担。
基于采样执行的访问范围分析 方法扩展自1维数据分割的既有做法,通过“采样运行”部分GPU线程来自动推定各线程实际访问的多维数据范围。相比原有的1维方法(只能用一段线性内存区域来描述分块),本方法能更精确地针对多维数组,在每一维上分别确定访问上/下界,从而有效减少不必要的冗余数据传输和存储。
多维分割与索引转换
与已有方法对比
实验设置
可处理最大规模
显存/数据传输节约
性能影响