Introduction to GPU Computing

This workshop introduces the concept of GPU computing - the ability to write general-purpose, non-graphical applications that can be processed by a modern GPU. Since 2001 GPUs have become programmable processors, initially capable of only handling graphical applications like video games or professional visualization tools. Currently, however, they are much more capable: based on a highly parallel, many-core architecture, GPUs are being used in a large number of high-performance computing domains, such as computational physics, computer vision, computational finance, medical imaging and many others. In this workshop, you will learn more about what makes a GPU so powerful and how you can use it to accelerate your own computational tasks. It also introduces CUDA as a stable and mature API for NVIDIA-based GPUs, coupled with several useful development tools bundled under NSIGHT - a highly capable and easy-to-use toolkit which integrates with popular IDEs like Visual Studio or Eclipse. The hands-on tasks will familiarize you with the parallel programming model exposed by CUDA and show you how you can optimize your code to squeeze more performance out of the GPU.

When and Where?

July 25th - July 26th 2015.

Date Time Room
July 25th, 2015 09:00-19:00 EG304
July 26th, 2015 13:00-19:00 EG304

Workshop Agenda

DAY 1 (July 25th, 2015)

  • GPGPUs and GPU computing
  • GPU computing APIs
  • GPU hardware architecture
  • The accelerator programming model
  • CUDA C
  • The NVCC compiler
  • Threading model
  • GPU-specific memory types
  • Compute capabilities
  • GPU computing demos
  • The CUDA SDK
  • Hands-on: Implemeting “Hello World!” using CUDA

DAY 2 (July 26th, 2015)

  • Hands-on: Vector addition using CUDA
  • Using NSIGHT for CUDA debugging and profiling
  • Hands-on: 1D convolution (naive implementation)
  • Hands-on: 1D convolution (optimized implementation)
  • Discussing the performance difference between the 2 1D convolution implementations
  • Conclusions

Technical Prerequisites

  • basic to intermediate C / C++ programming knowledge
  • basic knowledge of parallel programming concepts (threads, barriers etc.)
  • basic notions of a computing system's architecture (CPU, RAM, GPU etc.)

This workshop is addressed to people who are curious to learn how a modern GPU can be programmed to run numerically-intensive non-graphical applications. Knowledge of a typical computing system's architecture is necessary to better understand how the GPU fits in as a high-performance computing accelerator. C / C ++ programming knowledge and parallel programming concepts will be needed during the hands-on sessions.

Registration

Enrollment will be based on a first-come, first-serve principle. Registration is available until July 20th, 2015.

Registration for this workshop has closed.

Trainer

Andrei Trandafir

E-mail: andrei.tra@gmail.com

sesiuni/gpu-opencl.txt · Last modified: 2016/06/08 17:16 by fbratiloveanu