This tutorial is strongly inspired from the OpenACC Bootcamp session presented at [http://www.gputechconf.com/ GPU Technology Conference 2016]. OpenACC is an application programming interface (API) for porting code onto accelerators such as GPU and coprocessors. It has been developed by Cray, CAPS, NVidia and PGI. Like in [[OpenMP]], the programmer annotates C, C++ or Fortran code to identify portions that should be parallelized by the compiler. A self-paced course on this topic is available from SHARCNET: [https://training.sharcnet.ca/courses/enrol/index.php?id=173 Introduction to GPU Programming]. {{Prerequisites |title= Prerequisites for this tutorial |content= This tutorial uses OpenACC to accelerate C, C++ or Fortran code. A working knowledge of one of these languages is therefore required to gain the most benefit out of it. }} {{Getready |title= Getting ready |content= This tutorial is based on examples. You can download all of the examples in this [https://github.com/calculquebec/cq-formation-openacc Github repository]. }} == Lesson plan == * [[OpenACC Tutorial - Introduction|Introduction]] * [[OpenACC Tutorial - Profiling|Gathering a profile and getting compiler information]] * [[OpenACC Tutorial - Adding directives|Expressing parallelism with OpenACC directives]] * [[OpenACC Tutorial - Data movement|Expressing data movement]] * [[OpenACC Tutorial - Optimizing loops|Optimizing loops]] == External references == Here are some useful external references: * [https://www.openacc.org/sites/default/files/inline-files/openacc-guide.pdf OpenACC Programming and Best Practices Guide (PDF)] * [https://www.openacc.org/sites/default/files/inline-files/API%20Guide%202.7.pdf OpenACC API 2.7 Reference Guide (PDF)] * [https://developer.nvidia.com/blog/getting-started-openacc/ Getting Started with OpenACC] * [https://docs.nvidia.com/hpc-sdk/pgi-compilers/legacy.html PGI Compiler] * [http://www.pgroup.com/resources/pgprof-quickstart.htm PG Profiler] * [http://docs.nvidia.com/cuda/profiler-users-guide/index.html#visual-profiler NVIDIA Visual Profiler]