PPOpenCL: a performance-portable OpenCL compiler with host and kernel thread code fusion
State Key Laboratory of Computer Architecture, Institute of Computing Technology, Chinese Academy of Sciences Beijing, China
28th International Conference on Compiler Construction, 2019
@inproceedings{liu2019ppopencl,
title={PPOpenCL: a performance-portable OpenCL compiler with host and kernel thread code fusion},
author={Liu, Ying and Huang, Lei and Wu, Mingchuan and Cui, Huimin and Lv, Fang and Feng, Xiaobing and Xue, Jingling},
booktitle={Proceedings of the 28th International Conference on Compiler Construction},
pages={2–16},
year={2019},
organization={ACM}
}
OpenCL offers code portability but no performance portability. Given an OpenCL program X specifically written for one platform P, existing OpenCL compilers, which usually optimize its host and kernel codes individually, often yield poor performance for another platform Q. Instead of obtaining a performance-improved version of X for Q via manual tuning, we aim to achieve this automatically by a source-to-source OpenCL compiler framework, PPOpenCL. By fusing X’s host and kernel thread codes (with the operations in different work-items in the same work-group represented explicitly), we are able to apply data flow analyses, and subsequently, performance-enhancing optimizations on a fused control flow graph specifically for platformQ. Validation against OpenCL benchmarks shows that PPOpenCL (implemented in Clang 3.9.1) can achieve significantly improved portable performance on seven platforms considered.
June 9, 2019 by hgpu