PACC: a directive-based programming framework for out-of-core stencil computation on accelerators

PACC: a directive-based programming framework for out-of-core stencil computation on accelerators
复制标题

DOI:
10.1504/ijhpcn.2019.10018084
复制
发表时间:
2019
期刊:
Int. J. High Perform. Comput. Netw.
影响因子:
--
通讯作者:
Nobuhiro Miki;Fumihiko Ino;K. Hagihara
Nobuhiro Miki;Fumihiko Ino;K. Hagihara
中科院分区:
其他
文献类型:
--
作者:
Nobuhiro Miki;Fumihiko Ino;K. Hagihara

文献摘要

相似文献

我们提出了一个基于指令的编程框架,即,流水线加速器(PACC),以加速加速器设备(例如图形处理单元(GPU))上的大规模模板计算。PACC提供了一系列扩展的OpenACC指令,以促进使用时间块加速的核外模板计算。所提出的框架包括能够从PACC代码生成核外OpenACC代码的源到源翻译器,即,大数据被自动分解成使用有限容量的设备存储器来处理的较小块。生成的代码使用时间分块技术进行优化,以最大限度地减少CPU-GPU数据传输。此外,使用多线程流水线引擎加速代码,最大限度地提高数据复制吞吐量,并重叠GPU执行和数据传输。在实验中,我们提出的翻译三个模板计算代码。在配备12 GB内存的NVIDIA Tesla K40 GPU上,107 GB数据的核外性能达到69.3 GFLOPS,比8 GB数据的核内性能低17%。我们相信,所提出的基于指令的方法可以用于促进GPU上的核外模板计算。
We present a directive-based programming framework, i.e., the pipelined accelerator (PACC), to accelerate large-scale stencil computation on an accelerator device, such as a graphics processing unit (GPU). PACC provides a collection of extended OpenACC directives to facilitate out-of-core stencil computation accelerated using temporal blocking. The proposed framework includes a source-to-source translator capable of generating an out-of-core OpenACC code from the PACC code, i.e., large data is automatically decomposed into smaller chunks that are processed using limited capacity device memory. The generated code is optimised using a temporal blocking technique to minimise CPU-GPU data transfer. Furthermore, the code is accelerated using a multithreaded pipeline engine that maximises data copy throughput and overlaps GPU execution and data transfer. In experiments, we applied the proposed translator to three stencil computation codes. The out-of-core performance for 107 GB data on an NVIDIA Tesla K40 GPU with 12 GB memory reached 69.3 GFLOPS, which is 17% less than the in-core performance for 8 GB data. We believe that the proposed directive-based approach can be used to facilitate out-of-core stencil computation on a GPU.