Multicore Computing
The incorporation of chip multiprocessing in commercial
microprocessors from Intel, AMD, Sun Microsystems and IBM represents a paradigm
shift in the computing industry. The new industry buzzword “multicore”
captures the plan of doubling the number of standard cores per die with every
semiconductor process generation starting with a single processor.
The course will introduce graduate students to multicore processor
architectures, analysis and design of parallel algorithms, multicore programming, and
performance evaluation. Students are expected to complete an individual project
implementing a computationally intensive algorithm on a commercial multicore
platform. While the course has no prerequisites, familiarity with the C
programming language and computer architecture would be helpful.
Professor: Dr. Arun Ravindran, Office: WH 235A aravindr@uncc.edu Office hours: M,T,W,Th 11:00 - 12:00 pm
Textbooks:
Grama, Gupta, Karypis, and Kumar,
“Introduction to Parallel Computing”, Second Ed. Addison Wesley, 2003.
Lecture slides, homework, and additional reading material will be posted on Blackboard
Suggested References:
(1) Mattson, Sanders, and Massingill, “A Pattern Language for Parallel Programming”, Addison Wesley Software Patterns Series, 2004.
(2) Bryant and O’Hallaron, “Computer Systems: A Programmer’s Perspective”, Prentice Hall by Bryant and O’Hallaron, 2003
(3) Butenhof, “Programming with POSIX Threads”, Addison Wesley Professional, 1997.
(4) “Programming the Cell Broadband Engine, Examples
and Best Practices”, IBM Redbooks, 2008.
Lecture schedule (subject to change)
1. Course introduction (1 lecture)
2. Multicore platforms (2 lectures)
3. Principles of Parallel Algorithm Design (3 lectures)
4. Analytical Modeling of Parallel Programs (3 lectures)
5. Programming using the Message-Passing Paradigm (3
lectures)
6. Programming Shared Address Space Platforms (3 lectures)
Midterm Exam – March 17th,
2009.
7. Programming the Cell Broadband Engine (1 lecture)
8. Performance Evaluation Tools (2 lectures)
Grading
Midterm (30%), Project (70%).
Project
Projects will be assigned by Feb 1. Given a sequential computing algorithm you are expected to
(a) Develop an optimized sequential code in C/C++ (Deadline: Feb 15)
(b) Design and analyze a parallel implementation for the target multi-core platform predicting its performance and scalability (Deadline: Mar 1)
(c) Implement the parallel algorithm in C/C++ on the target multi-core platform using Phtread/OpenMP/MPI/libspe2 libraries (Deadline: Apr 1)
(d) Measure and tune the performance of
the parallel code.
Final presentations and paper in
IEEE conference format - April 21, 23, 28
(M.S.) and day of final exam (Ph.D.)
Important Dates
Dr. Martin Luther King Day : Jan 19
Spring break Mar 9 - 14
Last day to withdraw from a course with a W grade and retain other courses: Mar 23
Spring recess: Apr 10
Last day of classes: Apr 28
Final Exam: Apr 30 - May 7