This document provides an introduction to GPU programming using OpenMP. It discusses what OpenMP is, how the OpenMP programming model works, common OpenMP directives and constructs for parallelization including parallel, simd, work-sharing, tasks, and synchronization. It also covers how to write, compile and run an OpenMP program. Finally, it describes how OpenMP can be used for GPU programming using target directives to offload work to the device and data mapping clauses to manage data transfer between host and device.