With many new supercomputers adapting General Purpose Graphical Processing Units (GPGPUs) to move towards exascale computing, it is important to port, optimize, and scale the HPC workloads. Understanding the GPU architecture, terminology, and programming GPUs with minimal effort is a good skill to have. Of many frameworks that help port the applications to GPUs, OpenACC is fairly simple and easy to learn. OpenACC is a directive based language which helps us to port the code onto CPU+GPU architectures with minimal efforts. This tutorial session will begin with a little bit of Introduction to GPU architecture and terminology, a few basic examples of how to port code using OpenACC directives which includes both single GPU and Multi GPU. It will also include some troubleshooting tips for commonly seen build and run errors, and guidance on how to perform basic profiling.