GPU-accelerated computing drives current scientific research. Writing fast numeric algorithms for GPUs offers high application performance by offloading compute-intensive portions of the code to the GPU. The course will cover basic aspects of GPU architectures and programming. Focus is on the usage of the directive-based OpenACC programming model which allows for portable application development. Examples of increasing complexity will be used to demonstrate optimization and tuning of scientific applications. Topics covered will include: Introduction to GPU/Parallel computing Programming model OpenACC Interoperability of OpenACC with GPU libraries (like cuBLAS and cuFFT) and CUDA Multi-GPU Programming with MPI and OpenACC Tools for d...