BIL 674 - Parallel Programming with GPUs (Spring 2016)

Lectures: Thursday 9:00-11:45 @Obi lab


Instructors:

Adnan Ozsoy

aozsoy@cs.hacettepe.edu.tr
Z08
+90-312-780-7510

Course Description

Prerequisites
Students are expected to come into this course with intermediate experience with the C/C++ programming language. Experience with OpenMP, MPI, and systems in particular will be useful, though their use in this course is minor enough that knowledge of each can be picked up as the course progresses. Students will also gain experience on debugging and profiling C/C++ programs. Having an access to a machine with NVIDIA GPU card is suggested, though not mandatory.

Software
This course in its entirety will use CUDA, an OpenACC implementation, OpenCL, gnuplot, make, an OpenMP implementation, and an MPI implementation.

Course Goals
The main objective in this course is introducing GPU computing through several frameworks such as CUDA, OpenACC and OpenCL. In general, the goal of this course is to give students the tools to write beginner and intermediate GPU implementations of complex applications, either from scratch or as legacy application ports. This course is also intended to be a good foundation on which students can build advanced expertise in GPU programming as they gain more experience using it. Students will learn about a variety of concepts in GPU programming, CUDA / OpenACC / OpenCL programming, as well as the development tools they can use in each environment. Real-world applications will be used to demonstrate concepts, showing how each of these concepts is useful.

Textbook

Cheng J, Grossman M, KcKercher T. Professional CUDA C programming. Indianapolis: Wrox; 2014.

Reference Material

David B. Kirk and Wen-mei W. Hwu “Programming Massively Parallel Processors: A Hands-on Approach”, Morgan Kaufman, ISBN-10: 0123814723, ISBN-13: 978-0123814722.

Wen-mei W. Hwu (Editor), “GPU Computing Gems”, Morgan Kaufman, ISBN-10: 0123849888, ISBN-13: 978-0123849885.

H. Bidgoli, “CUDA by Example: An Introduction to General-Purpose GPU Programming”, Addison Wesley, ISBN-10: 0131387685, ISBN-13: 978-0131387683.

NVIDIA Developer Zone, http://developer.nvidia.com/page/home.html

Grading

  • 30% Exercises - 10 short exercises
  • 40% Projects - Individual project throughout semester
  • 30% Final Exam

Schedule (Tentative)

-->
Week Date Topic
1 Feb 11 Introduction
2 Feb 18 The GPU Execution Model
3 Feb 25 The CUDA Programming Model
4 Mar 3 CUDA Global Memory
5 Mar 10 CUDA Constant and Shared Memory
6 Mar 17 CUDA Streams and Concurrency
7 Mar 24 Tuning Instruction-Level Primitives
8 Mar 31 CUDA Libraries
9 Apr 7 Multi-GPU Programming
10 Apr 14 CUDA Implementation Considerations
11 Apr 21 GPU Computation Using OpenACC
12 Apr 28 Advanced OpenACC Usage
13 May 5 GPU Computation Using OpenCL
14 May 12 GPU Computation Using OpenCL -2

Communication:

The course webpage : http://web.cs.hacettepe.edu.tr/~aozsoy/teaching/BIL674.html

Webpage will be updated regularly throughout the semester with lecture notes, programming and reading assignments and important deadlines. All other course related communications will be carried out through Piazza. Please enroll it by following the link https://piazza.com/hacettepe.edu.tr/spring2016/bil674

Policies:

Attendance to lectures is required. You are responsible for all material presented in lecture. Some of the course material might not be covered in the textbook.

All work on assignments must be done individually unless stated otherwise. You are encouraged to discuss with your classmates about the given assignments, but these discussions should be carried out in an abstract way. That is, discussions related to a particular solution to a specific problem (either in actual code or in the pseudocode) will not be tolerated.

In short, turning in someone else’s work, in whole or in part, as your own will be considered as a violation of academic integrity. Please note that the former condition also holds for the material found on the web as everything on the web has been written by someone else.

© 2016 Hacettepe University