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]