ECE 408
Applied Parallel Programming

Displaying course information from Fall 2013.

Section Type Times Days Location Instructor
AB LAB -     Sanjay Patel
AL LEC 0930 - 1050 T R   0216 Siebel Center for Comp Sci  Sanjay Patel
Web Page http://courses.engr.illinois.edu/ece408/
Official Description Parallel programming with emphasis on developing applications for processors with many computation cores. Computational thinking, forms of parallelism, programming models, mapping computations to parallel hardware, efficient data structures, paradigms for efficient parallel algorithms, and application case studies. Course Information: Same as CS 483. Prerequisite: ECE 190.
Subject Area Computer Engineering
Course Prerequisites
Course Directors Wen-Mei W Hwu
Detailed Description and Outline
Parallel programming with emphasis on developing applications for processors with many computation cores. Computational thinking, forms of parallelism, programming models, mapping computations to parallel hardware, efficient data structures, paradigms for efficient parallel algorithms, and application case studies. Same as CS 483.
Computer Usage
Extensive usage for all programming assignments and final project
Reports
A final project report is required
Lab Projects
Lab 0 - installation and test of programming environment Lab 1 - Parallel Vector Addition Lab 2 - Parallel Matrix Multiplication Lab 3 - Tiled Parallel Matrix Multiplication Lab 4 - Parallel Reduction Lab 5 - Parallel Scan Lab 6 - Tiled Parallel Convolution Final Project that involves Project Proposal, Project Workshop, Project Presentation, and Project Report
Lab Equipment
Linux based cluster system
Lab Software
C Programming Language and CUDA Software Development Kit
Topical Prerequisities
C programming, Basic data structures, Introduction to computer organization
Texts
D. Kirk and W. Hwu, Programming Massively Parallel Processors, Morgan Kaufmann, 2nd Edition.
Required, Elective, or Selected Elective

Elective

Course Goals

The aim of this course is to provide students with knowledge and hands-on experience in developing applications software for processors with massively parallel computing resources. In general, we refer to a processor as massively parallel if it has the ability to complete more than 64 arithmetic operations per clock cycle. Many commercial offerings from NVIDIA, AMD, and Intel already offer such levels of concurrency. Effectively programming these processors requires in-depth knowledge about parallel programming principles, as well as the parallelism models, communication models, and resource limitations of these processors. The target audiences of the course are students who want to develop exciting applications for these processors, as well as those who want to develop programming tools and future implementations for these processors.

Instructional Objectives

A. After the six machine problems (after approximately 20 seventy-five minute lectures) the student should be able to:

1. Analyze and implement common parallel algorithm patterns in a parallel programming model such as CUDA. (a)

2. Design experiments to analyze the performance bottlenecks in their parallel code. (b)

3. Apply common parallel techniques to improve performance given hardware constraints. (c, k)

4. Use a parallel debugger to identify and repair code defects. (b,k) 5. Use a parallel profiler to identify performance bottlenecks in their code. (b, k)

B. By the final examination (after approximately 29 seventy-five minute lectures) the student should be able to:

6. Understand and apply common parallel algorithm patterns. (a)

7. Understand the major types of hardware limitations that limit parallel program performance. (c, e)

8. Understand and apply common parallel programming interface features. (a)

9. Review a parallel code segment and identify its behavior and potential problems. (b, e)

C. By the end of the final project (with proposal, workshop discussions, presentation, and report) the student should be able to:

10. Identify and solve a computational problem with parallel algorithm design and program. (a, e)

11. Learn the necessary domain knowledge in order to solve the identified problem (a, c)

12. Work with domain experts and teammates from different disciplines to maximize the effective of solutions (b, c)

13. Properly divide up the responsibilities among teammates and support each other towards success (d, f)

14. Identify design space and explore optimization opportunities for the solutions. (c)

15. Motivate the problem and approach in a presentation. (g, h, j)

16. Properly explain the solutions experimented and justify the final decision and outcome. (b, e, g)

17. Identify limitations of the solutions and future directions (b, i)

Last updated: 5/24/2013 by Wen-mei W. Hwu