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