UGA Bulletin Logo

CUDA C Programming on GPUs for High Performance Computing


Course Description

GPUs are high-performance many-core processors. Students will learn massively parallel programming using CUDA C and develop parallel algorithms to solve real problems. Topics include parallel computing, GPUs architecture, threads, performance issues, and floating point representation.

Additional Requirements for Graduate Students:
Each graduate student will do a final project for the course, give a presentation, and will complete extra homework and exam problems beyond those for the undergraduate students. Graduate student work will be graded more stringently than undergraduate work.


Athena Title

CUDA C PROG FOR GPU


Undergraduate Prerequisite

CSCI 1730 or permission of department


Graduate Prerequisite

CSCI 1730 or permission of department


Semester Course Offered

Not offered on a regular basis.


Grading System

A - F (Traditional)


Course Objectives

This course will focus on developing algorithms and programming state-of-the-art multicore hardware systems for large scale computation. Students will be exposed to different problems in science and engineering. At the end of the semester, students should: 1. Learn parallel computing concepts such as speedup, efficiency, load balancing. 2. Differentiate between SIMD architecture and MIMD architecture. 3. Learn GPUs architecture as parallel computers and compare it with the SIMD and MIMD architecture. 4. Be able to show how threads play a vital role in parallel computing. 5. Be able to develop parallel algorithms for GPUs using CUDA programming. 6. Know Amdahl’s law, MIPS and MFLOPS as measures of performance for parallel algorithms. 7. Be able to differentiate between the representations of integers and floating point numbers in memory. 8. Be able to estimate the errors that result from performing arithmetic operations on floating point numbers.


Topical Outline

Introduction to Parallel Computing; GPUs architecture as parallel computers; CUDA C programming with examples; CUDA threads and memories; Performance issues; Floating point representations and errors; Applications in science and engineering that require massively computational needs.


Syllabus