An OpenACC extension for data layout transformation.
An OpenACC extension for data layout transformation.
复制标题
用于数据布局转换的 OpenACC 扩展。
DOI:
10.1109/waccpd.2014.12
复制
发表时间:
2014
期刊:
影响因子:
--
通讯作者:
and Satoshi Matsuoka
中科院分区:
文献类型:
--
作者:
Tetsuya Hoshino;Naoya Maruyama;and Satoshi Matsuoka
OpenACC is gaining momentum as an implicit and portable interface in porting legacy CPU-based applications to heterogeneous, highly parallel computational environment involving many-core accelerators such as GPUs and Intel Xeon Phi. OpenACC provides a set of loop directives similar to OpenMP for the parallelization and also to manage data movement, attaining functional portability across different heterogeneous devices; however, the performance portability of OpenACC is said to be insufficient due to the characteristics of different target devices, especially those regarding memory layouts, as automated attempts by the compilers to adapt is currently difficult. We are currently working to propose a set of directives to allow compilers to have better semantic information for adaptation; here, we particularly focus on data layout such as Structure of Arrays, advantageous data structure for GPUs, as opposed to Array of Structures, which exhibits good performance on CPUs. We propose a directive extension to OpenACC that allows the users to flexibility specify optimal layouts, even if the data structures are nested. Performance results show that we gain as much as 96 % in performance for CPUs and 165% for GPUs compared to programs without such directives, essentially attaining both functional and performance portability in OpenACC.