Abstract
The graphics processing unit (GPU) is an acceleration unit for computer graphics applications. This paper presents its mechanism, programming techniques, and research trends to provide a useful guide for beginners who aim to utilize this emerging accelerator for general-purpose applications. We focus on two programming styles, a high-level style based on OpenACC and a low-level but tunable style based on compute unified device architecture (CUDA). We summarize their limitations and compare them in terms of the performance and the programmability.