CSC 780 Programming Systems on Multicore and GPU (Fall 2008)

Class time: Tuesday, Thursday 3:30pm-4:50pm.
Class location: Room 020, McGlothlin-Street Hall.

Instructor: Xipeng Shen (email)
Office hours: Monday 4:00pm-6:00pm, Friday 10:00am-noon @ McGlothlin-Street Hall 117; walk-ins without appointment are welcome.

Overview:
Parallel processors are becoming ubiquitous in modern computing systems: Chip multiprocessors are entering PCs, game consoles, embedded devices, servers, and supercomputers. Future processors will be massively parallel, reflected by the undergoing evolvement from single-core to multi-core to many-core. The exiting advancement in hardware however poses an important challenge to software development and runtime systems: How to effectively exploit the concurrent processors to achieve the goal of efficiency and performance. This course is to expose the knowledge and explore the challenges in developing and optimizing and executing software on parallel processors. It contains the topics related to parallel programming principles, compiler optimizations and operating systems. The goal is to provide students with the knowledge and insights on various aspects of software development for current and future parallel processors. Through the course, students will discuss some recent research papers, as well as achieve some hands-on experience through lightweight experiments of general computing on NVIDIA Graphic Processing Units (GPU), a 128-core massively parallel processor.

Topics covered:
This course is laid out into two sections: the hardware and software sections. In the first section, we will have an overview of the different types of multicore architecture, including general-purpose processors, such as Intel Core 2, and more special ones, such as GPU, CELL, and Tilera. The second section covers the software techniques for taking the full advantage of multicore processors. This section includes three major topics: the programming models for developing parallel programs, the optimization techniques for accelerating parallel executions, and the OS support for maximizing whole-system computing efficiency.

Learning Objectives:
The objectives include three folds. First, students will learn about the architecture of modern multicore computing systems, getting prepared for the future of computing. Second, students will understand the challenges and the state-of-the-art solutions to maximizing the use of multicore computers. They will gain a holistic view of software support that cuts across multi-layers of program executions, including language design, compilers, and operating systems. Finally, this class aims to enhance students' research capability (such as critical thinking, problem-solving, and presentation skills) by letting them read, present, and criticize some recent research papers on multicore computing.

Textbooks Required: None.

Assignments and grading:
There will be one project and two class presentations for each student. The grading will be based on the student's performance on presentations, class discussions, and the course project. Grading policy:
       15% - Class discussions.
       25% - Presentations.
       60% - Course project.

There will be 10% penalty for every 12 hours after the submission deadline except for medication reasons with doctor's proof.